了解DynamoDB密钥

时间:2017-03-20 22:34:18

标签: amazon-dynamodb primary-key

我已阅读DynamoDB文档here。我的场景与提名任何字段作为检索的关键点没有什么不同。我的数据看起来像

RandomID(Unique)  Category  date_created   isUsed
------------------------------------------------------
12355              ABC      03/02            false
14682              ABC      03/02            false
19684              ABC      03/20            false
12357              BCA      03/04            true
16924              ABC      03/14            true
12352              ABC      03/02            true
32358              BCA      03/14            false

RandomId:表中只有唯一的东西,需要检索。

类别:每个类别都可以包含任意数量的已分配和未分配的随机数。

创建Randomid时

creationDate:

isUsed:是否已使用randomid。

我想为单个类别获取2个未使用的(isUsed =' false')随机ID(ifexists)? 示例:如果我查询我的表格,请给我两个未使用的ID以用于类别' ABC''那么我应该得到这些结果中的任何一个

{12355, 14682}
{14682, 19684}
{12355, 19684}

我的问题是: 1.我的哈希钥匙在这里是什么?因为这个表中唯一的东西是我的randomid。

  1. 保持“使用”的想法'作为排序键但布尔值不被接受为排序键?在Dyanmo中创建样本表时,我无法找到该类别。

  2. 我的钥匙是什么?

  3. 任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以预先计算结果。为什么不使用名为locationUsed的可选属性(字符串)而不是使用布尔值isUsed,并在首次使用其中一个随机ID时更新项目。如果使用分区键randomID和排序键locationUsed创建GSI,则此GSI将仅包含应用程序已使用的随机ID的项目。您可以通过对随机ID项使用条件更新来保护自己免受此GSI视图与基表之间的竞争条件的影响,特别是ConditionExpression = attribute_not_exists(locationUsed)