固定分区键是不好的做法吗?

时间:2018-08-03 01:28:34

标签: amazon-dynamodb

我有一个DynamoDB表,其中包含:

  • 时间戳(HASH)
  • 文本(字符串)

我希望能够通过查询获取最新的商品,但是这样做需要我对Timestamp进行排序,而不是对它进行分区。我当时正在考虑这样做:

  • 分区(HASH,硬编码为任何内容)
  • 时间戳记(RANGE)
  • 文本(字符串)

这样,我可以查询并传递硬编码的分区。

但这是不好的做法吗?

2 个答案:

答案 0 :(得分:1)

这取决于。

要考虑的主要问题是分区对于读取和写入均具有有限的吞吐量。这与表的预配置吞吐量无关。分区的吞吐量受硬盘的读写速度限制。请记住,具有相同哈希值的所有项目都将位于同一分区上,因此将被写入同一磁盘(折扣复制)。

所以,这取决于您的规模。它可以在小规模,低吞吐量的用例中使用,但无法扩展到单个磁盘之外。

答案 1 :(得分:1)

对于哈希键使用单个硬编码值通常是一种不好的做法。对于这种用例,您应该考虑使用year_month_day(或某些变体)作为您的哈希键,而不是硬编码的哈希键值。它仍然不是很好,但是比单个值要好得多。

如果您确实想使用硬编码的哈希键值,请考虑对shard your data across partitions使用多个硬编码值。