gpt4 book ai didi

mongodb 分片 - block 的大小不同

转载 作者:可可西里 更新时间:2023-11-01 09:29:04 28 4
gpt4 key购买 nike

我刚接触 mongodb。由于我必须存储 +-5000 万份文档,我不得不设置一个带有两个副本集的 mongodb 分片集群

文档看起来像这样:

{
"_id" : "predefined_unique_id",
"appNr" : "abcde",
"modifiedDate" : ISODate("2016-09-16T13:00:57.000Z"),
"size" : NumberLong(803),
"crc32" : NumberLong(538462645)
}

分片键是 appNr(之所以选择是因为出于查询性能的原因,所有具有相同 appNr 的文档都必须留在一个 block 中)。通常多个文档具有相同的appNr

加载大约 200 万条记录后,我看到 block 是均衡的,但是当运行 db.my_collection.getShardDistribution() 时,我得到:

Shard rs0 at rs0/...
data : 733.97MiB docs : 5618348 chunks : 22
estimated data per chunk : 33.36MiB
estimated docs per chunk : 255379

Shard rs1 at rs1/...

data : 210.09MiB docs : 1734181 chunks : 19
estimated data per chunk : 11.05MiB
estimated docs per chunk : 91272

Totals
data : 944.07MiB docs : 7352529 chunks : 41
Shard rs0 contains 77.74% data, 76.41% docs in cluster, avg obj size on shard : 136B
Shard rs1 contains 22.25% data, 23.58% docs in cluster, avg obj size on shard : 127B

我的问题是我应该做哪些设置才能使数据在分片之间平均分配?我想了解数据是如何分成 block 的。我已经定义了一个范围分片键和 block 大小 264。

最佳答案

MongoDB 使用与集合关联的分片键将数据分成 block 。 block 由分片数据的子集组成。每个 block 都有一个基于分片键的包含的下限和独占的上限。

分片键值空间被分割成更小的范围或 block 的图表。mongos 根据分片键值将写入路由到适当的 block 。当 block 增长超过配置的 block 大小时,MongoDB 会拆分块。插入和更新都可以触发 block 拆分。

The smallest range a chunk can represent is a single unique shard key value. A chunk that only contains documents with a single shard key value cannot be split.

block 大小将对分片产生重大影响。

MongoDB 中的默认 block 大小为 64 兆字节。我们可以增加或减少 block 大小。但是修改 block 大小应该在考虑以下项目后进行

  1. 以更频繁的迁移为代价,小块导致数据分布更均匀。这会在查询路由 (mongos) 层产生费用。
  2. 大块导致更少的迁移。从网络角度和查询路由层的内部开销来看,这都更有效。但是,这些效率是以潜在的数据分布不均为代价的。
  3. block 大小影响要迁移的每个 block 的最大文档数。
  4. 在对现有集合进行分片时, block 大小会影响最大集合大小。分片后, block 大小不限制集合大小。

通过引用这些信息和您的分片键“appNr”,这会因为 block 大小而发生。

尝试将 block 大小而不是 264MB(您当前拥有的大小)调整为较小的大小,并查看文档分布是否有变化。但这将是一种反复试验的方法,并且需要大量的时间和迭代。

引用:https://docs.mongodb.com/v3.2/core/sharding-data-partitioning/

希望对您有所帮助!

关于mongodb 分片 - block 的大小不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40908424/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com