DynamoDB-paginering: Oversikt, brukstilfeller og eksempler

Dynamodb Paginering Oversikt Brukstilfeller Og Eksempler



Å administrere omfangsrike datamengder kan være en oppoverbakke oppgave for databehandlere, hovedsakelig hvis søke- eller skanneresultatene dine går på flere sider. Paginering i DynamoDB gjør det mulig for databasen å håndtere de store datamengdene ved å dele opp resultatene i flere håndterbare sider. Denne oppskriften forklarer DynamoDB-pagineringen og gir ulike mulige bruksområder og eksempler. Den fremhever også hvordan pagineringen i DynamoDB skiller seg fra pagineringen i andre databaser.

Hva er paginering i DynamoDB?

Generelt er paginering, avledet fra ordet sider, en teknikk som brukes av databaser for å dele opp datapostene i flere biter, segmenter eller sider. Og siden AWS DynamoDB støtter lagring av store datamengder, har den pålitelige pagineringsfunksjoner.







DynamoDB-pagineringskomponenten sikrer at du bare kan hente opptil 1 GB data per skanning eller spørring. Selv om det er en standardinnstilling, kan du legge til en grenseparameter i en spørring for å spesifisere en grense. Du kan videre angi en grense for antall poster i hver skannespørring.



Spesielt er det noen få forskjeller mellom paginering i DynamoDB og paginering i en typisk SQL-database. Mest åpenbart kommer hver paginerte post som hentes i DynamoDB med en direkte kostnad, noe som gjør dette til en uskreven regel når du bruker paginering i DynamoDB. Denne funksjonen gjør paginering til en viktig faktor for å begrense både de hentede postene og direkte kostnader.



Slik bruker du paginering i DynamoDB





1. Paginering under en spørringsoperasjon

I DynamoDB returnerer en spørring kun resultatene på opptil 1 MB. Men du kan effektivt bekrefte om det er flere resultater ved å granske resultatene dine. Spesielt inneholder et lavnivå spørringsoperasjonsresultat et LastEvaluatedKey-element som ikke er null for å indikere at det er flere elementer relatert til spørringen din som du bør hente.

Et resultat uten et LastEvaluatedKey-element som ikke er null, innebærer at alle elementene som samsvarer med søket, passer innenfor 1 MB-grensen og at det ikke er flere elementer for gjenfinning. Du kan selvfølgelig også sette en grense for antall elementer per resultat. Se følgende eksempelkommando:



aws dynamodb spørring \

--tabellnavn MyTableName \

--nøkkel-betingelse-uttrykk 'Partisjonsnøkkel = :pk \

--expression-attribute-values ​​'{'
:pk ':{' S ':' a1234b '}},

--grense 10 \

Du kan bruke den forrige kommandoen til å spørre tabellen om elementene med de samme nøkkelbetingelsesuttrykksverdiene. La oss søke i vår 'Ordre'-tabell for ordre_IDer fra Darry Tech. Vi har også satt en grense til 10 varer per side. Et annet alternativ for –limit-parameteren er å bruke –page-size-parameteren til samme formål.

Paginering er en automatisk operasjon i AWS CLI for elementer under 1 MB med data. Du kan legge til en eksklusiv startnøkkel til kommandoen hvis du vil at søket skal starte fra en bestemt ordre.

Svaret ser slik ut:

De oppgitte resultatene viser 10 Darry Tech på første side. Du kan bruke LastEvaluatedKey-verdiene for å få flere bestillinger som samsvarer med uttrykksnøkkelverdiene for søket for å konstruere et nytt søk. Den nye spørringsforespørselen inneholder LastEvaluatedKey-verdiene i ExclusiveStartKey-parameteren.

Et eksempel på syntaksen er vist i følgende:

aws dynamodb spørring \

--tabellnavn Eksempeltabell \

--nøkkel-betingelse-uttrykk 'Partisjonsnøkkel = :pk \

--expression-attribute-values ​​'{'
:pk ':{' S ': Darry Tech ' \

--grense 10 \

--exclusive-start-key '{'
Partisjonsnøkkel ':{' S ': Darry Tech' }, 'Sorteringsnøkkel' :{ 'S' : '5356' }} '

Den forrige kommandoen produserer de neste motregningsordrene på neste side, og starter med ordre-ID-en som har den spesifiserte primærnøkkelen, dvs. {“PartitionKey”:{“S”: Darry Tech”},”SortKey”:{“S”: ”5356-sy”}}.

2. Paginering under skanneoperasjoner

Det er også mulig å bruke paginering for skanneoperasjoner. Alt fungerer på samme måte som med spørringskommandoene. Du må imidlertid bruke filter-expression-attributtet. Kommandoen ser ut som det vi har her:

aws dynamodb skanning \

--tabellnavn MyTable \

--filter-uttrykk 'Attributtnavn = :verdi' \

--uttrykk-attributt-verdier '{':value':{'S':'ABC123'}}' \

--grense tjue \

--eksklusiv-startnøkkel '{'PartitionKey':{'S':'ABC123'},'SortKey':{'S':'XYZ987'}}'

Den forrige kommandoen trekker ut opptil 20 elementer per side fra MyTable-tabellen, og starter med elementet hvis primærnøkkel er {'PartitionKey': 'ABC123', 'SortKey': 'XYZ987'}. Den filtrerer resultatene til å inkludere bare elementene der AttributeName-attributtet har 'ABC123'-verdien.

I svaret er det LastEvaluatedKey feltet inneholder primærnøkkelen til det siste elementet i resultatsettet. Du kan bruke denne verdien som ExclusiveStartKey i en påfølgende skanning operasjon for å hente neste side med resultater.

Konklusjon

Paginering i DynamoDB forbedrer håndteringen av data. Det er imidlertid viktig å vite om systemene dine vil ha nytte av paginering. Det er nødvendig å bruke paginering hvis du har en lang liste med elementer i en applikasjon. Mens den medfølgende illustrasjonen fokuserer på AWS CLI-kallet, kan du også bruke paginering med AWS SDK-er som Pythons Boto3 eller en hvilken som helst SDK du foretrekker.