Datamodellering i DynamoDB
Utform effektive tabellskjemaer og tilgangsmønstre for DynamoDB for å optimalisere ytelse og kostnader i applikasjonene dine.
Datamodellering i DynamoDB er en gratis leksjon i AWS for backendutviklere (EC2, S3, RDS, Lambda) på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AWS for backendutviklere (EC2, S3, RDS, Lambda), og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AWS for backendutviklere (EC2, S3, RDS, Lambda) inneholder totalt 4 leksjoner.
Hvorfor datamodellering er viktig for DynamoDB
DynamoDB er en NoSQL-database, noe som betyr at den ikke bruker tradisjonelle tabeller, rader og koblinger slik SQL gjør. Datamodellering her handler først og fremst om hvordan De skal få tilgang til dataene, ikke bare om hvordan de lagres.
- Skjemaløst: Det finnes ikke noe fast skjema, men strukturen er avgjørende for ytelsen.
- Tilgangsmønstre først: Utform tabellene rundt spørringene De skal utføre.
- Ytelse og kostnader: God modellering gir raske spørringer og lavere kostnader.
Primærnøkler: partisjon og sortering
Hvert element i DynamoDB trenger en primærnøkkel. Denne nøkkelen identifiserer hvert element entydig og bestemmer hvordan data lagres og hentes. Den kan være:
- En partisjonsnøkkel (også kalt en hash-nøkkel).
- En sammensatt partisjonsnøkkel og sorteringsnøkkel (også kalt en områdenøkkel).
Forstå partisjonsnøkkelen (PK)
Partisjonsnøkkelen (PK) bestemmer den fysiske partisjonen (lagringsstedet) der dataene befinner seg.
- Entydighet: Hvis bare en PK brukes, må den være unik for hvert element.
- Distribusjon: En god PK fordeler data jevnt mellom partisjonene og forhindrer «hete partisjoner», som kan redusere ytelsen.
- Direkte tilgang: De kan bare spørre etter et element direkte hvis De kjenner partisjonsnøkkelen.
Utnytte sorteringsnøkkelen (SK)
Når De bruker både en partisjonsnøkkel og en sorteringsnøkkel (SK), grupperes elementer med samme partisjonsnøkkel sammen og sorteres etter sorteringsnøkkelen.
- Unik kombinasjon: Kombinasjonen av PK og SK må være unik.
- Områdespørringer: Muliggjør effektive områdespørringer (for eksempel å hente alle bestillinger fra et bestemt datointervall for en bruker).
- Fleksibel sortering: Gjør det mulig å bruke ulik sortering innenfor samme partisjon.
Tilgangsmønstre: veiledning for utformingen
I motsetning til relasjonsdatabaser, der De utformer tabeller og deretter finner ut hvilke spørringer som trengs, bør De med DynamoDB først liste opp alle applikasjonens tilgangsmønstre.
- Identifiser spørringer: Hvilke data trenger De? Hvordan skal De hente dem?
- Eksempler: «Hent brukerprofil etter
userId», «List opp alle produkter ettercategory», «Finn alle kommentarer for enpostId».
Tabellutformingen Deres (PK, SK, indekser) bør støtte disse mønstrene direkte.
Introduksjon til design med én tabell
Et vanlig og kraftig DynamoDB-mønster er design med én tabell. Det betyr at flere ulike entitetstyper (for eksempel Users, Orders og Products) lagres i én enkelt tabell.
- Fordeler: Reduserer driftsarbeidet, muliggjør effektive «mange-til-mange»-relasjoner og kan være mer kostnadseffektivt.
- Slik fungerer det: Bruker generiske attributtnavn som
PKogSKsamt prefikser (for eksempelUSER#<id>,ORDER#<id>) for å skille mellom entitetstyper.
Spørringer med globale sekundærindekser (GSI-er)
Hva om De trenger å spørre etter data ved hjelp av et attributt som ikke er en del av primærnøkkelen? Det er her globale sekundærindekser (GSI-er) kommer inn.
- Nye nøkler: En GSI har sin egen partisjonsnøkkel og en valgfri sorteringsnøkkel, som kan være hvilke som helst attributter fra grunntabellen.
- Uavhengig: Den er en helt separat tabell som DynamoDB vedlikeholder, slik at den kan støtte andre tilgangsmønstre.
- Eventuelt konsistent: GSI-er er eventuelt konsistente, noe som betyr at det kan ta litt tid før endringer blir spredd.
Forbedre partisjoner med lokale sekundærindekser (LSI-er)
Lokale sekundærindekser (LSI-er) gjør det mulig å spørre etter data med en annen sorteringsnøkkel innenfor den samme partisjonsnøkkelen som grunntabellen.
- Samme PK, annen SK: LSI-er deler partisjonsnøkkel med grunntabellen, men har en annen sorteringsnøkkel.
- Sterkt konsistente: I motsetning til GSI-er støtter LSI-er sterkt konsistente lesinger.
- Begrenset: Må defineres når tabellen opprettes, og De kan ha opptil fem per tabell.
Praktisk modellering: brukerinnlegg
La oss modellere et enkelt scenario: brukere og innleggene deres. Vi ønsker å:
- Tilgangsmønster 1: Hente en brukers profil.
- Tilgangsmønster 2: Hente alle innlegg fra en bruker, sortert etter dato.
Med design med én tabell:
PK:USER#<userId>SK:#METADATA#(for brukerprofilen),POST#<postId>(for innlegg)
Da kan De hente en brukers profil og innleggene deres med én enkelt spørring mot USER#<userId>-partisjonen.
Hurtigsjekk: Indekstyper
De har en DynamoDB-tabell som lagrer kundeordrer. Primærnøkkelen er customerId (partisjonsnøkkel) og orderId (sorteringsnøkkel).
De trenger ofte å spørre etter ordrer etter orderDate for en bestemt kunde. Hvilken type indeks egner seg best?
Oppsummering: Mestre DynamoDB-design
Vi har gått gjennom det viktigste innen datamodellering i DynamoDB:
- Forstå hvordan partisjonsnøkler og sorteringsnøkler definerer datastrukturen.
- Utforme løsningen rundt tilgangsmønstre, ikke bare datarelasjoner.
- Utnytte fordelene ved design med én tabell for effektivitet.
- Bruke globale sekundærindekser (GSI-er) for ulike spørringer.
- Bruke lokale sekundærindekser (LSI-er) for alternativ sortering innenfor en partisjon.
Effektiv datamodellering er avgjørende for optimal ytelse og kostnad i DynamoDB!
Lær deg AWS for backendutviklere (EC2, S3, RDS, Lambda) med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Datamodellering i DynamoDB» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien AWS for backendutviklere (EC2, S3, RDS, Lambda), inkludert «Datamodellering i DynamoDB», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i AWS for backendutviklere (EC2, S3, RDS, Lambda) inneholder totalt 4 leksjoner.
Hva lærer jeg i «Datamodellering i DynamoDB»?
Utform effektive tabellskjemaer og tilgangsmønstre for DynamoDB for å optimalisere ytelse og kostnader i applikasjonene dine. Du øver på AWS for backendutviklere (EC2, S3, RDS, Lambda) med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AWS for backendutviklere (EC2, S3, RDS, Lambda)?
Ingen tidligere erfaring er nødvendig. AWS for backendutviklere (EC2, S3, RDS, Lambda) på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Datamodellering i DynamoDB»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AWS for backendutviklere (EC2, S3, RDS, Lambda)-leksjonen?
Ja. Alle AWS for backendutviklere (EC2, S3, RDS, Lambda)-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- RDS-lesereplikater og Multi-AZ
- Introduksjon til DynamoDB
- Datamodellering i DynamoDB
- DynamoDB Streams og globale tabeller