【问题标题】:How to add add a 3rd indexable attribute to DynamoDb through the CDK?如何通过 CDK 向 DynamoDb 添加第三个可索引属性?
【发布时间】:2021-01-20 15:18:52
【问题描述】:

我正在尝试遵循一个教程,该教程通过称为索引重载的方法解释了 DynamoDB 的正确用法。教程是here。我正在通过 CDK 创建 DynamoDB。

问题: 教程提到索引将包括:分区键、排序键和称为“数据”的第三个字段,它本身将用作排序键:

创建具有三个通用属性的 DynamoDB 表:“分区键”、“排序键”和“数据”

三个通用属性将用于支持两个索引:主表索引,以pk为分区,sk为排序键,全局二级索引,以sk为分区,data为排序

正如您在上面看到的,此逻辑涉及 3 个属性的存在。但是 AWS CDK 允许添加分区键和排序键 - 初始架构描述中不能包含其他属性。当没有“数据”属性时,如何创建如上所述的包含“数据”属性的索引?

【问题讨论】:

    标签: amazon-web-services database-design amazon-dynamodb aws-cdk


    【解决方案1】:

    在使用 CDK 创建 DynamoDB 表时,您有几个 methods at your disposal 可以帮助您定义二级索引。

    例如,这里有一个 CDK (javascript) 的 sn-p,它创建了一个 DynamoDB 表并添加了二级索引:

        const table = new dynamodb.Table(this, "Table", {
          billingMode: dynamodb.BillingMode.PAY_PER_REQUEST, // Use on-demand billing mode
          sortKey: {name: "SK", type: dynamodb.AttributeType.STRING},
          partitionKey: {name: "PK", type: dynamodb.AttributeType.STRING}
        });
    
        table.addGlobalSecondaryIndex({
          indexName: "GSI1",
          partitionKey: {name: "GSI1PK", type: dynamodb.AttributeType.STRING},
          sortKey: {name: "GSI1SK", type: dynamodb.AttributeType.STRING}
        });
    

    【讨论】:

      【解决方案2】:

      我发现了问题,它是双重的:

      1. 我必须使用 RTFM - CDK 文档明确规定您可以使用作为更高级别 API 的 L2 构造,使用 L1 CFN 构造。

      2. 没有代码。如果我发布了一些代码,观众会看到我使用了 CDK 的 L2 构造 Table,而我应该使用较低级别的 L1 CfnTable,它允许更大的自定义,并且确实公开了定义自己的可能性keySchemaattributeDefinitions 根据CfnTableProps 中的指定需求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        • 2020-02-09
        • 1970-01-01
        • 2015-06-30
        • 2018-06-22
        相关资源
        最近更新 更多