Como fazer o lote delete no dynamoDB

Como fazer o lote delete no dynamoDB
O DynamoDB continua sendo um dos bancos de dados mais escaláveis ​​devido aos seus recursos pendentes. Entre as características mais convenientes está a capacidade de excluir itens no DynamoDB, já que muitos aplicativos dependem de painéis de dados.

O DynamoDB permite excluir ou colocar terabytes de dados usando uma única operação BatchWriteItem. O código ou comando requer uma única chamada BatchWriteItem para compensar 25 operações de itens de venda ou exclusão. Embora isso seja equivalente a até 16 MB de conteúdo armazenado, os dados podem ser mais do que isso, já que alguns itens podem estar acima de 400 kb durante a transmissão.

Este tutorial se concentra em como excluir lote no dynamoDB. Ele se concentrará na operação BatchWriteItem e fornecerá vários métodos de como excluir itens de exclusão usando a chamada da API BatchWriteItem. Claro, você encontrará exemplos viáveis.

Métodos de como excluir lote no dynamoDB

Métodos de como excluir lote no dynamoDB

Usando a operação BatchWriteItem

No Amazon DynamoDB, você pode usar o BatchWriteItem Operação para excluir vários itens de uma ou mais tabelas em uma única solicitação. O utilitário leva um objeto de solicitação que contém um RequestItems mapa, onde as chaves são nomes de tabela e os valores são listas de Apagar solicitação objetos. Cada Apagar solicitação Objeto deve ter a chave primária do item que você deseja excluir.

Abaixo está um exemplo de como você pode usar o BatchWriteItem Operação no AWS SDK para Python (BOTO3) para excluir vários itens de uma tabela:

Importar BOTO3
# Crie um cliente para o DynamoDB
DynamoDB = BOTO3.Client ('DynamoDB')
# Defina o nome da tabela e os nomes de chave primária
tabela_name = 'MyTableName'
key_name = 'id'
# Crie uma lista de itens para excluir
itens_to_delete = [
key_name: 'S': 'Item1',
key_name: 's': 'item2',
key_name: 's': 'item3',
]
# Prepare o objeto de solicitação para a operação BatchWriteItem
solicitação =
'RequestItems':
Nome da tabela: [

'Apagar solicitação':
'Chave': item

para item em itens_to_delete
]


# Execute a operação BatchWriteItem
Resposta = DynamoDB.batch_write_item (** solicitação)

Imprimir (resposta)
Você pode usar a operação BatchWriteItem com seu AWS preferido SDK.

Batch Excluir itens no DynamoDB usando a operação WriteBatchItem

Você deve considerar usar o BatchWriteItem operação em combinação com uma operação de varredura para recuperar itens que correspondem a um filtro especificado. Em seguida, exclua -os em vários lotes se precisar de muitos itens excluídos de uma só vez.

Seu código será o seguinte:

Importar BOTO3
# Crie um cliente para o DynamoDB
DynamoDB = BOTO3.Client ('DynamoDB')
# Defina o nome da tabela e o nome principal
tabela_name = 'MyTableName'
key_name = 'id'
# Defina a expressão do filtro e os valores iniciais para a varredura
filter_expression = 'contém (#attr ,: val)'
expressão_attribute_names = '#attr': 'algum_attribute'
expressão_attribute_values ​​= ': val': 's': 'algum_value'
# Inicialize uma lista vazia para armazenar os itens para excluir
itens_to_delete = []
# Use a operação de varredura para recuperar itens que correspondem ao filtro
Resposta = DynamoDB.Varredura(
TableName = tabela_name,
Filtroxpressão = filtro_expression,
ExpressionAttributenames = Expression_attribute_Names,
ExpressionAttributeValues ​​= Expression_attribute_Values
)
# Extraia os itens da resposta e os anexa à lista
itens_to_delete.estender (resposta ['itens'])
# Continue iterando enquanto há mais itens para recuperar
Enquanto 'Keyky LastEvalued' em resposta:
Resposta = DynamoDB.Varredura(
TableName = tabela_name,
Filtroxpressão = filtro_expression,
ExpressionAttributenames = Expression_attribute_Names,
ExpressionAttributeValues ​​= Expression_attribute_Values,
ExclusivestartKey = resposta ['LastEvaluedKey']]
)
itens_to_delete.estender (resposta ['itens'])
# Defina o número máximo de itens que podem ser excluídos em um único lote
batch_size = 25
# Inicialize uma variável para acompanhar o índice inicial para o próximo lote
start_index = 0
# Loop até que todos os itens tenham sido excluídos
enquanto start_index < len(items_to_delete):
# Determine o índice de final para o lote atual
end_index = min (start_index + batch_size, len (itens_to_delete))
# Prepare o objeto de solicitação para a operação BatchWriteItem
solicitação =
'RequestItems':
Nome da tabela: [

'Apagar solicitação':
'Chave':
key_name: item [key_name]


para item em itens_to_delete [start_index: end_index]
]


# Execute a operação BatchWriteItem
DynamoDB.batch_write_item (** solicitação)
# Atualize o índice inicial para o próximo lote
start_index = end_index

Print ('Excluído itens da tabela '.formato (len (itens_to_delete), tabela_name)))

No exemplo acima, o Varredura a Operação recupera itens da tabela que correspondem a um filtro especificado (Some_attribute contém Algum_value). Os itens compensarão uma lista antes de serem processados ​​em lotes de 25 (ou menos) itens simultaneamente usando o BatchWriteItem Operação. O script passa por todos os lotes de itens e os exclui um lote após o outro.

Conclusão

O recurso de exclusão em lote no DynamoDB pode aumentar significativamente o desempenho do seu banco de dados, principalmente ao lidar com muitos dados. Notavelmente, a operação BatchWriteItem não se comporta como o comando DeleteItem. Por exemplo, ele não retorna os detalhes dos itens excluídos em sua resposta.