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

时间:2017-05-04 15:30:29

标签: amazon-dynamodb amazon-cloudformation

在我的Cloudformation脚本中,我正在创建一个带有两个键的Dynamo数据库表(数据集) - 让我们称之为CatalogId和DatasetId。它们都是我无法控制的URI,但足以说明它们共同构成了一个唯一的ID。

我在主KeySchema / index中创建了两个HASH密钥。当我这样做时,CF给了我以下错误:

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

我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

正如您所提到的,DynamoDB没有这个选项。它希望客户端连接为String并将该值存储在一个字段中(即上述情况下的Hash密钥)。

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

  

问:复合属性索引是否可行?

     

没有。但是您可以将属性连接成一个字符串并将其用作键。

示例: -

  1. 作为复合键的名字和姓氏
  2. 连接名字和姓氏并将其存储为哈希键
  3. 将名字保存为非关键属性
  4. 将姓氏保存为非关键属性
  5. 我知道这有点多余。这只是一个解决方法,以保持清晰。