在我的Cloudformation脚本中,我正在创建一个带有两个键的Dynamo数据库表(数据集) - 让我们称之为CatalogId和DatasetId。它们都是我无法控制的URI,但足以说明它们共同构成了一个唯一的ID。
我在主KeySchema / index中创建了两个HASH密钥。当我这样做时,CF给了我以下错误:
Invalid KeySchema: The second KeySchemaElement is not a RANGE key type
我做错了什么?
答案 0 :(得分:2)
答案是只有一个键可以是主索引中的HASH键。第二个键必须是RANGE类型,即使您从未计划将其与>进行比较。或者<。如果有人可以详细说明为什么我不能有两个HASH键,我会喜欢它。为什么Dynamo不在内部连接两个密钥并创建一个主键?
答案 1 :(得分:2)
正如您所提到的,DynamoDB没有这个选项。它希望客户端连接为String并将该值存储在一个字段中(即上述情况下的Hash密钥)。
如果您仍然需要将这些属性作为单独的字段,则可以将其作为非键属性单独存储。
问:复合属性索引是否可行?
没有。但是您可以将属性连接成一个字符串并将其用作键。
示例: - 强>
我知道这有点多余。这只是一个解决方法,以保持清晰。