首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分布式系统中的MySQL分片与分区

问分布式系统中的MySQL分片与分区
EN

Stack Overflow用户
提问于 2017-06-18 06:27:36
回答 2查看 2K关注 0票数 2

我从mySQL上读到这个:

与其他切分数据库不同,用户在执行查询和碎片事务时,不会丧失执行连接操作、牺牲ACID保证或引用完整性(Foreign )的能力。

为了我的理解。当您在SQL之间进行选择时。

您将选择NoSQL进行简单的水平缩放(分片和分区)--例如,您有许多数据不能保存在单个数据库中,但是scarify事务级别ACID和数据库级别连接。

您将选择用于ACID保证和数据库连接的SQL。但是,增加了简单的水平规模可用性。(您可以在mySQL之上再添加一个层来处理分区和共享自己,但是如果这样做,您仍然会释放ACID并加入其中)

但是,上面的语句将mySQL声明为一个“完美”的数据库,它在保持SQL数据库优点的同时处理这两种可伸缩性。我在这里错过了什么吗?还是只是广告?

另外,我没有发现任何关于mySQL的切分体系结构的信息。

EN

回答 2

Stack Overflow用户

发布于 2017-07-24 11:52:07

如前所述,摘录的内容是关于MySQL集群的。MySQL群集将数据存储在一组可从连接到MySQL群集的MySQL服务器上访问的MySQL数据节点中。

NDB使用事务更新数据,并遵循ACID原则,并对D.进行了一些特殊的优化,因此我们提供了网络持久性,这意味着在将提交发送到应用程序之前,事务将提交到内存中的所有活动副本上。它将始终如一的持久,也在所有的实时复制媒体上,在大约1秒内。

数据节点被分组为节点组(或多或少是切分的同义词)。一个节点组中的所有节点都包含该节点组中的所有数据。只要每个节点组中有一个节点是活动的,集群就会存活。

事务可以跨越所有节点组(碎片)。可以执行跨越所有节点组(碎片)的联接操作。连接操作由MySQL服务器执行,但许多连接被向下推到NDB数据节点,以便它们自动并行化。

有许多基本的访问方法: 1)主密钥访问2)唯一密钥访问(== 2主键访问) 3)分区修剪扫描访问(在条件下提供分区密钥)(这可以是有序索引扫描或全扫描)。这将只扫描表的一个分区。4)有序索引扫描本扫描将使用有序索引并行扫描所有分区5)本扫描将扫描表中的所有分区并检查每一行

所有这些访问类型都可以具有在访问数据时在数据节点中评估的条件。

因此,使用MySQL集群,您可以在切分系统中获得SQL和ACID。

如果它适合您的需求,则取决于您的用例。

票数 2
EN

Stack Overflow用户

发布于 2017-06-18 06:42:04

摘录的引文来自MySQL NDB集群的营销拷贝,这与普通的MySQL不一样。

MySQL数据库集群是一个分布式数据库,主要通过使每个组件冗馀来实现高可用性。存储是分布式的,可以有多个mysqld实例将SQL操作应用于多个存储节点上的数据。

但也有缺点。NDB集群在按主键查询单个行时效率更高(听起来有点像类似Cassandra的分布式键值存储,对吧?)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44612332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档