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.
示例:-
- 名字和姓氏作为复合键
- 连接名字和姓氏并将其存储为散列键
- 将名字保存为非关键属性
- 将姓氏保存为非关键属性
我知道这有点多余。这只是让事情变得清晰的解决方法。
在我的 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.
示例:-
- 名字和姓氏作为复合键
- 连接名字和姓氏并将其存储为散列键
- 将名字保存为非关键属性
- 将姓氏保存为非关键属性
我知道这有点多余。这只是让事情变得清晰的解决方法。