DynamoDB — это полностью управляемый сервис баз данных NoSQL, предоставляемый Amazon Web Services (AWS). Он предлагает гибкое и масштабируемое хранилище для приложений с высокими требованиями к пропускной способности чтения и записи. Одной из ключевых операций в DynamoDB является операция UpdateTable, которая позволяет изменять предоставленную пропускную способность или свойства таблицы. В этой статье мы сосредоточимся конкретно на использовании операции UpdateTable с параметром GlobalSecondaryIndexUpdates для внесения изменений в глобальные вторичные индексы (GSI), связанные с таблицей.
Понимание глобальных вторичных индексов (GSI):
Прежде чем углубляться в методы использования операции UpdateTable с GlobalSecondaryIndexUpdates, давайте кратко разберемся с GSI в DynamoDB. GSI — это альтернативные структуры данных, которые позволяют запрашивать данные, используя атрибуты, отличные от первичного ключа. Они обеспечивают гибкость при запросе данных и могут значительно повысить производительность некоторых типов запросов.
Метод 1. Добавление нового глобального вторичного индекса
В следующем фрагменте кода показано, как использовать операцию UpdateTable для добавления нового GSI в существующую таблицу DynamoDB.
import boto3
dynamodb = boto3.client('dynamodb')
response = dynamodb.update_table(
TableName='YourTableName',
AttributeDefinitions=[
{
'AttributeName': 'AttributeName',
'AttributeType': 'S'
}
],
GlobalSecondaryIndexUpdates=[
{
'Create': {
'IndexName': 'NewIndexName',
'KeySchema': [
{
'AttributeName': 'AttributeName',
'KeyType': 'HASH'
}
],
'Projection': {
'ProjectionType': 'ALL'
},
'ProvisionedThroughput': {
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
}
}
}
]
)
print(response)
Метод 2. Обновление существующего глобального вторичного индекса
Если вам необходимо изменить предоставленную пропускную способность или свойства существующего GSI, вы можете использовать операцию UpdateTable с параметром GlobalSecondaryIndexUpdates. В следующем фрагменте кода показано, как обновить существующий GSI.
import boto3
dynamodb = boto3.client('dynamodb')
response = dynamodb.update_table(
TableName='YourTableName',
GlobalSecondaryIndexUpdates=[
{
'Update': {
'IndexName': 'ExistingIndexName',
'ProvisionedThroughput': {
'ReadCapacityUnits': 10,
'WriteCapacityUnits': 10
}
}
}
]
)
print(response)
Метод 3. Удаление глобального вторичного индекса
Если вам больше не нужен GSI, связанный с таблицей DynamoDB, вы можете использовать операцию UpdateTable для его удаления. В следующем фрагменте кода показано, как удалить существующий GSI.
import boto3
dynamodb = boto3.client('dynamodb')
response = dynamodb.update_table(
TableName='YourTableName',
GlobalSecondaryIndexUpdates=[
{
'Delete': {
'IndexName': 'IndexToDelete'
}
}
]
)
print(response)
В этой статье мы рассмотрели операцию UpdateTable с параметром GlobalSecondaryIndexUpdates в DynamoDB. Мы узнали, как добавить новый GSI, обновить существующий GSI и удалить GSI, используя примеры кода на Python. Понимание этих методов поможет вам эффективно управлять глобальными вторичными индексами в таблицах DynamoDB, обеспечивая гибкость и повышая производительность при запросе данных.