亚马逊dynamodb的索引

时间:2014-05-24 10:00:41

标签: php amazon-web-services amazon-dynamodb

我是Amazon DynamoDB的新手,也许我的问题源于我的SQL知识。

我希望有一个非常简单的Form表。该表包含namedateenquiry。这背后的想法是通过各种网站捕获用户提交的内容。查询表格。

当我设置表格时,我被要求索引,所以对我来说明智的选择是Client NameClient Name将成为表格发送的网站名称。

因此,我设置了表格,创建了一个流浪汉机器,并使用Amazon SDK运行所有内容。

但是,当我开始向同一个客户端发送2个表单到亚马逊时,他们互相覆盖。

我想的是索引需要对表单唯一,但是没有办法自动递增它们。如果没有自动增量,我似乎需要在插入任何数据之前查询数据库,这似乎是一种奇怪的做事方式。

如何根据我的情况正确设置索引?

2 个答案:

答案 0 :(得分:1)

在上面的例子中,表格是用" name"创建的。作为哈希键,这是表的主键。由于主键值在DynamoDB表中的所有项(即行)中必须是唯一的,因此表中只能有一个项具有相同的" name"。

请注意,对于索引,索引键(哈希属性或哈希和范围属性)值不必是唯一的。例如,您可以使用相同的"客户端名称"在索引中存储多个项目。有关DynamoDB索引的更多详细信息,请访问http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SecondaryIndexes.html

如果"名称"的组合和"日期" (假设" date"属性捕获时间戳)是唯一的(如果用户不能在同一时间创建两个查询,则会出现这种情况),您可以使用" name&#创建DynamoDB表34;作为哈希属性和"日期"作为范围属性。这将允许使用查询API基于日期范围获取用户的查询。有关DynamoDB查询API的文档可在http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html.there获得。

此致

答案 1 :(得分:0)

您需要一个ID字段作为主键。 This SO Q&A有一个使用原子计数器函数在Dynamodb中自动递增的解决方案。或者,您可以使用UUID作为ID。