【问题标题】:Should microservices use only nosql databases?微服务应该只使用 nosql 数据库吗?
【发布时间】:2020-09-27 18:05:30
【问题描述】:

我是微服务的新手,但我研究得越多,我就越得出结论,微服务基本上是单体应用程序中的一个 sql 表(可能过于简单化了)。例如,您将拥有一个用户微服务、一个产品微服务、一个订单等,而不是一个单一的电子商务应用程序。这会带来大量的数据冗余,因为它会看到每个微服务如何拥有自己的数据库。

所以我的问题是,考虑到这一切,每个微服务只使用 nosql 数据库而不是 rdbms 是否合乎逻辑?如果没有,您能否举例说明微服务使用 sql db 而不是 nosql 的充分理由?

【问题讨论】:

  • 这些似乎是完全正交的问题。此外,NoSQL 是一个相当宽泛的术语,涵盖了范围广泛的非常不同的系统,很难仅基于“NoSQL 与 RDBMS”(也没有任何关于实际应用程序需求的信息)来推荐合适的数据库产品。
  • “微服务基本上是单体应用程序中的一个 sql 表(可能过于简单化了)”。也许......为什么您的订单服务不会有多个表格(订单、订单项、帐单地址、送货地址)?
  • 这些听起来更像是列而不是单独的表,它们也可以是 mongodb 集合的键? rdbms 的重点不是避免数据冗余,而这似乎是微服务无法避免的吗?
  • rdbms 不仅仅是关于数据规范化,这不仅仅是为了避免冗余,它也是关于事务、持久性、连接、强大且标准的查询语言、模式、触发器、存储过程、成熟工具等
  • 我并不是说 RDBMS 比 NoSQL 更适合您的应用程序。我是说任何这样的建议都只取决于特定的应用程序,与微服务与单体或您使用的编程语言或它是自托管还是在云中无关。

标签: nosql microservices


【解决方案1】:

我认为没有理由将微服务构建在 nosql 数据库而不是关系数据库之上。

选择其中之一的唯一原因取决于您的要求和解决方案所需的模型。

我们正在转向微服务,但我们的解决方案是用于管理工作,使用 RDBMS 比使用 ad-hoc nosql 系统更容易完成。

【讨论】:

    猜你喜欢
    • 2020-08-27
    • 1970-01-01
    • 2012-06-19
    • 2019-10-08
    • 1970-01-01
    • 2017-11-30
    • 2022-08-13
    • 2014-01-08
    • 2020-04-12
    相关资源
    最近更新 更多