首页 文章

关系数据库可以横向扩展

提问于
浏览
8

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

来自mysql docs的注释:

MySQL Cluster跨节点自动分片(分区)表,使数据库能够在低成本的商用硬件上水平扩展,以提供读写密集型工作负载,从SQL和直接通过NoSQL API访问 .

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

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

如何在这样的数据库中管理sql请求,事务等?

3 回答

  • 7

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

    现在,我想你要问的是"Can all features that I am familiar with and that arrive in a standard SQL-type relational database management system be developed to work with multiple servers in this manner?"虽然我承认我没有深入研究这个问题,但是有些定理说"No, it cannot." Consistency-Availability-Partition Theorem假设我们不能在同一水平上拥有所有三种品质 .

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

  • 2

    谢谢你的问题和答案 . 我试图向这样的人解释:

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

    • 单个服务器上的 relational database 给你 C (一致性) . 因此,当 P (分区 - 服务器/网络故障)发生时,您不能拥有 A (可用性 - 数据库中断)

    • A nosql datastore 给你 A ,所以当 P 发生时,你不能拥有 C (你的一个或多个复制的分区将不同步,直到n / w回来并且它们全部同步) . 所以它只会 eventually consistent

  • 3

    这是可能的,但需要大量的维护工作, Explanation -

    垂直缩放数据(与SQL数据库中的规范化同义)称为将数据逐列拆分为多个表,以减少空间冗余 . 用户表示例 -

    enter image description here

    数据的水平缩放(与分片同义)被称为逐行分割成多个表,以减少获取数据所花费的时间 . 用户表示例 -

    enter image description here

    Key point to note here is 因为我们可以看到SQL数据库中的表被规范化为多个相关数据表 . 为了在多台机器上对这种表的数据进行分片,您需要相应地对相关的规范化数据进行分片,这反过来会增加维护工作量 . 就像上面提到的SQL数据库的例子一样,

    与Order表有一对多关系的Customer表

    如果将一些客户数据行移动到其他机器上(称为分片),您还需要将其相关的订单数据移动到同一台机器上,这对于多个相关表格来说将是一项麻烦的任务 .

    它便于NOSQL数据库在遵循平面表结构时进行分片(数据以聚合形式而非标准化形式存储) .

相关问题