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

Should I split a Primary key into Partition Key and Row Key components?

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

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

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

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

我知道原子操作可以更容易地跨同一分区中的条目进行;这对我来说不是问题。

这种Key-splitting方法值得考虑吗?或者我应该简单地采用更简单的方法,让分区键使用整个 MD5 散列,并使用一个空行键?

你的两种方法都很好。基本上,4096 个分区足够扩展;如果您想要更好的可伸缩性,请使用完整的 MD5 作为分区键,因为您不需要对分区进行原子操作。请注意,行键不能为空字符串,因此请考虑使用常量字符串或与分区键相同的值(完整 MD5)。