经过一些谷歌搜索我发现:
来自mysql文档的注意事项:
MySQL Cluster可以跨节点自动分割(分区)表,使数据库能够在低成本的商用硬件上水平扩展,以便为读取和写入密集型工作负载提供服务,从SQL和直接通过NoSQL API访问.
关系数据库可以横向扩展吗?它会以某种方式基于NoSQL数据库吗?
有人有任何现实世界的例子吗?
如何在这样的数据库中管理sql请求,事务等?
感谢您的提问和回答。我试图向这样的人解释这一点:
就CAP
定理而言,您不能同时拥有这三个定理。因此,当发生分区(网络或服务器故障)时:
relational database
单台服务器上的A 给您C
(一致性)。因此,当发生
P
(分区-服务器/网络故障)时,您将无法拥有A
(可用性-数据库关闭)
A nosql datastore
给您A
,所以当a P
出现时,您将无法拥有它C
(一个或多个复制分区将不同步,直到n / w回来并且它们全部同步为止)。所以只会eventually consistent
我认为答案是肯定的,是的.您必须记住,SQL只是一种数据访问语言.绝对没有理由不能跨多个计算机和网络分区进行扩展.这是一个挑战性的问题吗?当然,这就是为什么做它的软件还处于起步阶段的原因.
现在,我认为您要问的是"我能熟悉并熟悉标准SQL类型关系数据库管理系统的所有功能是否能够以这种方式与多个服务器协同工作?" 虽然我承认我没有深入研究这个问题,但有些定理说"不,它不能". 一致性 - 可用性 - 分区定理假设我们不能将所有三种品质都放在同一水平上.
现在,出于所有实际目的,"分片"或"分区"或任何你想要它的东西都不会消失; 与此相反的.这意味着,考虑到CAP定理所具有的程度,我们将不得不改变我们对数据库的思考方式,以及我们如何与它们进行交互(至少在某种程度上).许多开发人员已经完成了在No-SQL平台上取得成功所必需的转变,但更多的开发人员还没有.最终,将开发足够成熟的模型和有效的足够的变通方法,传统的SQL数据库,在您所指的意义上,在多台机器上或多或少都是实用的.这已经开始成功了,我想再给它几年,我们将会到那一步.或者我们将集体思维转移到不再需要的地步,世界将变得更加美好.:)
可能,但是需要大量维护,解释-
数据的垂直扩展(与SQL数据库中的Normalization等效)称为将数据按列拆分为多个表,以减少空间冗余。用户表示例-
数据的水平缩放(与分片同义)被称为逐行拆分为多个表,以减少获取数据所需的时间。用户表示例-
这里要注意的关键是,我们可以看到SQL数据库中的表被规范化为多个相关数据表。为了在多台机器上分片该表的数据,您需要相应地分片相关的规范化数据,这反过来又会增加维护工作。就像上面的SQL数据库示例一样,
与订单表有一对多关系的客户表
如果将客户数据的某些行移动到另一台计算机上(称为分片),则还需要将其相关的订单数据移动到同一台计算机上,如果有多个相关表,这将是一件麻烦的事情。
当NOSQL数据库遵循平面表结构(数据以聚合形式而不是规范化形式存储)时,它便于分片。