使用.Net Core API的DynamoDB子项筛选器

时间:2019-01-29 10:06:44

标签: amazon-dynamodb

首先,我有这样的表结构,

Users:{
        UserId
        Name
        Email
        SubTable1:[{
                    Column-111
                    Column-112
                },
                {
                    Column-121
                    Column-122
            }]
        SubTable2:[{
                    Column-211
                    Column-212
                },
                {
                    Column-221
                    Column-222
            }]
    }

由于我是DynamoDB的新手,所以我对此有以下几个问题:
    1.我可以创建这样的结构吗?
    2.我们可以为子表设置主键吗?
    3.幸运的是,我发现DynamoDB helper类可以对数据库进行一些操作。
        https://www.gopiportal.in/2018/12/aws-dynamodb-helper-class-c-and-net-core.html
       但是,不知道如何仅提取垂直子表
    4.我们能否仅从主表中获取特定的列?还需要有关子表的建议

注意:我正在使用.net核心c#语言与DynamoDB通信。

1 个答案:

答案 0 :(得分:0)

  1. 我可以创建这样的结构吗?

  1. 我们可以为子表设置主键吗?

否,只能在顶级标量属性(字符串,数字等)上设置哈希键

  1. 幸运的是,我找到了DynamoDB helper类来对数据库进行一些操作。 interesting article 但是,不知道如何仅获取垂直子表

    当您说子表时,我假设您是在上面的示例表中引用Array数据类型。为了从DynamoDB表中获取数据,您需要使用哈希键才能使用查询API。如果没有哈希键,则可以使用Scan API扫描整个表。扫描API是一项昂贵的操作。

    可以创建

    GSI(全局二级索引)以避免扫描操作。但是,只能在标量属性上创建它。无法在Array属性上创建GSI。

    其他选择是相应地重新设计表以匹配您的查询访问模式。

  2. 我们只能从主表中获取特定的列吗?还需要有关子表的建议

是的,您可以使用ProjectionExpression获取特定的列。这样,您就只能在结果集中获得必需的属性