如何通过 Python/Boto3 添加 DynamoDB 全局二级索引
How to add a DynamoDB global secondary Index via Python/Boto3
是否可以在创建全局二级索引后将其添加到现有 DynamoDB table?我将 Python 3.x 与 Boto3 一起使用,但无法找到它们在创建后被添加到 table 的任何示例。
一般来说,是的,可以在创建 table 之后添加全局二级索引 (GSI
)。
但是,更改可能需要很长时间才能生效,因为构建 GSI
需要 table 扫描。
如果是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...
)
是否可以在创建全局二级索引后将其添加到现有 DynamoDB table?我将 Python 3.x 与 Boto3 一起使用,但无法找到它们在创建后被添加到 table 的任何示例。
一般来说,是的,可以在创建 table 之后添加全局二级索引 (GSI
)。
但是,更改可能需要很长时间才能生效,因为构建 GSI
需要 table 扫描。
如果是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...
)