Slik setter du inn DynamoDB-partisjonsnøklene

Slik Setter Du Inn Dynamodb Partisjonsnoklene



Produktiviteten til enhver database er avhengig av datatilgjengelighet siden søk etter et element fra flere objekter kan være hektisk. Ofte er hvordan du spør i databasen alltid en seriøs vurdering. Partisjonsnøklene er dine primære inngangspunkter i DynamoDB når du ønsker å gjøre svært effektive spørringer.

Vanligvis er partisjonsnøklene på tvers av tabeller unike. Dermed er det umulig å ha to eller flere elementer med samme partisjonsnøkkel i en tabell, men det motsatte kan skje når det brukes i indekser. Dessuten er partisjonsnøkler umulige å endre når du har opprettet en tabell siden de er uforanderlige.







Denne artikkelen diskuterer partisjonsnøkler. Vi vil fokusere på hvorfor du trenger partisjonsnøklene og de beste fremgangsmåtene for å følge når du setter dem. Til slutt vil vi se på hvordan DynamoDB-partisjonsnøklene er essensielle.



Hva er en DynamoDB-partisjonsnøkkel og hvorfor er den viktig?

En partisjonsnøkkel er en enkel primærnøkkel i DynamoDB, ofte bestående av et enkelt attributt. Hvert element i en DynamoDB-tabell har en unik partisjonsnøkkel for å aktivere raske og effektive spørringsprosesser.



Du kan pare en primærnøkkel med en sorteringsnøkkel for å lage en sammensatt primærnøkkel som inneholder to attributter. Når den brukes sammen, kan du organisere alle dataene under en partisjonsnøkkel ved å bruke sorteringsnøkkelverdien.





Siden DynamoDB reserverer dataene som et konsortium av attributter kalt elementer, har attributtene unike primærverdinøkler for enkel tilgjengelighet. Spesielt er elementene i DynamoDB lik poster, felt, kolonner eller rader i de fleste databasesystemer.

Videre lar DynamoDB deg distribuere dataene i partisjoner på opptil 10 GB lagringsenheter. Hver tabell kan derfor ha en eller flere partisjoner. Du kan bruke verdien til en partisjonsnøkkel som input til databasens interne hash-funksjon, med utdata fra hash-funksjonen som bestemmer partisjonen som elementet er lagret i. Dessuten bestemmer plasseringen av et element partisjonen der det er lagret.



Hvordan stille inn DynamoDB-partisjonsnøklene

Å sette partisjonsnøklene kan være en oppoverbakke oppgave hvis du ennå ikke forstår konseptet. Imidlertid kan denne prosessen være enkel og effektiv når du først har samlet de nødvendige tipsene og triksene. Følgende er noen av de beste fremgangsmåtene du bør følge når du setter opp partisjonsnøkler:

1. Velg de riktige partisjonsnøklene

Typen partisjonsnøkler bestemmer bekvemmeligheten og effektiviteten ved å søke etter dataene dine. De er de primære inngangspunktene for å spørre etter dataene dine, og det er avgjørende å definere tilgangsmønstrene til hver applikasjon.

Det anbefales å bruke attributtene med høy kardinalitet når du setter opp DynamoDB-partisjonsnøklene. Attributtene med høy kardinalitet har de distinkte verdiene for hver vare og kan inkludere ansatt-id, ansatt_nr, ordre-id, e-post-ID, kunde-ID eller ordre-ID.

2. Bruk PK-navnekonvensjonen

Partisjonsnøkler bruker ofte pk-navnekonvensjonen. Denne navnemetoden garanterer en presis navnemekanisme uten å diskriminere basert på den representerte varetypen eller modellen.

For eksempel, mens du kan bli fristet til å bruke postID og brukerID som partisjonsnøkler for Post- og brukermodeller i en tabell, tillater DynamoDB bare én partisjonsnøkkel for hver tabell. Dermed kan du ikke bruke to i en enkelt tabell. Merk at tabellene uten sorteringsnøkler kan ha ID-partisjonsnøkler.

3. Bruk sammensatte attributter

Noen tabeller drar mer nytte av sammensatte nøkler. Det vil si at du trenger mer enn et enkelt attributt for å danne de unike nøklene. For eksempel kan du enkelt bruke kunde-ID, landkode og produkt-ID for å danne en partisjonsnøkkel (kunde-ID#landskode#produktid). Samtidig kan du bruke order_id som sorteringsnøkkel.

4. Legg til tilfeldige tall på passende måte

Hvis du forventer et enormt volum av skrivinger for hver tast, vil bruk av et ekstra prefiks eller suffiks gjøre tungbrukssakene mer effektive. For eksempel kan du bruke fakturanummeret sammen med et sett med tilfeldige tall som partisjonsnøkkel. Husk å skille de ulike delene av partisjonsnøkkelen. For eksempel er InvoiceNumber#125656#0 som en partisjonsnøkkel ideell for tung bruk med tusenvis av skrivinger per sekund.

Opprett en DynamoDB-partisjonsnøkkel

I likhet med sorteringsnøkler innebærer å opprette en partisjonsnøkkel i DynamoDB å lage et nøkkelskjema for tabellen din. Dette skjer selvfølgelig når du lager en tabell. Dette innebærer ofte at du beskriver attributtet ditt ved å bruke attributtnavnet ved siden av attributttypen. Følgende syntaks vil hjelpe:

AttributName=string,KeyType=string ...

I den gitte syntaksen er attributtnavnet det faktiske navnet på attributtet, mens attributttypen enten kan være en streng(S), nummer(N) eller en binær(B).

Du kan også velge å bruke en JSON-syntaks som vist i følgende:

[

{

'AttributeName': 'streng',

'KeyType': 'HASH'

}

...

]

Uansett hvilken syntaks du velger, antar rollen til attributtet HASH-funksjonen fordi vi lager en partisjonsnøkkel. Tvert imot antar nøkkeltypen en RANGE-funksjon når du oppretter sorteringsnøklene.

Til slutt er det også mulig å endre en partisjonsnøkkel ved å bruke følgende verktøy:

DynamoDBClient.updateItem({
'TableName': 'myTable_Name',
'Nøkkel': {
'pk': {
'S': 'min_partisjonsnøkkel'
}
},
'UpdateExpression': 'SETT #emailaddress =:emailaddress',
'ExpressionAttributeNames': {
'#email': 'e-postadresse'
},
'ExpressionAttributeValues': {
':epostadresse': {
'S': ' [e-postbeskyttet] '
}
}
})

Det gitte verktøyet oppdaterer e-postattributtet ditt slik at det ser ut som det du har i [e-postbeskyttet] for elementet der partisjonsnøkkelen (pk) er lik my_PartitionKey.

Konklusjon

Når du setter opp DynamoDB-partisjonsnøklene, er det ingen enkelt universell metode. Oppretting og bruk av partisjonsnøklene avhenger av brukstilfellet. Dessuten kan du se nærmere på de ulike tilnærmingene som er tilgjengelige og finne den som passer best for din applikasjon. Sørg for at du følger de gitte retningslinjene.