0

我的实体是一个键值对。90% 的时间我将根据键检索实体,但有 10% 的时间我还会进行反向查找,即我将按值搜索并获取键。

键和值都保证是唯一的,因此它们的组合也保证是唯一的。

使用 Key 作为 PartitionKey 和 Value 作为 RowKey 是否正确?

我相信这也将确保我的数据在服务器之间完美负载平衡,因为 ParitionKey 是唯一的。

上述决定有问题吗?在任何情况下,拥有硬编码的分区键是否可行?即所有行都有相同的分区键?并保持 RowKey 唯一?

4

1 回答 1

7

是否可行,是的,但是根据您的数据大小,我不太确定这是一个好主意。当你查询分区键时,表格存储可以直接进入确切的分区并检索你的所有记录。如果单独查询 Rowkey,表存储必须检查该行是否存在于表的每个分区中。因此,如果您有 1000 个键值对,则按您的键搜索将读取单个分区/行。如果您仅通过您的值进行搜索,它将读取所有 1000 个分区!

我遇到了类似的问题,我解决了两种方法:

  1. 有 2 个不同的表,一个以 partitionKey 作为 your-key,另一个以 your-value 作为 partitionKey。存储很便宜,所以复制数据不应该花费太多。

  2. (我最后做了什么)如果您基于唯一键有效地返回单个实体,只需将它们粘贴在 blob 中(如第 1 点中那样分区和旋转),因为您不需要遍历表,所以不要.

于 2011-01-24T07:01:10.907 回答