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

时间:2013-01-03 10:05:16

标签: replication sharding database-replication distributed-system

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

部分Repl。 - 每个数据项只有一些但不是所有节点都有副本('Sharding'?)

Pure Partial Repl。 - 仅包含数据项子集的副本,但没有节点包含数据库的完整副本

Hybrid Partial Repl。 - 一组节点是完整副本,另一组节点是部分副本

2 个答案:

答案 0 :(得分:4)

好点。

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

但这些写作呢?

那些仍然堵塞,在一个大胖懒人主数据库中,缓冲管理,锁定,线程锁/信号量和恢复任务等任务 - 是OLTP的真正瓶颈,它们使写入无法扩展...查看更多在我的博客文章中:http://database-scalability.blogspot.com/2012/08/scale-up-partitioning-scale-out.html。顺便说一句 - 你的主题就在这里,让我对另一篇文章有​​了一个好主意。我将链接到这个问题并给你信用! :)

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

Sharding是一个混乱的处理,维护,这很难。 ScaleBase(我在那里工作,检查我们!),http://www.scalebase.com,启用自动透明横向扩展,只需将它放在中间,你将在后面有10个DB,它看起来像1到1你的应用。自动,透明的超级分片 - 在一个盒子里。

享受, 多伦

答案 1 :(得分:3)

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

  1. 单点故障

  2. 系统的性能瓶颈

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

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

    1. 使用分片

      1.1自己进行分片

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

    2. 迁移到NoSQL解决方案

    3. Sharding允许您通过在其中分割数据将数据库扩展到多个服务器。然而,分片是一种权衡。它限制了你在数据连接/交叉/等等。

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