看起来,如果我有大量的集合,那么数据库切分是很棒的。如果我有很多相当大的收藏品呢?假设一次收集10万份文件(不是很大的评论),分片是有效的。它是否也适用于每件10 000份文件的10 000份收款?
(我认为,如果用表替换集合,用行替换文档,则这个问题对于面向表的数据库仍然有效。如果可能的话,我想知道理论答案以及特定MongoDB场景中的答案,如果与理论答案不同的话。)
发布于 2011-09-06 08:47:19
它是否也适用于每件10 000份文件的10 000份收款?
大多数人都有“单一大集合”的问题,因此切分对于减少平衡数据的麻烦显然是有用的。
然而,当您有10000个小集合时,您的头痛可能不是“平衡数据”。有了这么多小集合,您的问题可能是如何跟踪这些集合。根据您的文档大小,您甚至可能不会打破切分实际发生的下限。
对于非常小的集合,可以使用鲜为人知的移动主命令来管理数据的位置。
当然,从另一个角度来看,你为什么会有10k的收藏呢?集合不需要同构对象,对于10k集合,其中大多数必须生成。很有可能在同一个集合中存储不同的“类型”数据,减少集合的数量,然后将该类型作为切分键的一部分。
发布于 2011-09-04 23:51:19
MongoDB分片的工作方式是将一个集合分成更小的“块”,并将它们均匀地分布在多台机器上。默认的块大小(通常是最有效的)是200 is。因此,除非集合比200 So大得多,否则它不会被分割成块,因此没有资格进行切分,因此不会有任何好处。
在一般情况下,在多台机器上对数据进行分片是一种非常有效的读写和查询方式。您可以获得多个CPU、硬盘和内存存储的好处,它们可以并行地读取、写入和处理数据。扩展内存对于MongoDB尤其重要,因为高性能的内存对内存中的数据非常敏感。
https://dba.stackexchange.com/questions/5390
复制相似问题