3

当我在互联网上研究关系数据库的水平扩展时,我的印象是,包括写入扩展和读取扩展的唯一选项是分片,这似乎是一个手动设计过程,涉及复杂的应用程序特定配置,很难如果您需要更改分片结构,请维护。

另一方面,NoSQL 似乎本身就支持水平扩展,但它的缺点是不支持事务、ACID 等。

最近似乎流行的另一个概念是 NewSQL 数据库。这些数据库承诺通过自动分片或其他一些创新架构既符合 ACID 又能够水平扩展,从而达到最佳效果。

我的问题是,如果我们将 SAN 与我们的关系数据库一起使用,是否将更多的数据库服务器添加到集群和更多的磁盘到 SAN 来实现水平扩展?(添加磁盘会增加总磁盘 IOPS 和吞吐量以及磁盘空间。)那里的瓶颈是什么,所以我们需要使用 NewSQL 数据库来实现 ACID 和水平扩展?

4

2 回答 2

4

关系数据库中的水平扩展很难实现,因为当您在不同的集群节点上拥有表(或同一表的分片)时,连接通常变得非常低效。此外,在确保所有副本都有新数据的同时,还存在复制和保持 ACID 保证的问题。但是,有一个可以水平扩展的 RDBMS—— MySQL 集群。从文档

MySQL Cluster 自动跨节点对表进行分片(分区),使数据库能够以低成本水平扩展。

MySQL 集群中的自动分片

与其他分片数据库不同,用户在跨分片执行查询和事务时不会失去执行 JOIN 操作、牺牲 ACID 保证或引用完整性(外键)的能力。

在我的公司,我们使用 MySQL Cluster 已经有一段时间了,它确实运行良好(并且可以水平扩展)。还有基于 PostgreSQL 构建的Citus(最近发布),但没有亲自尝试过。

于 2018-02-16T12:03:53.053 回答
2

答案是“ CAP 定理

您最多可以有 2 个一致性可用性或分区容差,但通常归结为

(Consistency OR availability) AND Partition Tolerance

考虑到传统 ACID 保证的数据库系统(例如 RDBMS)选择一致性而不是可用性,而围绕 BASE 理念设计的系统(例如在 NoSQL 运动中很常见)选择可用性而不是一致性。 [6]

使用 NoSQL,如果节点退出,系统会保持正常运行,但您可能无法获得最新数据。当然,这在银行或计费系统中是一个巨大的禁忌。但在社交媒体应用程序中,这无关紧要。

更多示例

从这个网站

于 2018-02-16T11:48:10.320 回答