DynamoDB Cheatsheet - Alt hvad du behøver at vide om Amazon Dynamo DB til 2020 AWS Certified Developer Associate Certification

Fremkomsten af ​​cloudtjenester har ændret den måde, vi bygger webapplikationer på. Dette har igen ændret ansvaret for en webudvikler.

Vi plejede at bygge alt i en enkelt webapplikation på en enkelt server. Dette omfattede flere ansvarsområder såsom opbevaring, databaser, godkendelse, baggrundsjob, caching og mere.

Cloudtjenester giver os mulighed for at reducere kompleksiteten af ​​vores webapp og webservere ved at skubbe ansvaret til disse meget tilgængelige, skalerbare og holdbare cloudtjenester.

En webudvikler, der ved, hvordan man implementerer og integrerer cloud-tjenester med en webapplikation, er det, vi kalder en Cloud Engineer.

Hvis du vil spore din karriere som webudvikler i 2020, kan AWS Developer Associate Certification hjælpe dig med at nå dette slutmål.

Den vigtigste AWS-tjeneste, du skal studere for at bestå den AWS Developer Associate-eksamen, er DynamoDB. Så jeg har frigivet det, jeg kalder The Ultimate DynamoDB Cheatsheet gratis. Du kan udskrive dette på dagen for din eksamen for at øge dine chancer for at bestå.

Det var Nader AWS Developer Advocate for AWS Amplify, der foreslog, at jeg frigiver hele mit cheatsheet gratis. Du ville ikke have denne ressource, hvis det ikke var for ham.

Det var Kirk AWS seniorteknolog med speciale i DynamoDB, der frivilligt stillede sin tid til at sikre nøjagtigheden af ​​dette cheatsheet. Dette gjorde det fra 5 sider til 8 sider! ????????

Hvis du har Twitter, bedes du takke dem ved at tweet på @ dabit3 og @NoSQLKnowHow med #AWSCertified hashtag.

Så lad os gå videre til cheatsheet:

Grundlæggende om DynamoDB

DynamoDB er en fuldt administreret NoSQL-nøgle / værdi og dokumentdatabase.

DynamoDB er velegnet til arbejdsbelastninger med en hvilken som helst datamængde, der kræver forudsigelig læse- og skriveydelse og automatisk skalering fra stor til lille og overalt imellem.

DynamoDB skalerer op og ned for at understøtte den læse- og skrivekapacitet, du angiver pr. Sekund i klargjort kapacitetstilstand. Eller du kan indstille det til On-Demand-tilstand, og der er ringe eller ingen kapacitetsplanlægning.

  • DynamoDB gemmer 3 kopier af data på SSD-drev på tværs af 3 AZ'er i en region.
  • DynamoDBs mest almindelige datatyper er B (Binary), N (Number) og S (String)
  • Tabeller består af varer (rækker) og elementer består af attributter (kolonner)

Læser og skriver konsistens

DynamoDB kan indstilles til at understøtte Eventuelt konsistente læsninger (standard) og stærkt konsekvente læsninger pr. Opkald.

Til sidst returneres konsistente læste data med det samme, men data kan være inkonsekvente. Kopier af data vil generelt være ensartede på 1 sekund.

Stærkt konsekvente læsninger læser altid fra lederpartitionen, da den altid har en opdateret kopi. Data vil aldrig være inkonsekvente, men ventetid kan være højere. Kopier af data er i overensstemmelse med en garanti på 1 sekund.

Skillevægge

En partition er, når DynamoDB skærer din tabel op i mindre klumper af data. Dette fremskynder læser for meget store tabeller.

DynamoDB opretter automatisk partitioner til:

  • Hver 10 GB data eller
  • Når du overskrider RCU'er (3000) eller WCU'er (1000), er grænserne for en enkelt partition
  • Når DynamoDB ser et mønster af en varm partition, vil den opdele denne partition i et forsøg på at løse problemet.

DynamoDB vil prøve at fordele RCU'er og WCU'er jævnt på tværs af partitioner

Primær nøgledesign

Primære nøgler definerer, hvor og hvordan dine data skal gemmes i partitioner

Nøgleskemaet kan bestå af to nøgler:

  • Partition Key (PK) er også kendt som HASH
  • DetSort Key (SK) er også kendt som RANGE
Når du bruger AWS DynamoDB API f.eks. CLI, SDK de henviser til PK og SK ved deres alternative navne på grund af ældre grunde.

Primærnøgle findes i to typer:

  • Enkel primær nøgle (bruger kun en partitionsnøgle)
  • Composite Primary Key (Brug både en partition og en sorteringsnøgle)

Nøgle unikhed er som følger:

  • Når du opretter en simpel primær nøgle, kan PK- værdien være unik
  • Når du opretter en sammensat primær nøgle, skal den kombinerede PK og SK være unik

Når du bruger en sorteringsnøgle, grupperes poster på partitionen logisk i stigende rækkefølge.

Sekundære indekser

DynamoDB har to typer indekser:

  • LSI - Lokalt sekundært indeks
  • GSI - Global Secondary Index

LSI - Lokalt sekundært indeks

  • Understøtter stærkt eller eventuelt konsistens læser
  • Kan kun oprettes med den indledende tabel (kan ikke ændres eller og kan ikke slettes, medmindre den også slettes)
  • Kun sammensat
  • 10 GB eller mindre pr. Partition
  • Del kapacitetsenheder med basistabel
  • Skal dele partitionsnøgle (PK) med basistabel.

GSI - Global Secondary Index

  • Kun eventuel konsistens læser (kan ikke give stærk konsistens)
  • Kan til enhver tid oprette, ændre eller slette
  • Enkel og sammensat
  • Kan have uanset attributter som primær nøgle (PK) eller sekundær nøgle (SK)
  • Ingen størrelsesbegrænsning pr. Partition
  • Har sine egne kapacitetsindstillinger (deler ikke med basistabel)

Scan

Din tabel (r) skal være designet på en sådan måde, at dine primære adgangsmønstre for arbejdsbelastning ikke bruger scanninger. Samlet set skal der være behov for scanninger sparsomt, for eksempel for en sjælden rapport.

  • Scanner gennem alle emner i en tabel og returnerer derefter et eller flere emner gennem filtre
  • Som standard returnerer alle attributter for hvert element (brug ProjectExpression til at begrænse)
  • Scanninger er sekventielle, og du kan fremskynde en scanning gennem parallelle scanninger ved hjælp af segmenter og samlede segmenter
  • Scanninger kan være langsomme, især med meget store tabeller og kan nemt forbruge din klargjorte kapacitet.
  • Scanninger er en af ​​de dyreste måder at få adgang til data i DynamoDB.

Forespørgsel

  • Find emner baseret på primære nøgleværdier
  • Tabel skal have en sammensat nøgle for at kunne spørge
  • Forespørgsler er som standard konsekvent konsistente (brug ConsistentRead True til at ændre stærkt konsekvent)
  • Returnerer som standard alle attributter for hvert element, der findes i en forespørgsel (brug ProjectExpression til at begrænse)
  • Som standard er sorteret stigende (brug ScanIndexForward til False for at vende rækkefølge til faldende)

Kapacitetstilstande

DynamoDB har to kapacitetstilstande, Provisioned og On-Demand . Du kan skifte mellem disse tilstande en gang i døgnet .

Forudsat

Foreskrevet kapacitet er den maksimale kapacitet, som din applikation har lov til at læse eller skrive pr. Sekund fra en tabel eller et indeks

  • Forudsat er velegnet til forudsigelige eller steady state arbejdsbelastninger
  • RCU'er er enhed til læsekapacitet
  • WCU'er er skrivekapacitetsenhed

Du skal aktivere autoskalering med forudsat kapacitetstilstand. I denne tilstand indstiller du et gulv og loft til den kapacitet, som bordet skal understøtte. DynamoDB tilføjer og fjerner automatisk kapacitet mellem disse værdier på dine vegne og gashåndtag, der går over loftet for længe.

Hvis du går ud over din tildelte kapacitet, får du en undtagelse:   ProvisionedThroughputExceededException (throttling)

Begrænsning er, når anmodninger blokeres på grund af læse- eller skrivefrekvens, der er højere end de indstillede tærskler. F.eks. Overskrider den indstillede tildelte kapacitet, opdeling af partitioner, uoverensstemmelse mellem tabel / indekskapacitet.

Efterspørgsel

On-Demand-kapacitet er betaling pr. Anmodning. Så du betaler kun for det, du bruger.

  • On-Demand er velegnet til nye eller uforudsigelige arbejdsbelastninger
  • Gennemstrømningen er kun begrænset af standard øvre grænser for en tabel (40K RCU'er og 40K WCU'er)
  • Drossel kan forekomme, hvis du overstiger det dobbelte af din tidligere peak-kapacitet (højt vandmærke) inden for 30 minutter. For eksempel, hvis du tidligere toppede til et maksimum på 30.000 ops / sek, kunne du ikke toppede straks til 90.000 ops / sek, men du kunne til 60.000 ops / sek.
  • Da der ikke er nogen hård grænse, kan On-Demand blive meget dyrt baseret på nye scenarier

Beregning af læser og skriver

Beregning af læsninger (RCU)

En læsekapacitetsenhed repræsenterer:

  • en stærkt konsistent læsning pr. sekund,
  • eller to til sidst ensartede læsninger pr. sekund,
  • for en vare op til 4 KB i størrelse.

Sådan beregnes RCU'er for stærke

  1. Rund data op til nærmeste 4.
  2. Del data med 4
  3. Gange efter antal læsninger

Her er et eksempel:

  • 50 læser med 40 KB pr. Vare. (40/4) x 50 = 500 RCU'er
  • 10 læser med 6 KB pr. Vare. (8/4) x 10 = 20 RCU'er
  • 33 læser med 17 KB pr. Vare. (20/4) x 33 = 132 RCU'er

Sådan beregnes RCU'er for eventuel

  1. Rund data op til nærmeste 4.
  2. Del data med 4
  3. Gange efter antal læsninger
  4. Del det endelige nummer med 2
  5. Rund op til nærmeste heltal

Her er et eksempel:

  • 50 læser med 40 KB pr. Vare. (40/4) x 50/2 = 250 RCU'er
  • 11 læser med 9 KB pr. Vare. (12/4) x 11/2 = 17 RCU'er
  • 14 læser med 24 KB pr. Vare. (24/4) x 14/2 = 35 RCU'er

Beregning af skrivning (skrivning)

En skrivekapacitetsenhed repræsenterer:

  • en skrivning pr. sekund,
  • for en vare op til 1 KB

Sådan beregnes Writes

  1. Rund data op til nærmeste 1.
  2. Gange efter antal skrivninger

Her er et eksempel:

  • 50 skriver med 40 KB pr. Vare. 40 x 50 = 2000 WCU'er
  • 11 skriver med 1 KB pr. Vare. 1 x 11 = 11 WCU'er
  • 18 skriver med 500 BYTES pr. Vare. 1 x 18 = 18 WCU'er

DynamoDB-accelerator

DynamoDB Accelerator (DAX) er en fuldt administreret in-memory skrivning gennem cache til DynamoDB, der kører i en klynge

  • Læsning er i sidste ende konsistent
  • Indgående anmodninger fordeles jævnt på alle knudepunkterne i klyngen.
  • DAX kan reducere læsetiden til mikrosekunder

DAX er ideel til:

  • hurtigste svartider mulig
  • apps, der læser et lille antal ting oftere
  • apps, der læses intensivt

DAX er ikke ideel til:

  • Apps, der kræver meget ensartede læsninger
  • Apps, der ikke kræver responstid for mikrosekundlæsning
  • Apps, der er skriveintensive , eller som ikke udfører meget læseaktivitet
  • Hvis du ikke har brug for DAX, skal du overveje at bruge ElastiCache

DynamoDB-transaktioner

DynamoDB understøtter transaktioner via TransactWriteItems og TransactGetItems API-opkald.

Transaktioner giver dig mulighed for at forespørge på flere tabeller på én gang og er en alt-eller-intet tilgang (alle API-opkald skal lykkes).

Globale tabeller

DynamoDB Global tabeller giver en fuldt administreret løsning til implementering af multi-region, multi-master databaser .

Strømme

DynamoDB Streams giver dig mulighed for at oprette en Lambda-funktion, der udløses hver gang data ændres i en tabel for at reagere på ændringer. Streams forbruger ikke RCU'er.

DynamoDB API

DynamoDB APIs mest bemærkelsesværdige kommandoer via CLI:   aws dynamodb

aws dynamodb get-item returnerer et sæt attributter for elementet med den givne primære nøgle. Hvis der ikke er noget matchende element, returnerer det ikke nogen data, og der vil ikke være noget elementelement i svaret.

aws dynamodb put-item Opretter et nyt element eller erstatter et gammelt element med et nyt element. Hvis et element, der har den samme primære nøgle som det nye element, allerede findes i den angivne tabel, erstatter det nye element det eksisterende element fuldstændigt.

aws dynamodb- opdateringselement Redigerer et eksisterende artikels attributter eller tilføjer et nyt element til tabellen, hvis det ikke allerede findes.

aws dynamodb batch-get-item returnerer attributterne for en eller flere varer fra en eller flere tabeller. Du identificerer anmodede varer ved hjælp af primærnøgle. En enkelt handling kan hente op til 16 MB data , som kan indeholde så mange som 100 elementer .

aws dynamodb batch-skriv-element sætter eller sletter flere elementer i en eller flere tabeller. Kan skrive op til 16 MB data , som kan omfatte så mange som 25 sæt eller slet anmodninger . Individuelle emner, der skal skrives, kan være så store som 400 KB .

aws dynamodb create-table føjer en ny tabel til din konto. Tabelnavne skal være unikke inden for hver region.

aws dynamodb- opdateringstabel Ændrer de klargjorte gennemløbsindstillinger, globale sekundære indekser eller DynamoDB Streams-indstillinger for en given tabel.

aws dynamodb delete-table operation sletter en tabel og alle dens emner.

aws dynamodb transact-get-items er en synkron handling, der atomisk henter flere elementer fra en eller flere tabeller (men ikke fra indekser) i en enkelt konto og region. Opkald kan indeholde op til 25 objekter . Den samlede størrelse af varerne i transaktionen kan ikke overstige 4 MB .

aws dynamodb transact-write-items en synkron skriveoperation, der grupperer op til 25 handlingsanmodninger . Disse handlinger kan målrette mod elementer i forskellige tabeller, men ikke i forskellige AWS-konti eller -regioner, og ikke to handlinger kan målrette mod det samme element.

aws dynamodb- forespørgsel finder emner baseret på primære nøgleværdier. Du kan forespørge på tabel eller sekundært indeks, der har en sammensat primærnøgle.

aws dynamodb- scanning returnerer et eller flere elementer og attributter ved at få adgang til hvert element i en tabel eller et sekundært indeks.

? #rocketsToMars

Jeg vil gerne hjælpe dig med at komme ind på nettet og cloud-industrien Derfor frigiver jeg mit gratis AWS Developer Associate Certification 2020- kursus på freeCodeCamp YouTube-kanalen med 10+ timers ekstra indhold, som jeg aldrig tidligere har frigivet.

Dette gratis kursus frigives om et par dage, når jeg lægger den sidste hånd.

Jeg tror på at gøre teknologisk uddannelse tilgængelig for verden, fordi jo mere vi kvalificerer os, jo hurtigere kan vi løfte folk ud af fattigdom, jo ​​hurtigere kan vi konstruere bæredygtige løsninger til at holde vores planet grøn og sund, og jo hurtigere kan vi lancere raketter til Mars.