【问题标题】:indexes in amazon dynamodb亚马逊 dynamodb 中的索引
【发布时间】:2014-05-24 10:00:40
【问题描述】:

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

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

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

所以我设置了表格,创建了一个 vagrant 机器,并使用 Amazon SDK 运行所有东西。

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

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

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

【问题讨论】:

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


    【解决方案1】:

    在上面的示例中,已使用“name”作为哈希键创建表,这是表的主键。由于主键值需要在 DynamoDB 表中的所有项目(即行)中是唯一的,因此表中只能有一个具有相同“名称”的项目。

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

    如果“名称”和“日期”的组合(假设“日期”属性捕获时间戳)是唯一的(如果用户不能同时创建两个查询,则为真),您可以创建DynamoDB 表,其中“名称”作为哈希属性,“日期”作为范围属性。这将允许使用查询 API 根据日期范围获取用户的查询。 http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html.there 提供有关 DynamoDB 查询 API 的文档。

    问候

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-06
        • 1970-01-01
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        • 1970-01-01
        • 2014-05-28
        相关资源
        最近更新 更多