我是Amazon DynamoDB
的新手,也许我的问题源于我的SQL知识。
我想要一个非常简单的Form
表。这个表包含name
, date
, enquiry
。这背后的想法是通过各种网站的查询表格捕获用户的意见。
当我设置表时,我被要求创建索引,所以对我来说明智的选择是Client Name
。Client Name
将是发送表单的网站的名称。
因此,我设置了表,创建了一台流浪机器,并使用Amazon SDK运行了所有内容。
然而,当我开始为同一个客户端向亚马逊发送两个表单时,它们相互覆盖。
我想的是,索引需要是唯一的形式,但没有办法自动增加他们。如果没有自动增量,似乎我需要在插入任何数据之前查询数据库,这似乎是一种奇怪的做事方式。
如何根据我的情况正确设置索引?
在上面的示例中,已经创建了以"name"作为散列键的表,并且这是表的主键。因为主键值需要在DynamoDB表中的所有项目(即行)中是唯一的,所以表中只能有一个项目具有相同的"名称"。
请注意,对于索引,索引键(哈希属性或哈希和范围属性)值不需要是唯一的。例如,您可以在索引中存储具有相同"客户端名称"的多个项。有关DynamoDB索引的更多详细信息,请访问http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SecondaryIndexes.html。
如果"name"one_answers"date"的组合(假设"date"属性捕获时间戳)是唯一的(如果用户不能在同一时间创建两个查询,这将是正确的),您可以创建DynamoDB表,将"name"作为散列属性,将"date"作为范围属性。这将允许使用Query API获取基于日期范围的用户查询。关于DynamoDB Query API的文档可以在http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html.there上找到。
对
需要一个ID字段作为主键。在Dynamodb中,有一个使用原子计数器函数的自动增量解决方案。或者,您可以使用UUID作为ID。