作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的实体是一个键值对。 90% 的时间我会根据键检索实体,但 10% 的时间我还会进行反向查找,即我将按值搜索并获取键。
键和值都保证是唯一的,因此它们的组合也保证是唯一的。
使用Key作为PartitionKey、Value作为RowKey是否正确?
我相信这也将确保我的数据在服务器之间完美负载平衡,因为 ParitionKey 是唯一的。
上述决定有问题吗?在任何情况下使用硬编码分区键是否实用?即所有行都有相同的分区键?并保持 RowKey 唯一?
最佳答案
这是否可行,是的,但根据数据的大小,我不太确定这是一个好主意。当您查询分区键时,表格存储可以直接转到确切的分区并检索您的所有记录。如果单独查询Rowkey,表存储必须检查该行是否存在于表的每个分区中。因此,如果您有 1000 个键值对,则按键搜索将读取单个分区/行。如果您仅通过您的值进行搜索,它将读取所有 1000 个分区!
我遇到了类似的问题,我用两种方法解决了它:
有 2 个不同的表,一个以 partitionKey 作为您的键,另一个以您的值作为分区键。存储很便宜,因此复制数据不会花费太多。
(我最终做了什么)如果您根据唯一键有效地返回单个实体,只需将它们粘贴在 blob 中(如第 1 点所示进行分区和旋转),因为您不需要遍历表,所以不要。
关于azure - 如何为已经具有唯一属性的表选择 Azure 表分区键和 RowKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778669/
我是一名优秀的程序员,十分优秀!