Sco*_*y H 11 azure database-partitioning azure-cosmosdb
我们的Azure Cosmos数据库集合已经足够大,需要分区密钥.在做一些阅读时,我得到的印象是最好的分区键是提供均匀分布和更高基数的键.Microsoft的这篇文章讨论了它.
使用主键作为分区键提供均匀分布,但基数只有1.如果这是我唯一的选择,这是一件坏事吗?上述文章给出了一些示例,似乎表明主键应该在这些实例中用作分区键.对于Azure Cosmos DB,分区是逻辑的,而不是物理的.因此,它不会导致将每个文档放在自己的磁盘上,但似乎它可能导致膨胀的索引.
使用主键作为分区键是一种常见的做法吗?它有什么缺点吗?
其实,分区键的选择是一个值得反复权衡的问题。由于选择主键作为分区键是您唯一的选择,我只讨论一些可能的负面事情作为您的参考。
在性能方面,如果你查询的字段不是partition key,你的查询肯定会因为跨分区而降低查询性能。可以说,如果数据量很小,它不会有太大的影响。
在成本上,cosmos db主要是按存储空间和RUs消耗来收费的。如你所说,选择主键作为分区键会导致更多的索引存储。如果大多数查询是跨分区的,也会导致更多的 RU 消耗。
在使用存储过程、触发器或UDF方面,不能通过存储过程和触发器使用跨分区事务。因为 then 是分区的,所以在使用它们时需要指定分区键(基数仅为 1)。
请注意,如果创建了分区键,则以后无法删除或修改它。因此,在选择之前请考虑一下并确保进行数据备份。
更多细节,还是参考官方文档。
不,这没有什么缺点。力争拥有高基数的分区键。不用担心索引或物理分区等。
您可以拥有数百万个分区键和 10 个物理分区。物理分区由 CosmosDB 在后台创建。您不必担心物理分区。
| 归档时间: |
|
| 查看次数: |
3258 次 |
| 最近记录: |