DynamoDB consente di eliminare o mettere terabyte di dati utilizzando un singolo funzionamento batchWriteItem. Il codice o il comando richiede una singola chiamata batchwriteItem per effettuare fino a 25 operazioni di elemento put o elimina. Sebbene ciò sia equivalente a un massimo di 16 MB di contenuto memorizzato, i dati possono essere superiori a quelli poiché alcuni elementi possono essere superiori a 400 kb durante la trasmissione.
Questo tutorial si concentra su come eliminare il batch in DynamoDB. Si concentrerà sull'operazione batchWriteItem e fornirà vari metodi su come eliminare in batch gli elementi utilizzando la chiamata API batchWriteItem. Certo, troverai esempi praticabili.
Metodi di come eliminare in batch in dinamodb
Metodi di come eliminare in batch in dinamodb
Utilizzando l'operazione batchWriteItem
In Amazon DynamoDB, puoi usare il batchwriteitem operazione per eliminare più elementi da una o più tabelle in una singola richiesta. L'utilità prende un oggetto di richiesta che contiene un file Richiesta mappa, dove le chiavi sono nomi di tabelle e i valori sono elenchi di Deleterequest oggetti. Ogni Deleterequest L'oggetto deve avere la chiave primaria dell'elemento che si desidera eliminare.
Di seguito è riportato un esempio di come puoi usare il batchwriteitem Operazione in AWS SDK per Python (Boto3) per eliminare più elementi da una tabella:
Importa Boto3
# Crea un client per DynamoDB
DynamoDB = boto3.Client ('DynamoDB')
# Definisci il nome della tabella e i nomi delle chiavi primari
table_name = 'mytablename'
key_name = 'id'
# Crea un elenco di elementi da eliminare
elementi_to_delete = [
key_name: 's': 'item1',
key_name: 's': 'item2',
key_name: 's': 'item3',
"
# Prepara l'oggetto richiesta per l'operazione batchWriteItem
richiesta =
'RequestItems':
table_name: [
'Deleterequest':
"Chiave": articolo
per l'elemento in elementi_to_delete
"
# Esegui l'operazione batchWriteItem
Risposta = DynamoDB.batch_write_item (** richiesta)
Stampa (risposta)
Puoi utilizzare l'operazione batchWriteItem con il tuo SDK AWS preferito.
Elimina gli elementi in batch in DynamoDB utilizzando l'operazione WriteBatchitem
Dovresti prendere in considerazione l'uso del batchwriteitem operazione in combinazione con un'operazione di scansione per recuperare gli elementi che corrispondono a un filtro specificato. Quindi, eliminali in più lotti se hai bisogno di molti articoli eliminati contemporaneamente.
Il tuo codice sarà il seguente:
Importa Boto3
# Crea un client per DynamoDB
DynamoDB = boto3.Client ('DynamoDB')
# Definisci il nome della tabella e il nome della chiave primaria
table_name = 'mytablename'
key_name = 'id'
# Definire l'espressione del filtro e i valori iniziali per la scansione
filter_expression = 'contiene (#attr ,: val)'
espressioni_attribute_names = '#attr': 'some_attribute'
espressione_attribute_values = ': val': 's': 'some_value'
# Inizializza un elenco vuoto per archiviare gli elementi da eliminare
elementi_to_delete = []
# Utilizzare l'operazione di scansione per recuperare gli elementi che corrispondono al filtro
Risposta = DynamoDB.scansione(
Tablename = table_name,
FiltereSpression = Filter_Expression,
EspressionAttributeNames = espression_attribute_names,
EspressionAttributeValues = espressione_attribute_values
)
# Estrai gli elementi dalla risposta e aggiungili all'elenco
elementi_to_delete.estendi (risposta ['elementi'])
# Continua a ripetere mentre ci sono più elementi da recuperare
mentre "LastvaluadEkey" in risposta:
Risposta = DynamoDB.scansione(
Tablename = table_name,
FiltereSpression = Filter_Expression,
EspressionAttributeNames = espression_attribute_names,
EspressionAttributeValues = espressione_attribute_values,
EsclusivestartKey = risposta ['LASTUALUADEKEKey]
)
elementi_to_delete.estendi (risposta ['elementi'])
# Definire il numero massimo di elementi che possono essere eliminati in un singolo batch
batch_size = 25
# Inizializza una variabile per tenere traccia dell'indice iniziale per il prossimo lotto
start_index = 0
# Loop fino a quando tutti gli articoli non sono stati eliminati
mentre start_index < len(items_to_delete):
# Determina l'indice finale per il lotto corrente
end_index = min (start_index + batch_size, len (elementi_to_delete))
# Prepara l'oggetto richiesta per l'operazione batchWriteItem
richiesta =
'RequestItems':
table_name: [
'Deleterequest':
'Chiave':
key_name: item [key_name]
per l'elemento in elementi_to_delete [start_index: end_index]
"
# Esegui l'operazione batchWriteItem
DynamoDB.batch_write_item (** richiesta)
# Aggiorna l'indice di partenza per il prossimo batch
start_index = end_index
print ('eliminati elementi dalla tabella '.Formato (len (items_to_delete), table_name))
Nell'esempio sopra, il scansione L'operazione recupera gli elementi dalla tabella che corrispondono a un filtro specificato (Some_attribute contiene Some_Value). Gli articoli costituiranno un elenco prima di essere elaborati in lotti di 25 (o meno) elementi contemporaneamente usando il batchwriteitem operazione. Lo script attraversa tutti i lotti di oggetti e li elimina un lotto dopo l'altro.
Conclusione
La funzione Elimina batch in DynamoDB può aumentare significativamente le prestazioni del tuo database, in particolare quando si tratta di molti dati. In particolare, l'operazione batchWriteItem non si comporta come il comando deleteItem. Ad esempio, non restituisce i dettagli degli elementi eliminati nella tua risposta.