DynamoDB pozwala usunąć lub umieścić terabyty danych za pomocą pojedynczej operacji BatchWriteItem. Kod lub polecenie wymaga pojedynczego wywołania BatchWriteItem w celu uzupełnienia do 25 Put lub usuwania operacji elementów. Chociaż jest to równoważne do 16 MB przechowywanej treści, dane mogą być więcej, ponieważ niektóre elementy mogą być powyżej 400 kb podczas transmisji.
Ten samouczek koncentruje się na tym, jak porwać Usuń w DynamoDB. Skoncentruje się na operacji BatchWriteItem i zapewni różne metody pogorszenia elementów usuwania za pomocą wywołania interfejsu API BatchWriteItem. Oczywiście znajdziesz realne przykłady.
Metody tego, jak bramka Usuń w DynamoDB
Metody tego, jak bramka Usuń w DynamoDB
Korzystanie z operacji BatchWriteItem
W Amazon DynamoDB możesz użyć BatchwriteItem Działanie w celu usunięcia wielu elementów z jednego lub więcej tabel w jednym żądaniu. Narzędzie przyjmuje obiekt żądania zawierający RequestItems mapa, gdzie klucze są nazwy tabeli, a wartości to listy DeleTeRequest obiekty. Każdy DeleTeRequest Obiekt musi mieć klucz podstawowy elementu, który chcesz usunąć.
Poniżej znajduje się przykład tego, jak możesz użyć BatchwriteItem Operacja w AWS SDK dla Pythona (Boto3) w celu usunięcia wielu elementów z tabeli:
Import Boto3
# Utwórz klienta dla DynamoDB
DynamODB = Boto3.Klient („DynamODB”)
# Zdefiniuj nazwę tabeli i nazwy kluczowych kluczowych
TABLE_NAME = „MyTableName”
nazwa_key = „id”
# Utwórz listę elementów do usunięcia
Items_to_delete = [
Key_name: 's': 'item1',
Key_name: 's': 'item2',
Key_name: 's': 'item3',
]
# Przygotuj obiekt żądania do operacji BatchWriteItem
żądanie =
„RequestItems”:
Nazwa tabeli: [
„DeleTeRequest”:
„Klucz”: pozycja
dla pozycji w Items_to_Delete
]
# Wykonaj operację BatchWriteItem
Odpowiedź = DynamODB.batch_write_item (** żądanie)
Drukuj (odpowiedź)
Możesz użyć operacji BatchWriteItem z preferowanym AWS SDK.
Batch Usuń elementy w DynamODB za pomocą operacji WriteBatchiTem
Powinieneś rozważyć użycie BatchwriteItem Operacja w połączeniu z operacją skanowania w celu pobierania elementów, które pasują do określonego filtra. Następnie usuń je w wielu partiach, jeśli potrzebujesz bardzo wielu elementów usuwanych jednocześnie.
Twój kod będzie następujący:
Import Boto3
# Utwórz klienta dla DynamoDB
DynamODB = Boto3.Klient („DynamODB”)
# Zdefiniuj nazwę tabeli i nazwę klucza podstawowego
TABLE_NAME = „MyTableName”
nazwa_key = „id”
# Zdefiniuj wyrażenie filtra i wartości początkowe dla skanowania
Filter_Expression = 'zawiera (#attr,: val)'
Expression_attribute_names = '#attr': 'some_attribute'
expression_attribute_values = ': val': 's': 'some_value'
# Zainicjuj pustą listę do przechowywania elementów do usunięcia
Items_to_delete = []
# Użyj operacji skanowania, aby pobrać elementy pasujące do filtra
Odpowiedź = DynamODB.skanowanie(
TableName = Table_name,
FilterExpression = Filter_Expression,
ExpressionAttributenames = Expression_Attribute_names,
ExpressionAttributeValues = Expression_Attribute_Values
)
# Wyodrębnij elementy z odpowiedzi i dołącz je do listy
Items_to_delete.rozszerzenie (odpowiedź [„pozycje”])
# Kontynuuj iterowanie, gdy jest więcej elementów do odzyskania
podczas gdy w odpowiedzi „lastevaludey”:
Odpowiedź = DynamODB.skanowanie(
TableName = Table_name,
FilterExpression = Filter_Expression,
ExpressionAttributenames = Expression_Attribute_names,
ExpressionAttributeValues = Expression_Attribute_Values,
ExcluSiveStartKey = odpowiedź [„lastevaLuredKey”]
)
Items_to_delete.rozszerzenie (odpowiedź [„pozycje”])
# Zdefiniuj maksymalną liczbę elementów, które można usunąć w jednej partii
Batch_size = 25
# Zainicjuj zmienną, aby śledzić indeks początkowowy dla następnej partii
start_index = 0
# Pętla, dopóki wszystkie elementy nie zostaną usunięte
podczas start_index < len(items_to_delete):
# Określ wskaźnik końcowy dla bieżącej partii
end_index = min (start_index + batch_size, len (items_to_delete))
# Przygotuj obiekt żądania do operacji BatchWriteItem
żądanie =
„RequestItems”:
Nazwa tabeli: [
„DeleTeRequest”:
'Klucz':
Nazwa_key: item [nazwa_key]
dla elementu w Items_to_Delete [start_index: end_index]
]
# Wykonaj operację BatchWriteItem
Dynamodb.batch_write_item (** żądanie)
# Zaktualizuj indeks początkowy dla następnej partii
start_index = end_index
print ('usunięte elementy z tabeli ' '.Format (len (items_to_delete), nazwa_bolika)))
W powyższym przykładzie, skanowanie Operacja pobiera elementy z tabeli, które pasują do określonego filtra (Some_attribute zawiera Some_value). Elementy będą tworzyć listę przed przetworzeniem partii 25 (lub mniej) elementów jednocześnie za pomocą BatchwriteItem operacja. Skrypt zapętla się przez wszystkie partie elementów i usuwa je jedną partię po drugiej.
Wniosek
Funkcja usunięcia partii w DynamoDB może znacznie zwiększyć wydajność Twojej bazy danych, szczególnie w przypadku wielu danych. W szczególności operacja BatchWriteItem nie zachowuje się jak polecenie deleteItem. Na przykład nie zwraca szczegółów usuniętych elementów w twojej odpowiedzi.