Azure Cosmos DB集合的分区键

时间:2017-12-13 12:11:43

标签: azure azure-cosmosdb partitioning

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

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

this

如博客文章here中所述,

  

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

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

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

2 个答案:

答案 0 :(得分:0)

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

分区键的选择取决于存储在数据库中的数据和频繁的查询过滤条件。

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

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

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

希望它对你有所帮助。

答案 1 :(得分:-2)

这取决于,但这里有几点需要考虑:

你提到的博文说:

  

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

另外,我建议您查看此帖子和视频,https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data

  

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

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