2011-01-24 35 views
0

我的实体是键值对。 90%的时间我会根据关键字检索实体,但是有10%的时间我也会进行反向查找,即我会按价值进行搜索并获取关键字。如何为已具有唯一属性的表选择Azure表ParitionKey和RowKey

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

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

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

上述决定是否存在问题? 在任何情况下,使用硬编码分区密钥是否可行? I.e所有行都具有相同的分区密钥?并保持RowKey独特?

回答

7

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

我遇到类似的问题,我解决了这2种方式:

  1. 有2个不同的表,一个与partitionKey为您的钥匙,其他与你的价值作为partitionKey。存储很便宜,所以复制数据不应该花费太多。 (我最后做了什么)如果你基于唯一键有效地返回单个实体,只需将它们粘贴到Blob中(像点1一样分区和旋转),因为你不需要遍历一个表,所以不要。

相关问题