3

我想知道分片是否是部分复制的替代名称。我发现——

部分复制 – 每个数据项仅在某些但不是所有节点上都有副本(“分片”?)

纯部分复制。– 只有数据项子集的副本,但没有节点包含数据库的完整副本

混合部分复制。– 一组节点是完整副本,另一组节点是部分副本

4

2 回答 2

4

部分复制是一种有趣的方式,在这种方式中,您通过从主服务器到从服务器的复制来分发数据,每个从服务器都包含一部分数据。最终你会得到一个较小的数据库数组,只读的,每个都包含一部分数据。读取可以很好地分布式和并行化。

但是写的呢?

在 1 个大型懒惰主数据库中,这些仍然被阻塞,诸如缓冲区管理、锁定、线程锁/信号量和恢复任务之类的任务 - 是 OLTP 的真正瓶颈,它们使写入无法扩展......博客文章在这里:http ://database-scalability.blogspot.com/2012/08/scale-up-partitioning-scale-out.html 。顺便说一句 - 你在这里的主题只是给了我另一个帖子的好主意。我会链接到这个问题并给你信用!:)

分片是数据在数据库数组中只出现一次的地方。每个数据库都是数据的完全所有者,从那里读取数据,将数据写入那里。这样,读取和写入是分布式和并行化的。可以实现真正的横向扩展。

分片处理起来很麻烦,维护起来非常困难。ScaleBase(我在那里工作),启用自动透明横向扩展,只需将它放在中间,你将在后面有 10 个 DB,它看起来像你的应用程序的 1。自动、透明的超级分片——在一个盒子里。

于 2013-01-06T01:57:15.887 回答
3

分片是一种对表进行水平分区的方法。它与复制无关。传统上,RDBMS 服务器位于系统中心,具有星形拓扑。这就是为什么它变成:

  1. 单点故障

  2. 系统性能瓶颈

要解决问题 #1,您使用复制:如果原始服务器死机,您将故障转移到副本。

要解决问题 #2,您可以:

  1. 使用分片

    1.1 自己做分片

    1.2 使用你的RDBMS“开箱即用”的集群机制

  2. 迁移到 NoSQL 解决方案

分片允许您通过在它们之间拆分数据来将数据库扩展到许多服务器。然而,分片是一种权衡。它限制了您的数据加入/相交/等。

如果您使用分片,您仍然会遇到问题 #1。因此,复制分片节点是一个很好的做法。

于 2013-01-04T18:10:33.103 回答