分片集群中的操作限制

分片操作限制

分片环境中的操作不可用

$where不允许从$where函数中引用db对象。这在未分片的集合中并不常见。

geoSearch分片环境不支持该命令。

在 MongoDB 5.0 及更早版本中,您不能在 $lookup 阶段的 from 参数中指定分片集合。

分片集合中的单个文档修改操作

指定multi: false或者justOne选项的分片集合的所有updateOne()deleteOne()操作中必须包括查询规范中的分片键_id字段。

updateOne()deleteOne()在不包含分片键或_id字段的分片集合中 指定multi: falsejustOne的操作返回错误。

要将 findOneAndUpdate() 与分片集合一起使用,您的查询过滤器必须在分片键上包含相等条件,以比较以下任一格式的键和值:

{ key: value }
{ key: { $eq: value } }

分片集合中的唯一索引

MongoDB 不支持跨分片的唯一索引,除非唯一索引包含完整的分片键作为索引的前缀。在这些情况下,MongoDB 将强制整个键的唯一性,而不是单个字段。

分片现有集合数据大小

如果现有集合的大小不超过特定限制,则只能对其进行分片。这些限制可以根据所有分片键值的平均大小和配置的块大小来估计。

重要的

这些限制仅适用于初始分片操作。成功启用分片后,分片集合可以增长到任意大小。

使用以下公式计算理论上的最大集合大小。

maxSplits = 16777216 (bytes) / <average size of shard key values in bytes>
maxCollectionSize (MB) = maxSplits * (chunkSize / 2)

笔记

最大BSON文档大小为 16MB 或16777216字节。

所有转换都应使用以 2 为底的比例,例如 1024 千字节 = 1 兆字节。

如果maxCollectionSize小于或接近于目标集合,则增加块大小以确保初始分片成功。如果怀疑计算结果是否太“接近”目标集合大小,最好增加块大小。

初始分片成功后,您可以根据需要减小块大小。如果您稍后减小块大小,则所有块拆分为新大小可能需要一些时间。

此表使用上述公式说明了近似的最大集合大小:

分片键值的平均大小 512 字节 256 字节 128字节 64 字节
最大分割数 32,768 65,536 131,072 262,144
最大集合大小(64 MB 块大小) 1 TB 2TB 4TB 8TB
最大集合大小(128 MB 块大小) 2TB 4TB 8TB 16TB
最大集合大小(256 MB 块大小) 4TB 8TB 16TB 32 TB

原文 - https://docs.mongodb.com/manual/core/sharded-cluster-requirements/

译者:陆文龙

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""