【发布时间】:2020-09-27 18:05:30
【问题描述】:
我是微服务的新手,但我研究得越多,我就越得出结论,微服务基本上是单体应用程序中的一个 sql 表(可能过于简单化了)。例如,您将拥有一个用户微服务、一个产品微服务、一个订单等,而不是一个单一的电子商务应用程序。这会带来大量的数据冗余,因为它会看到每个微服务如何拥有自己的数据库。
所以我的问题是,考虑到这一切,每个微服务只使用 nosql 数据库而不是 rdbms 是否合乎逻辑?如果没有,您能否举例说明微服务使用 sql db 而不是 nosql 的充分理由?
【问题讨论】:
-
这些似乎是完全正交的问题。此外,NoSQL 是一个相当宽泛的术语,涵盖了范围广泛的非常不同的系统,很难仅基于“NoSQL 与 RDBMS”(也没有任何关于实际应用程序需求的信息)来推荐合适的数据库产品。
-
“微服务基本上是单体应用程序中的一个 sql 表(可能过于简单化了)”。也许......为什么您的订单服务不会有多个表格(订单、订单项、帐单地址、送货地址)?
-
这些听起来更像是列而不是单独的表,它们也可以是 mongodb 集合的键? rdbms 的重点不是避免数据冗余,而这似乎是微服务无法避免的吗?
-
rdbms 不仅仅是关于数据规范化,这不仅仅是为了避免冗余,它也是关于事务、持久性、连接、强大且标准的查询语言、模式、触发器、存储过程、成熟工具等
-
我并不是说 RDBMS 比 NoSQL 更适合您的应用程序。我是说任何这样的建议都只取决于特定的应用程序,与微服务与单体或您使用的编程语言或它是自托管还是在云中无关。
标签: nosql microservices