DynamoDB -skannedrift

DynamoDB -skannedrift
Skanneoperasjoner er uten tvil de stumpeste instrumentene i en dynamoDB -verktøyliste. En skanneoperasjon i AWS DynamoDB leser hvert element i tabellen eller den sekundære indeksen den brukes. Det kan ta noe innenfor veien. Dermed returnerer en skanningsoperasjon som standard alle dataattributtene for hvert element i tabellen eller indeksen.

Du kan endre standard naturen til skanneoperasjoner ved å bruke projeksjonsekspresjonsparameteren, da dette bare returnerer de spesifiserte attributtene og ikke alt i indeksen eller tabellen. Spesielt kan hver skanneforespørsel bare returnere opp til 1 MB varedata og ingenting mer. Dessuten kan DynamoDB bruke et filteruttrykk på et hvilket som helst datasett og begrense resultatene før det leverer resultatene til brukeren.

Denne guiden utdyper hvordan du kan bruke skanningsoperasjonen på DynamoDB. Det forklarer når du skal bruke dynamoDB -skannedriften, hvordan filteruttrykk fungerer, lesekonsistensen av skanninger og parallelle skanninger.

Men før vi kommer til det, er det viktig å bruke skanneoperasjonen bare når du er sikker på at du trenger det. Den fungerer på hele bordet og kan bruke opp all lesekapasitet når den brukes på tabellene med reell størrelse. Når det brukes på en applikasjons kritiske vei, kan det dessuten være treg med å returnere resultatene.

Situasjoner når du skal bruke en skanning på dynamoDB -tabeller og indekser

Å bruke skanningsoperasjonen på DynamoDB er fornuftig i følgende scenarier:

  • Når bordet ditt er veldig lite
  • Når du bruker globale sekundære indekser for å sette opp arbeidskøene
  • Når du eksporterer alle dataene fra en gitt tabell til et annet lagringssystem

Utføre en grunnleggende skanning på en dynamoDB -tabell

Skanneoperasjoner er enkle å håndtere. Alt du trenger å gjøre er å spesifisere tabellenavnet ditt ved siden av AWS DynamoDB Scan -kommandoen. Et enkelt skanneverktøy skal se slik ut:

$ aws dynamoDB skanning \
--Bordnavn emplyeedata \
$ Lokal

Resultatet vises i det følgende. Merk at det er avkortet til å være kort nok til illustrasjon, siden det kan være tungvint å vise alle 35 varer i denne artikkelen.

Skanningsoperasjonen på dynamoDB ved hjelp av filteruttrykk

Den forrige responsen returnerer alle de 35 varene som er inneholdt i tabellen. Du kan imidlertid bruke -projeksjonsuttrykksparameteren for å spesifisere attributtene du er interessert i. Også kjent som filteruttrykk, denne funksjonen lar deg avgrense resultatene og bestemme de spesifikke elementene i tabellen du finner i responsen. Resultatene du ikke trenger vil ikke være i svaret.

Du bør bare bruke filteruttrykksparameteren etter at du er ferdig med fullstendig skanning og har resultatene med deg. Imidlertid vil både projeksjonsuttrykk og full dynamoDB -skanninger konsumere like store mengder lesekapasitet. Og mens skannegrensene ofte har maksimalt 1 MB data, skjer denne beregningen før evaluering av filteruttrykksresultatene.

Forsikre deg om at du spesifiserer alle attributtene du trenger i filteruttrykket. Attributtene kan omfatte partisjonstaster og sorteringsnøkler. Filteruttrykk deler samme syntaks som betingelsesuttrykk.

For eksempel skanner følgende AWS -kommandolinje -grensesnittverktøy på Employedata -tabellen og returnerer detaljene i elementene som ble lastemplete.

aws dynamodb skanning \
--Bordnavn Employeedata \
--filteruttrykk "LastEMploying =: Navn" \
--Expression-Attribute-Values ​​'": Navn": "S": "Bruker ab"'

Utføre en skanneoperasjon som overstiger 1 MB datastrense

Vi sa gang på gang at DynamoDB -skanningsoperasjonen har en datalegrense på 1 MB. Men hva som skjer når skanninger treffer 1 MB datalegrensen? Hvis du treffer 1 MB -grensen under en skanning, vil responsen inneholde en "NextToken" -tast.

Bruk verdien gitt i "NextToken" -tasten med - -starter alternativ for å fortsette skannefunksjonen der den stoppet. Du kan teste denne funksjonaliteten med - - Maks Begrensningsalternativ. I dette eksemplet, snarere enn å prøve en fullstendig skanning, skanner vi ansatte -tabellen vår, men knytter vår varegrens til maksimalt 1 som vist på følgende:

$ aws dynamoDB skanning \
--TABELL-NAME BRUKERORDERSABLE \
--Maks-elementer 1 \
$ Lokal

Responsen inneholder bare ett element. Imidlertid vil du også finne en "NextToken" -tast i resultatene for å tillate deg å fortsette med skanningen der den stoppet. Se følgende skjermbilde:

Den forrige responsen produserer bare ett element fra en tabell som inneholder 35 varer. Du kan fullføre skanningen ved hjelp av den medfølgende nextoken -tasten.

Ved hjelp av parallelle skanninger

De viktigste årsakene til at DynamoDB fortsatt er en populær database er hastigheten, fleksibiliteten og skalerbarheten. Interessant er det å bruke skanneoperasjonen også å eksportere innholdet for dataanalyse eller kjølerom.

DynamoDB -funksjoner Segmenter som lar parallelle skanninger skanne store datamengder uten å stole på en enkelt skanneprosess på hver tabell. Denne funksjonen lar deg spesifisere antall Segmenter at du vil at et bord skal deles inn og forespørslene for hvert segment. Dette gjør at datalederne kan skanne dataene fra en gitt tabell parallelt.

Mens Employedata -tabellen vår som brukes i denne opplæringen ikke har en stor mengde data, kan vi dele den inn i fire segmenter og bruke den til denne illustrasjonen. Du kan strukturere skannekommandoen din ved å definere antall segmenter og segmentnummeret du har tenkt å skanne. Mens segmenter er nullindeksert, kan bruk av 0 i degmentspesifikasjonen være en oppoverbakke oppgave.

$ aws dynamoDB skanning \
--Bordnavn Employeedata \
--Total-segmenter 4 \
--segment 1 \
$ Lokal

Resultatene inneholder bare elementene som faller innenfor det første segmentet. Responsen ser slik ut. Merk at resultatene er avkortet for kortfattethet og bare har de første og de siste varene i det første segmentet.

Konklusjon

Det handler om dynamoDB -skannedriften. Selv om det uten tvil er en av de mest uanstrengte operasjonene i AWS DynamoDB, bør du bruke den sparsomt, da den kan konsumere all din konsumeringskapasitetsfordeling. Igjen, sørg for at du vet når du kan bruke de forskjellige applikasjonene til skanningsoperasjonen.