首页 文章

Azure Cosmos DB集合的分区键

提问于
浏览
1

我对Azure Cosmos DB有点新意,并试图理解这些概念 .

我想帮助确定DocumentDB集合的最佳分区键 . 请参考下面的图片,其中包含使用不同分区键的可能分区 .

this

正如博客文章here中所提到的,

理想的分区键是在查询中经常作为过滤器出现的分区键,具有足够的基数以确保您的解决方案具有可扩展性 .

从上面看,我认为,在我的情况下,UserId可以用作分区键 .

有人可以建议我哪个键是分区键的最佳候选者吗?

2 回答

  • -2

    10 things to know about DocumentDB Partitioned Collectionsmicro official document,您可以找到很多关于分区键选择的非常好的建议,所以我不打算在此重复 .

    分区键的选择取决于存储在数据库中的数据和频繁的查询过滤标准 .

    通常建议对像 userid 这样的东西进行分区,如果你有的话 . 假设您的业务逻辑对给定的 userid 有很多查询,并且想要查找不超过几百个条目 . 在这种情况下,可以从单个分区快速提取数据,而无需跨分区整理数据 .

    但是,如果您有 user 的数百万条记录,则 userid 上的分区可能是最糟糕的选择,因为从单个分区中提取大量数据将很快超过整理的开销 . 在这种情况下,您希望在所有分区上尽可能均匀地分发用户数据 . 您可能需要找到另一列作为分区键 .

    因此,如果数据量非常大,我建议您根据业务逻辑进行一些简单的测试,并为性能选择最佳的分区键 . 毕竟,分区键一旦设置就无法更改 .

    希望它能帮到你 .

  • 0

    这取决于,但这里有几件事要考虑:

    你提到的博文说:

    此外,属于同一分区键的文档的存储大小限制为10GB . 理想的分区键是在查询中经常作为过滤器出现的分区键,并且具有足够的基数以确保您的解决方案具有可扩展性 .

    另外,我真的建议查看这篇文章和视频,https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data

    分区键的选择是您在设计时必须做出的重要决定 . 您必须选择具有多种值且具有访问模式的属性名称 .

    因此,请确保选择具有多个值并满足这些要求的分区键 .

相关问题