我是Amazon DynamoDB
的新手,也许我的问题源于我的SQL知识。
我希望有一个非常简单的Form
表。该表包含name
,date
,enquiry
。这背后的想法是通过各种网站捕获用户提交的内容。查询表格。
当我设置表格时,我被要求索引,所以对我来说明智的选择是Client Name
。 Client Name
将成为表格发送的网站名称。
因此,我设置了表格,创建了一个流浪汉机器,并使用Amazon SDK运行所有内容。
但是,当我开始向同一个客户端发送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。