我应该将主键拆分为分区键和行键组件吗?

时间:2018-01-02 13:51:55

标签: primary-key azure-storage md5 azure-table-storage

我想将数据存储在Azure表中。此数据的主键将是MD5哈希值。

为了在性能和可伸缩性之间取得良好的平衡,最好在Azure表中同时使用分区键和行键。

我正在考虑将MD5哈希在任意点分成两部分。我可能会使用前三个左右的字符作为分区键,以便有更高的冲突可能性,因此最终会得到每个都有相当数量的Row条目的分区。其余字符将组成行键。这意味着数据分布在4,096个分区上。

整个数据集可能会变得很大,大约有数十万条记录。

我知道在同一个分区中的条目之间可以更容易地完成原子操作;这对我来说不是一个问题。

这种关键分裂方法值得考虑吗?或者我应该简单地采用更简单的方法并让分区密钥使用整个MD5哈希,并使用空行键?

1 个答案:

答案 0 :(得分:1)

你的两个手提包都没问题。基本上,4096个分区足以进行缩放;如果您想要更好的可伸缩性,请使用完整的MD5作为分区键,因为您不需要对分区进行原子操作。请注意,行键不能是空字符串,因此请考虑使用常量字符串或与分区键(完整MD5)相同的值。

相关问题