部分复制和分片之间的区别?

replication sharding database-replication distributed-system

3012 观看

2回复

658 作者的声誉

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

部分代表 –每个数据项在某些而不是所有节点上仅具有副本(“共享”吗?)

纯部分代表 –仅具有数据项子集的副本,但没有节点包含数据库的完整副本

混合部分代表 –一组节点是完整副本,另一组节点是部分副本

作者: Joarder Kamal 的来源 发布者: 2013 年 1 月 3 日

回应 (2)


3

1685 作者的声誉

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

  1. 单点故障

  2. 系统的性能瓶颈

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

要解决问题2,您可以:

  1. 使用分片

    1.1自己做分片

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

  2. 迁移到NoSQL解决方案

分片允许您通过在服务器之间拆分数据来将数据库扩展到许多服务器。但是分片是一个折衷。它限制了您进行数据连接/相交/等操作。

如果使用分片,则仍然存在问题#1。因此,复制分片节点是一个好习惯。

作者: Sergey Romanovsky 发布者: 04.01.2013 06:10

4

388 作者的声誉

部分复制是一种有趣的方式,您可以通过复制将数据从主数据库分发到从数据库,每个数据库都包含一部分数据。最终,您将得到一个较小的只读DB阵列,每个DB包含一部分数据。读取可以很好地分布和并行化。

但是写呢?

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

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

分片处理,维护起来一团糟,这很难。ScaleBase(我在那儿工作),启用自动透明向外扩展,只需将其放在中间,后面将有10个DB,对于您的应用程序,它看起来像1个。自动透明的超级分片-放在盒子里。

作者: Doron Levari 发布者: 06.01.2013 01:57
32x32