Hvordan batch slett i dynamodb

Hvordan batch slett i dynamodb
DynamoDB er fortsatt en av de mest skalerbare databasene på grunn av de fremragende funksjonene. Blant de mest praktiske funksjonene er muligheten til å slette elementer i DynamoDB siden mange applikasjoner er avhengige av bulker av data.

DynamoDB lar deg slette eller legge terabyte med data ved hjelp av en enkelt batchwriteItem -operasjon. Koden eller kommandoen krever en enkelt batchwriteItem -samtale for å utgjøre opptil 25 satte eller slette varedrift. Selv om dette tilsvarer opptil 16 MB lagret innhold, kan dataene være mer enn det siden noen elementer kan være over 400 kb under overføring.

Denne opplæringen fokuserer på hvordan du sletter i dynamoDB. Den vil fokusere på BatchWriteItem -operasjonen og gi forskjellige metoder for hvordan du sletter elementer ved å bruke BatchWriteItem API -anropet. Selvfølgelig vil du finne levedyktige eksempler.

Metoder for hvordan du sletter i dynamoDB

Metoder for hvordan du sletter i dynamoDB

Bruke BatchWriteItem -operasjonen

I Amazon DynamoDB kan du bruke BatchwriteItem Operasjon for å slette flere elementer fra en eller flere tabeller i en enkelt forespørsel. Verktøyet tar et forespørselsobjekt som inneholder en RequestItems Kart, der tastene er tabellnavn og verdiene er lister over Deleterequest objekter. Hver Deleterequest Objekt må ha den primære nøkkelen til elementet du vil slette.

Nedenfor er et eksempel på hvordan du kan bruke BatchwriteItem Operasjon i AWS SDK for Python (BOTO3) for å slette flere elementer fra en tabell:

Importer BOTO3
# Opprett en klient for DynamoDB
dynamodb = boto3.klient ('dynamodb')
# Definer tabellnavnet og primære nøkkelnavn
tabell_name = 'mytablename'
Key_name = 'id'
# Lag en liste over elementer som skal slettes
Items_to_Delete = [
Key_name: 's': 'item1',
Key_name: 's': 'item2',
Key_name: 's': 'item3',
]
# Utarbeide forespørselsobjektet for BatchWriteItem -operasjonen
forespørsel =
'RequestItems':
tabell_navn: [

'DeletereQuest':
'Key': Vare

For varen i Items_to_Delete
]


# Utfør batchwriteItem -operasjonen
Response = Dynamodb.batch_write_item (** forespørsel)

trykk (svar)
Du kan bruke BatchWriteItem -operasjonen med din foretrukne AWS SDK.

Batch slett elementer i dynamoDB ved hjelp av WritBatchItem -operasjonen

Du bør vurdere å bruke BatchwriteItem Operasjon i kombinasjon med en skanneoperasjon for å hente elementer som samsvarer med et spesifisert filter. Slett dem deretter i flere partier hvis du trenger veldig mange elementer som er slettet på en gang.

Koden din vil være som følger:

Importer BOTO3
# Opprett en klient for DynamoDB
dynamodb = boto3.klient ('dynamodb')
# Definer tabellnavnet og primærnøkkelnavnet
tabell_name = 'mytablename'
Key_name = 'id'
# Definer filteruttrykk og startverdier for skanningen
Filter_Expression = 'inneholder (#Att ,: val)'
expression_attribute_names = '#attr': 'noen_attributt'
expression_attribute_values ​​= ': val': 's': 'noen_value'
# Initialiser en tom liste for å lagre varene som skal slettes
items_to_delete = []
# Bruk skanneoperasjonen til å hente elementer som samsvarer med filteret
Response = Dynamodb.Skanning (
Tablename = table_name,
FilterExpression = Filter_Expression,
ExpressionAttributeNames = expression_attribute_names,
ExpressionAttributeValues ​​= expression_attribute_values
)
# Pakk ut elementene fra svaret og legg dem til listen
Items_to_delete.utvide (svar ['elementer'])
# Fortsett å iterere mens det er flere ting å hente
Mens 'LastEvaluatedKey' som svar:
Response = Dynamodb.Skanning (
Tablename = table_name,
FilterExpression = Filter_Expression,
ExpressionAttributeNames = expression_attribute_names,
ExpressionAttributeValues ​​= expression_attribute_values,
EksklusivestartKey = Response ['LastEvaluatedKey']
)
Items_to_delete.utvide (svar ['elementer'])
# Definer det maksimale antallet elementer som kan slettes i en enkelt batch
Batch_Size = 25
# Initialiser en variabel for å holde oversikt over startindeksen for neste batch
start_index = 0
# Loop til alle varene er slettet
Mens start_index < len(items_to_delete):
# Bestem sluttindeksen for gjeldende batch
END_INDEX = min (start_index + batch_size, len (Items_to_delete))
# Utarbeide forespørselsobjektet for BatchWriteItem -operasjonen
forespørsel =
'RequestItems':
tabell_navn: [

'DeletereQuest':
'Key':
Key_name: item [nøkkelnavn]


For element i Items_to_Delete [start_index: end_index]
]


# Utfør batchwriteItem -operasjonen
Dynamodb.batch_write_item (** forespørsel)
# Oppdater startindeksen for neste batch
start_index = end_index

skrive ut ('slettet elementer fra tabell '.Format (LEN (ITERSE_TO_DELETE), TABLE_NAME))

I eksemplet over, skanne Operasjon henter elementer fra tabellen som samsvarer med et spesifisert filter (noen_attributt inneholder noen_value). Elementene vil utgjøre en liste før de blir behandlet i partier av 25 (eller færre) varer samtidig ved å bruke BatchwriteItem operasjon. Skriptet løkker gjennom alle partiene med elementer og sletter dem en batch etter den andre.

Konklusjon

Batch -slettfunksjonen i DynamoDB kan øke databasens ytelse betydelig, spesielt når du arbeider med mye data. Spesielt oppfører batchwriteItem -operasjonen seg ikke som DeleteItem -kommandoen. For eksempel returnerer det ikke detaljene om de slettede elementene i svaret ditt.