我最近决定试用amazon-dynamodb,并且仍然试图抓住它。
在我的用例中,我必须在项目中将两个与字符串列表(“SS”)具有相同值的变量存储到DynamoDB中。当我试图这样做时,这就是我得到的
[ValidationException: One or more parameter values were invalid: Input collection [X,X] contains duplicates.]
message: 'One or more parameter values were invalid: Input collection [X, X] contains duplicates.',
code: 'ValidationException',
time: Fri Apr 25 2014 20:38:21 GMT+0000 (UTC),
statusCode: 400
我的问题:有没有办法在项目列表中存储重复值?
任何有关此的知识将不胜感激。
答案 0 :(得分:2)
在DynamoDB中,Hash Key
或Hash Key
+ Range Key
组合必须是唯一的。
在哈希键(id
)上只有表格id
必须是唯一的。
id
--------
john
mary
jane
在哈希键(id
)+范围键(timestamp
)表格中,id
+ timestamp
的组合必须是唯一的
id | timestamp
--------|-------------------------
john | 2014-04-28T07:53:29.000Z
john | 2014-04-28T08:53:29.000Z
john | 2014-04-28T09:53:29.000Z
mary | 2014-04-28T07:53:29.000Z
jane | 2014-04-28T07:53:29.000Z
如果您的表格的Hash Key
类型为String Set
,那么DynamoDB也希望String Set
的值也是唯一的。
id (String Set)
------------------------
["john"]
["mary"]
["jane"]
["john", "mary"]
["john", "jane"]
["john", "jane", "mary"]
因此,如果您尝试实现以下目标,可以这样做,因为每个组合都是唯一的。
id (String Set)
----------------
["john", "mary"]
["john", "jane"]
但是,如果您尝试实现以下内容,则会发生异常:
id (String Set)
----------------
["john", "mary"]
["john", "mary"]
答案 1 :(得分:2)
不,字符串“列表”实际上是“设置”。如果您尝试添加带有重复项的值列表,它将为您提供此类异常;如果您尝试添加已在集合中的值,它将以静默方式成功。
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes