RDBMS:是否可以横向扩展 RDB?

Mic*_*ael 1 rdbms nosql mongodb

是否可以横向扩展 RDB?如果可能,如何实现?

我问这个问题是因为我协助了一个 NoSQL 事件,在该事件中,演讲者多次提到关系数据库的缺点之一是无法横向扩展。换句话说,我们应该添加更多内存和更多存储空间,但我们不能像使用 NoSQL 数据库那样添加另一台计算机。

var*_*tec 8

是的,在某种程度上。

  • Master-Master 复制— 理论上可针对读写进行扩展,但对于写入而言,它很复杂,并且需要分布式提交机制,例如两阶段提交。这限制了它的实用性。

  • 主从复制— 可扩展读取操作,但它对写入操作完全没有帮助。引入复制滞后。

  • 垂直分区——基本上是在不同的服务器上定位不相关的表。读取和写入的规模,但缺点是您无法轻松连接来自不同服务器的结果。

  • 水平分割又名分片-从每个表中的所有服务器之间分发数据均匀。数据的位置由分片键决定。读取和写入的扩展,但是通过分片键以外的标准访问数据需要查询所有服务器,在极端情况下需要映射减少类型的基础设施。

如果您将垂直和水平分区发挥到极致,实际上您最终会得到建立在 SQL 后端之上的 NoSQL 解决方案。

经验法则是,你不能横向扩展保留完整的 ACID,你必须至少放弃一个特性。最典型的可扩展系统只有最终一致性(即,不保证整个系统始终保持一致,但保证最终达到一致状态)。