【问题标题】:Dynamodb query all records as per no-sql designDynamodb 根据 no-sql 设计查询所有记录
【发布时间】:2019-12-22 16:19:51
【问题描述】:

我知道在 dynamodb 中编写查询,但我还是新手。现在对于一个项目,而不是 不是简单地创建一个带有分区键和排序键的表,我设计了 我的表的无 sql 数据模型数据结构。因此,我已经实施 列出/添加/更新/删除 dynamodb 查询。

我的问题是如何查询所有记录,例如查询所有产品。 对于我的应用程序的管理面板,我需要显示一个实体类型的所有记录,针对每种类型的实体。

我知道查询所有记录之前基本上已经在Retrieve all items from DynamoDB using query?问过。

但是,我发布了这个没有扫描操作的问题;如何根据或根据考虑适当/完整的 nosql 设计来做。 具体来说,我之所以问,是因为我目前正在为分区键使用静态值。

我遵循单表设计(无论如何,建议大多数设计良好的应用程序只使用 1 个表)。作为其中的一部分,在此链接https://www.trek10.com/blog/dynamodb-single-table-relational-modeling/,建议使用静态值作为排序键,它将成为(反向查找)索引的主键。从而允许查询所有“产品”,例如。

我的应用程序将具有“类别”。它还将创建“调查”,每个调查都属于一个类别。对于管理面板,我需要显示所有类别以及所有调查。

我目前做了什么:
一)表格设计:
表:tbl_surveys
分区键:tbl_pk_surv
排序键:tbl_sk_surv
一个“数据”属性:data_attr

我创建了一个 GSI,其中 tbl_sk_surv 作为 Partition Key,data_attr 作为 Sortkey。

II) 例如,对于类别,类别记录如下所示:
tbl_pk_surv | tbl_sk_surv | data_attr | cat_name | status Cat-1VqNAF3Vi1 | ADMIN_CATEGORY | 1565673999 | Cat1 | 1 Cat-QUTQHQwd42 | ADMIN_CATEGORY | 1565950613 | Cat2 | 1

我正在使用“ADMIN_CATEGORY”作为 GSI 哈希键 (tbl_sk_surv) 的值查询 GSI。

请让我知道还有什么方法可以做到这一点。一般来说,请提供有关 nosql 数据建模的指导。

我已遵循以下有关 nosql 设计的文档
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-general-nosql-design.html
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-modeling-nosql.html
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-modeling-nosql-B.html
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html#bp-adjacency-lists
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-relational-modeling.html
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-gsi-overloading.html
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-sort-keys.html
https://www.trek10.com/blog/dynamodb-single-table-relational-modeling/
https://aws.amazon.com/blogs/database/using-sort-keys-to-organize-data-in-amazon-dynamodb/

更新: 在更多搜索中,我发现以下问题与我的相似。但我问得更具体,因为我使用的是 GSI。无论哪种方式,请指导:
How to design key schema to have only one DynamoDB table per application?

【问题讨论】:

    标签: amazon-dynamodb dynamodb-queries


    【解决方案1】:

    您的设计看起来只是正确的!

    据我所知,

    • 单桌设计适合你
      • 您可以将类别和调查都作为 hash_key 的值
      • GSI 将使您能够根据类型(类别或调查)进行查询

    如果你能详细列出你所有的用例和数据,就能更好地回答同样的问题

    【讨论】:

      【解决方案2】:

      我猜到今天,距您提出问题的 5 个月后,您已经是 dynamodb 建模专家了 :) 我将仅针对寻找相同问题的未来访问者并作为我自己的练习来说明我的观点。

      1- 第一步(当然是在获得所有用例之后)是设计您的 ERM,这将非常有帮助。 2-列出所有访问模式,在对数据库进行建模之前首先了解您想从数据中获取什么非常重要。 3- 然后你可以决定你的 PK 和 SK(如果需要)你的物品和你的 GSI(如果需要)

      您可以说 SK 是您的 GSI PK 并像这样查询 GSI:

      来自 GSI 的“PK = ADMIN_CATEGORY”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-11
        • 1970-01-01
        相关资源
        最近更新 更多