我正在cosmos db中创建一个可能超过10GB的集合。集合没有任何主键。将我经常查询的非主键字段用作分区键是个好主意吗?
答案 0 :(得分:0)
使非主键字段成为我的好主意吗 频繁查询作为分区键?
实际上,分区键的选择是一个值得反复权衡的问题。最好的分区密钥是提供均匀分布和更高基数的密钥。
由于选择作为您经常查询的非主键是您现在的选择,所以我只讨论一些可能的积极和消极的事情作为您的参考。
首先,我们可以说主键是分区键最安全,也是最合适的选择。
除了唯一键之外,它保证值的唯一性是唯一的实现方法。分布将是均匀的,并且因为主键将是您的分区键,所以您可以使用它来读取文档而不是查询来检索文档,从而降低了操作速度和成本。
就性能而言,如果您的“频繁查询”字段不是分区键,那么您的查询肯定会通过跨分区而降低查询性能。当然,如果数据量很大,将会有很大的效果。
就成本而言,cosmos db主要由存储空间和RU消耗来收费。如您所说,选择非主键作为分区键将导致较少的索引存储。如果大多数查询不是跨分区的,则还可以节省RU消耗。
就使用存储过程,触发器或UDF而言,您不能通过存储过程和触发器使用跨分区事务。因为然后进行了分区,所以在使用它们时需要指定分区键(基数仅为1)。
请注意,如果创建了分区键,则以后将无法删除或修改它。因此,在选择之前先考虑一下,并确保进行数据备份。
更多详情,请参阅official doc。