我知道这个问题已经被问过很多次了,但我没有得到任何令人满意的答案。
我读过很多博客,其中大多数都说 RDBMS 不能水平扩展。处理它的唯一方法是购买更大的机器。
然后我读到了为什么它们不能水平缩放。人们说是因为他们根据 ACID 属性提供了可靠、成熟的服务。我的论点是我们不能删除 RDBMS 来为特定表提供 ACID 属性。这是它不能水平扩展的唯一原因,我们必须考虑 NoSQL 数据库。
提出的第二个论点是 NoSQL 数据库将数据存储为一个单元,而 RDBMS 将数据存储在多个表中。因此,一条数据可能在一个系统中,而它所引用的另一条数据可能在另一个系统中。因此分布式扩展 RDBMS 变得困难。我对他们的问题是,如果情况需要,为什么我们不能将所有相关数据存储在一个表中,而是将其分散到多个表中。如果 NoSQL 可以将数据作为单个单元存储在单个集合中,为什么 RDBMS 不能将数据作为单个单元存储在单个表中。(例如,为什么必须将订单拆分为订单表、客户表和付款表。为什么不能将它们合并到一个表中,就像 NoSQL 存储的方式一样)
这也允许开发人员在无需将内存结构转换为关系结构的情况下进行开发。
简而言之,我们能否让 RDBMS 像 NoSQL 数据库一样运行并使其水平扩展?