Mysql 关系数据库可以水平扩展吗

Mysql 关系数据库可以水平扩展吗,mysql,transactions,scalability,horizontal-scaling,nosql,Mysql,Transactions,Scalability,Horizontal Scaling,Nosql,通过谷歌搜索,我发现: 注: MySQL集群自动在节点之间分割(分区)表, 使数据库能够在低成本、低成本的基础上水平扩展 为读写密集型工作负载提供服务的硬件,可同时访问 从SQL直接通过NoSQL API 关系数据库可以水平扩展吗?它会以某种方式基于NoSQL数据库吗 有人有真实世界的例子吗 如何在这样的数据库中管理sql请求、事务等?我认为答案无疑是肯定的。您必须记住,SQL只是一种数据访问语言。绝对没有理由不能跨多台计算机和网络分区进行扩展。这是一个具有挑战性的问题吗?最肯定的是,这就是为什

通过谷歌搜索,我发现:

注:

MySQL集群自动在节点之间分割(分区)表, 使数据库能够在低成本、低成本的基础上水平扩展 为读写密集型工作负载提供服务的硬件,可同时访问 从SQL直接通过NoSQL API

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

有人有真实世界的例子吗


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

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

现在,我想你想问的是“我所熟悉的以及标准SQL类型的关系数据库管理系统中的所有功能都可以开发成以这种方式与多台服务器协同工作吗?”虽然我承认我没有深入研究这个问题,但有一些定理说“不,它不能。”假设我们不能在同一水平上拥有这三种品质


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

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

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

  • 单个服务器上的
    关系数据库
    为您提供了
    C
    (一致性)。所以当
    P
    (分区-服务器/网络故障)发生时,您不能拥有
    A
    (可用性-数据库下降)

  • nosql数据存储
    为您提供了
    A
    ,因此当发生
    p
    时,您无法 have
    C
    (您的一个或多个复制分区将超出 同步,直到n/w返回并且它们都同步)。所以它只会 最终保持一致


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

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

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

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

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

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


NOSQL数据库遵循平面表结构(数据以聚合形式存储,而不是标准化形式存储),因此可以方便地进行切分。

谷歌扳手是一种可以水平扩展的关系数据库。分片和复制是自动完成的,因此无需担心这一点。有关更多信息,请查看此项。

查看并了解您的想法。这个问题对于StackOverflow格式来说太宽泛了。最终,所有数据库都是NoSQL,除非您在它们上面添加SQL。我在开玩笑,但很认真。dbms所做的就是将文件组织成可快速访问的键值对。CAP定理就是一个答案。谢谢,我从来没有听说过CAP,在阅读时,我发现了有关NoSQL事务的有用链接。可能是过于简单化了,但我听说ACID DB防止横向扩展的主要功能是多步骤交易(例如,从我的银行存款中扣除50美元存入你的银行)。若您的DB系统不需要支持这些功能,那个么许多剩余的功能仍然可以在水平缩放的系统中工作。或者我听onceLets说如果你有TB的数据。您希望不同的客户机停留在不同机器上的不同数据库实例上吗?应用服务器如何知道它并进行查询(假设不需要跨客户端查询)@Jailbroken将记录映射到机器实例的算法由您使用的数据库客户端本身提供。例如,在NOSQL数据库中使用散列算法(如一致性散列),它在存储数据时将记录映射到特定机器,在检索数据时使用相同的算法。同样,对于SQL数据库,数据库客户端本身也提供了存储和检索数据的算法。@Keshav我在哪里可以深化切分和映射记录的主题