关系数据库可以横向扩展

时间:2014-11-26 19:20:40

标签: mysql transactions scalability horizontal-scaling nosql

经过一些谷歌搜索后我发现:

来自mysql docs的注释:

  

MySQL Cluster跨节点自动分片(分区)表,   使数据库能够在低成本商品上横向扩展   用于提供读取和写入密集型工作负载的硬件,两者都可访问   从SQL直接通过NoSQL API。

关系数据库可以横向扩展吗?它会以某种方式基于NoSQL数据库吗?

有人有任何现实世界的例子吗?

如何管理此类数据库中的sql请求,事务等?

4 个答案:

答案 0 :(得分:12)

我认为答案是肯定的,是的。您必须记住,SQL只是一种数据访问语言。绝对没有理由不能在多台计算机和网络分区之间进行扩展。这是一个挑战性的问题吗?最肯定的是,这就是为什么做它的软件还处于起步阶段的原因。

现在,我认为您要问的是"我熟悉的所有功能以及到达标准SQL类型关系数据库管理系统的功能是否可以通过这种方式与多个服务器协同工作? "虽然我承认我还没有深入研究这个问题,但有些定理说“不,它不能。”#34; Consistency-Availability-Partition Theorem假设我们不能将所有三种品质都放在同一水平上。

现在,出于所有实际目的,"分片"或者"分区"或者你想要的任何东西都不会消失;与此相反的。这意味着,考虑到CAP定理所具有的程度,我们将不得不改变我们对数据库的思考方式,以及我们如何与它们进行交互(至少在某种程度上)。许多开发人员已经完成了在No-SQL平台上取得成功所需的转变,但还有更多人没有。最终,将开发足够成熟的模型和有效的足够的变通方法,传统的SQL数据库,在您所指的意义上,在多台机器上或多或少都是实用的。这已经开始出现了,我想再给它几年,我们就是这样。或者我们将思想集体转移到不再需要的地步,世界将变得更加美好。 :)

答案 1 :(得分:5)

感谢您提问和回答。我试图向这样的人解释:

CAP定理而言,你不能拥有这三个定理。因此,当发生分区(网络或服务器故障)时:

  • 单个服务器上的relational database为您提供C(一致性)。所以当一个 发生P(分区 - 服务器/网络故障),您无法A (可用性 - db下降)

  • nosql datastore为您提供A,因此当P出现时,您无法 拥有C(您的一个或多个复制分区将不在 同步,直到n / w返回并且它们全部同步)。所以它只会 是eventually consistent

答案 2 :(得分:4)

可能,但需要大量维护,说明-

数据的垂直缩放(与SQL数据库中的Normalization相同)被称为将数据按列拆分为多个表,以减少空间冗余。用户表示例-

enter image description here

数据的水平缩放(与分片相同)被称为按行拆分成多个表,以减少获取数据所需的时间。用户表示例-

enter image description here

这里要注意的重点是,因为我们可以看到SQL数据库中的表被规范化为多个相关数据表。为了在多台机器上分片该表的数据,您需要相应地分片相关的规范化数据,这反过来又会增加维护工作。就像上面的SQL数据库示例一样,

  

与订单一对多相关的客户表   桌子

如果将客户数据的某些行移动到另一台计算机上(称为分片),则还需要将其相关的订单数据移动到同一台计算机上,如果有多个相关表,这将是一件麻烦的事情。

NOSQL数据库遵循平面表结构(数据以聚合形式而不是规范化形式存储)时,方便分片。

答案 3 :(得分:0)

Google Spanner是可以水平扩展的关系数据库的示例。分片和复制是自动完成的,因此无需担心。有关更多信息,请查看此paper