在MongoDB中,分片(sharding)和分布式数据库是否相同?

9

我希望将MongoDB作为分布式数据库来实现,但是我找不到好的教程。每当我在MongoDB中搜索分布式数据库时,它都会给我提供切片的链接,所以我很困惑它们是否是相同的东西?


1
手册是MongoDB最好的教程。 - Glavić
1
@Glavić 是的,我已经读过了,但那并没有回答我的问题。 - sanchit kashyap
是的,分片可以被视为对数据库进行分区,但Mongo提供了许多分布式数据库的功能,具有自动配置和处理。用户不必担心同步、复制和可靠性等问题。 - Nachiket Kate
1
根据您的需求,您可能想要使用分片复制或两者都使用。 - yaoxing
实际上,对数据库进行分片意味着你正在共享该数据库。 - Kadon
2个回答

9
一般而言,如果您的系统以读为主,您可能需要使用复制。这是一个由最多50个secondaries和1个primary组成的系统。secondaries共享读取压力,而primary则负责写入。它是一个自动故障转移系统,因此当primary停机时,其中一个secondaries会接管工作并成为新的primary
然而,分片更加灵活。所有的Shards共享写入和读取压力。也就是说,数据被分布到不同的Shards中。每个分片可以由一个复制系统组成,并且自动故障转移的工作如上所述。
我会首选 复制,因为它简单且基本上足够适用于大多数场景。一旦不够用,您可以选择从复制转换到分片
此外,还有另一个复制和分片之间的区别的讨论供您参考。

1

关于分布式数据库的一些看法:

在90年代初期,许多应用程序都是基于桌面的,并且有一个本地数据库,其中包含MB/GB级别的数据。

现在随着基于Web的应用程序的出现,可能会有数百万用户使用和存储其数据,这些数据可能达到GB/TB/PB级别。将所有这些数据存储在单个服务器上在经济上是昂贵的,因此有一个服务器集群(或普通硬件),跨越这些服务器水平分区数据。分片是数据水平分区的另一个术语。 例如,您有一个包含100行的Customer表,您想将其划分为4个服务器,则可以选择基于'key'的分片方式,其中客户将分配如下:SHARD-1(1-25),SHARD-2(26-50),SHARD-3(51-75),SHARD-4(76-100)

分片可通过以下2种方式完成:

  1. 基于哈希

  2. 基于键


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接