【问题标题】:How to add a DynamoDB global secondary Index via Python/Boto3如何通过 Python/Boto3 添加 DynamoDB 全局二级索引
【发布时间】:2018-04-18 01:32:28
【问题描述】:

是否可以在创建后向现有 DynamoDB 表添加全局二级索引?我正在将 Python 3.x 与 Boto3 一起使用,并且在创建表后无法找到将它们添加到表中的任何示例。

【问题讨论】:

    标签: amazon-dynamodb boto3 python-ggplot


    【解决方案1】:

    一般来说,是的,可以在创建表后添加全局二级索引 (GSI)。

    但是,更改可能需要很长时间才能生效,因为构建 GSI 需要进行表扫描。

    boto3的情况看the documentation for update_table

    例如,你尝试这样的事情:

    response = client.update_table(
        TableName = 'YourTableName',
        # ...snip...
        GlobalSecondaryIndexUpdates=[
            {
                'Create': {
                    'IndexName': 'YourGSIName',
                    'KeySchema': [
                        {
                            'AttributeName': 'YourGSIFieldName',
                            'KeyType': 'HASH'
                        }
                    ],
                    'Projection': {
                        'ProjectionType': 'ALL'
                    },
                    'ProvisionedThroughput': {
                        'ReadCapacityUnits': 1,
                        'WriteCapacityUnits': 1
                    }
                }
            }
        ],
        # ...snip...
    )
    

    【讨论】:

    • 看起来这个方法效果很好,但是如果你不小心你可以使用相同的KeySchema创建多个全局二级索引。这将浪费资源并且没有价值。所以这个例程可能应该在创建新的 GS 索引之前检查索引是否已经存在。
    • 是的,我个人建议使用 CF 模板(或类似模板)来避免这种情况
    猜你喜欢
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多