代码之家  ›  专栏  ›  技术社区  ›  Holf

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

  •  0
  • Holf  · 技术社区  · 6 年前

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

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

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

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

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Zhaoxing Lu    6 年前

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