Mit DynamoDB können Sie Terabyte von Daten unter Verwendung eines einzelnen BatchwriteItem -Vorgangs löschen oder platzieren. Der Code oder Befehl erfordert einen einzelnen BatchwriteItem -Anruf. Dies entspricht zwar bis zu 16 MB gespeicherten Inhalt.
Dieses Tutorial konzentriert sich darauf, wie man in DynamoDB löschen kann. Es wird sich auf den BatchwriteItem -Betrieb konzentrieren und verschiedene Methoden zum Batch -Löschen von Elementen mit dem BatchwriteItem -API -Aufruf bereitstellen. Natürlich finden Sie praktikable Beispiele.
Methoden, wie man in DynamoDB löschen kann
Methoden, wie man in DynamoDB löschen kann
Verwenden der BatchwriteItem -Operation
In Amazon DynamoDB können Sie die verwenden BatchwriteItem Betrieb zum Löschen mehrerer Elemente aus einem oder mehreren Tabellen in einer einzigen Anforderung. Das Dienstprogramm nimmt ein Anforderungsobjekt an, das a enthält Requestitems Karte, wobei die Schlüssel Tabellennamen und die Werte von Listen von sind Löschen Objekte. Jede Löschen Das Objekt muss den Primärschlüssel des Elements haben, den Sie löschen möchten.
Unten finden Sie ein Beispiel dafür, wie Sie die verwenden können BatchwriteItem Betrieb im AWS SDK für Python (BOTO3) zum Löschen mehrerer Elemente aus einer Tabelle:
Boto3 importieren
# Erstellen Sie einen Client für DynamoDB
DynamoDB = Boto3.Client ('DynamoDB')
# Definieren Sie den Tabellennamen und die Primärschlüsselnamen
table_name = 'mytableName'
KEY_NAME = 'ID'
# Erstellen Sie eine Liste der zu löschenden Elemente
items_to_delete = [
KEY_NAME: 'S': 'item1',
KEY_NAME: 'S': 'item2',
KEY_NAME: 'S': 'item3',
]
# Bereiten Sie das Anforderungsobjekt für die BatchwriteItem -Operation vor
Request =
'Requestitems':
Tabellenname: [
'DeleterQuest':
'Schlüssel': Artikel
für Element in items_to_delete
]
# Führen Sie den BatchwriteItem -Vorgang aus
Antwort = DynamoDB.batch_write_item (** Anfrage)
Druck (Antwort)
Sie können den BatchwriteItem -Betrieb mit Ihrem bevorzugten AWS SDK verwenden.
Batch -Löschenelemente in DynamoDB mit der WriteBatchItem -Operation
Sie sollten in Betracht ziehen, die zu verwenden BatchwriteItem Betrieb in Kombination mit einem Scan -Betrieb, um Elemente abzurufen, die einem angegebenen Filter entsprechen. Löschen Sie sie dann in mehreren Chargen, wenn Sie sehr viele Elemente gleichzeitig gelöscht haben.
Ihr Code ist wie folgt:
Boto3 importieren
# Erstellen Sie einen Client für DynamoDB
DynamoDB = Boto3.Client ('DynamoDB')
# Definieren Sie den Tabellennamen und den Primärschlüsselnamen
table_name = 'mytableName'
KEY_NAME = 'ID'
# Definieren Sie den Filterexpression und die Anfangswerte für den Scan
filter_expression = 'enthält (#attr,: val)' '
expression_attribute_names = '#attr': 'son_attribute'
expression_attribute_values = ': val': 's': 'son_value'
# Initialisieren Sie eine leere Liste, um die Artikel zum Löschen zu speichern
items_to_delete = []
# Verwenden Sie den Scan -Vorgang, um Elemente abzurufen, die mit dem Filter übereinstimmen
Antwort = DynamoDB.Scan(
TableName = table_name,
Filterexpression = filter_expression,
ExpressionAttributenames = expression_attribute_names,
ExpressionAttributeValues = expression_attribute_values
)
# Extrahieren Sie die Elemente aus der Antwort und fügen Sie sie an die Liste hinzu
items_to_delete.erweitern (Antwort ['Elemente'])
# Iterieren Sie weiter, während es mehr Gegenstände zum Abrufen gibt
Während "Laste -ArevaluatedKey" als Antwort:
Antwort = DynamoDB.Scan(
TableName = table_name,
Filterexpression = filter_expression,
ExpressionAttributenames = expression_attribute_names,
ExpressionAttributeValues = expression_attribute_values,
ExclusivestartKey = response ['LasteValuatedKey']
)
items_to_delete.erweitern (Antwort ['Elemente'])
# Definieren Sie die maximale Anzahl der Elemente, die in einer einzelnen Stapel gelöscht werden können
batch_size = 25
# Initialisieren Sie eine Variable, um den Startindex für die nächste Stapel im Auge zu behalten
start_index = 0
# Schleife, bis alle Artikel gelöscht wurden
während start_index < len(items_to_delete):
# Bestimmen Sie den Endindex für die aktuelle Stapel
end_index = min (start_index + batch_size, len (items_to_delete))
# Bereiten Sie das Anforderungsobjekt für die BatchwriteItem -Operation vor
Request =
'Requestitems':
Tabellenname: [
'DeleterQuest':
'Taste':
KEY_NAME: item [KEY_NAME]
für Element in items_to_delete [start_index: end_index]
]
# Führen Sie den BatchwriteItem -Vorgang aus
Dynamode.batch_write_item (** Anfrage)
# Aktualisieren Sie den Startindex für die nächste Stapel
start_index = end_index
print ('gelöscht Elemente aus Tabelle '.Format (len (items_to_delete), table_name))
Im obigen Beispiel die Scan Operation ruft Elemente aus der Tabelle ab, die einem angegebenen Filter entsprechen (SONDER_ATTRIBUTE enthält SONDER_VALUE). Die Elemente bilden eine Liste BatchwriteItem Betrieb. Das Skript schießt durch alle Stapel von Elementen und löscht sie eine Charge nach dem anderen.
Abschluss
Die Batch -Löschfunktion in DynamoDB kann die Leistung Ihrer Datenbank erheblich verbessern, insbesondere wenn Sie mit vielen Daten zu tun haben. Bemerkenswerterweise verhalten sich die BatchwriteItem -Operation nicht wie der Befehl DeleteItem. Zum Beispiel gibt es nicht die Details der gelöschten Elemente in Ihrer Antwort zurück.