KeySchema 无效:第二个 KeySchemaElement 不是 RANGE 键类型

Invalid KeySchema: The second KeySchemaElement is not a RANGE key type

在我的 Cloudformation 脚本中,我正在使用两个键创建 Dynamo DB table(数据集)- 我们称它们为 CatalogId 和 DatasetId。它们都是我无法控制的 URI,但足以说明它们一起构成了一个唯一的 ID。

我在主 KeySchema / 索引中制作了它们两个 HASH 键。当我这样做时,CF 给了我以下错误:

Invalid KeySchema: The second KeySchemaElement is not a RANGE key type

我做错了什么?

答案是主索引中只有一个键可以是HASH键。第二个键必须是 RANGE 类型,即使您从未打算将它与 > 或 < 进行比较。如果有人能详细说明为什么我不能有两个 HASH 键,我会很高兴。为什么 Dynamo 不直接在内部连接两个键并创建一个主键?

如您所述,DynamoDB 没有该选项。它期望客户端连接为字符串并将该值存储在一个字段中(即上述情况中的哈希键)。

如果您仍然需要将这些属性作为单独的字段,则可以将其单独存储为非键属性。

Q: Are composite attribute indexes possible?

No. But you can concatenate attributes into a string and use this as a key.

示例:-

  1. 名字和姓氏作为复合键
  2. 连接名字和姓氏并将其存储为散列键
  3. 将名字保存为非关键属性
  4. 将姓氏保存为非关键属性

我知道这有点多余。这只是让事情变得清晰的解决方法。