为什么大型DB通常实现为充满副本的碎片,而不是充满碎片的副本?

时间:2018-12-07 07:00:39

标签: database replication sharding

我在互联网上搜索了有关复制和分片的信息,发现当两者一起使用时,它们几乎总是考虑以下情形:

接收到来自应用程序服务器的查询。某种路由软件会路由到分片。该分片将根据查询查询一些适当的副本并返回结果。

我很好奇这种情况是否曾经实现:

接收到来自应用程序服务器的查询。路由软件(例如mongoDB中的mongo-S)选择多个副本之一。该副本中包含不同数据库表的分片。它会选择合适的一个并返回结果。

1 个答案:

答案 0 :(得分:0)

第二种方法永远不适用于MongoDB架构,因为:

  • 如果查询键是分片键,则首先在分片群集中。它需要确定特定数据所在的确切分片。之后,它将搜索该碎片的主要副本以获取数据。
  • 现在让我们假设,如果mongo首先搜索副本,那么将浪费整个碎片的概念:     -因为所有查询都将降落到一个副本节点。其他经纪人将继续被利用。