我想将mongodb实现为分布式数据库,但我找不到好的教程。每当我在mongodb中搜索分布式数据库时,它都会给我分片的链接,所以我很困惑,如果它们都是相同的东西?
一般来说,如果你有一个读取繁重的系统,你可能想要使用replication。这是1 primary
与最多50 secondaries
。 secondaries
分享阅读压力,而primary
负责写作。这是一个自动故障转移系统,因此当primary
下降时,其中一个secondaries
将在那里工作并成为一个新的primary
。
然而,Sharding更灵活。所有Shards
分享写压力和阅读压力。也就是说,数据被分配到不同的Shards
中。并且每个分片可以由Replication
系统和自动故障转移组成,如上所述。
我会首先选择replication
,因为它很简单,基本上足以满足大多数情况。一旦它还不够,你可以选择convert from replication to sharding。
还有另一个关于differences between replication and sharding的讨论供您参考。
对分布式数据库的一些看法:
在九十年代早期,许多应用程序都是基于桌面的,并且有一个包含MB / GB数据的本地数据库。
现在随着基于Web的应用程序的出现,可能有数百万用户使用和存储他们的数据,这些数据可以运行到GB / TB / PB。将所有这些数据存储在单个服务器上是非常昂贵的,因此存在一组服务器(或商品硬件),数据在这些服务器上水平分区。分片是数据水平分区的另一个术语。例如,您有一个包含100行的Customer表,您希望在4个服务器上对其进行分片,您可以选择基于“密钥”的分片,其中客户将按如下方式分发:SHARD-1(1-25),SHARD-2 (26-50),碎片-3(51-75),碎片-4(76-100)
分片可以通过两种方式完成: