DynamoDB er en fuldt ad­mi­ni­stre­ret, serverløs NoSQL-database udviklet af Amazon. Dens sømløse skalering, re­spon­s­ti­der på mil­li­se­kun­der, minimale driftsom­kost­nin­ger og nem AWS-in­te­gra­tion er vigtige fordele. An­ven­del­ses­mu­lig­he­der­ne spænder fra softwa­re­ud­vik­ling til skalering af spil­p­lat­for­me og streaming af video i realtid.

Hvad er DynamoDB?

Amazon DynamoDB er en serverløs NoSQL-da­ta­ba­se­tje­ne­ste til moderne ap­pli­ka­tio­ner i alle stør­rel­ser og har været leveret af AWS (Amazon Web Services) siden 2012. I mod­sæt­ning til mange kon­kur­ren­ter er DynamoDB en fuldt ad­mi­ni­stre­ret løsning. Derfor er der ikke behov for at håndtere opgaver som op­gra­de­rin­ger, op­da­te­rin­ger eller skalering. Da­ta­ba­sesty­rings­sy­ste­met tilbyder også en bred vifte af sik­ker­heds­funk­tio­ner og over­hol­del­ses­stan­dar­der. Desuden in­te­gre­res DynamoDB pro­blem­frit med andre AWS-tjenester som Lambda eller Amazon Open­Search Service.

Struk­tu­ren i DynamoDB

Da­ta­ba­se­struk­tu­ren har en klar hierarki med tabeller som de øverste enheder, uden strenge re­la­tio­ner mellem dem, i mod­sæt­ning til re­la­tio­nel­le databaser. Amazon DynamoDB gemmer data i par­ti­tio­ner, som au­to­ma­tisk repli­ke­res. Hver partition består af tre noder, der hver in­de­hol­der en kopi af dataene, hvilket muliggør nem skalering og giver redundans i tilfælde af en nodefejl. Udviklere gemmer poster som at­tri­but­ter og tildeler dem en unik primær nøgle. Databasen un­der­støt­ter både nøgle-værdi-da­ta­mo­del­ler og do­ku­men­t­o­ri­en­te­re­de modeller.

Ta­belklas­ser i AWS DynamoDB

Ved at bruge ta­belklas­ser kan DynamoDB-tablers ydeevne og om­kost­nings­struk­tur optimeres. Brugere kan vælge mellem to klasser og skifte mellem dem to gange inden for 30 dage uden nedetid for at tilpasse om­kost­nin­ger­ne til brugs­møn­stre.

  • DynamoDB Standard er designet som stan­dard­ta­bel­lklas­se til højty­den­de ar­bejds­be­last­nin­ger og tabeller med ufor­ud­si­ge­li­ge ar­bejds­be­last­nin­ger. Til sam­men­lig­ning er stan­dard­ta­bel­ler ken­de­teg­net ved lavere om­kost­nin­ger til læse- og skri­ve­o­pe­ra­tio­ner.
  • DynamoDB Standard In­frequent Access er optimeret til tabeller, hvor la­ger­plads er den største om­kost­nings­fak­tor. IA-stan­dard­ta­bel­ler tilbyder lavere la­gerom­kost­nin­ger. Klassen er også ideel til tabeller med data, der sjældent tilgås.

Hvilke funk­tio­ner tilbyder DynamoDB?

DynamoDB tilbyder en række kraft­ful­de funk­tio­ner, der muliggør ska­ler­ba­re, højt til­gæn­ge­li­ge og re­spon­si­ve ap­pli­ka­tio­ner. Følgende oversigt op­sum­me­rer de vigtigste funk­tio­ner:

  • Nøgle-værdi- og do­ku­ment­da­ta­mo­del­ler: Databasen har et flek­si­belt skema, der gør det muligt at tildele mange for­skel­li­ge at­tri­but­ter til in­di­vi­du­el­le elementer.
  • ACID-transak­tio­ner: NoSQL-databasen leverer transak­tio­ner med ato­mi­ci­tet, kon­si­stens, isolation og hold­bar­hed – kendt som ACID – til en bred vifte af ap­pli­ka­tio­ner. Dette gør det muligt at udvide ska­ler­bar­he­den og ydeevnen af DynamoDB til en bredere vifte af for­ret­nings­kri­ti­ske processer.
  • Globale tabeller med aktiv-aktiv repli­ke­ring: DynamoDB globale tabeller er mul­ti­ak­ti­ve, hvilket giver brugerne mulighed for at skrive til og læse fra enhver replika. Ka­pa­ci­te­ten tilpasses au­to­ma­tisk til regionale ar­bejds­be­last­nin­ger.
  • DynamoDB Streams: Denne funktion re­gi­stre­rer æn­drings­da­ta. Når et element oprettes, opdateres eller slettes i en tabel, re­gi­stre­rer DynamoDB Streams be­gi­ven­he­den og gemmer den i 24 timer.
  • Sekundære indekser: DynamoDB tillader både lokale og globale sekundære indekser for at muliggøre fo­re­spørgs­ler ved hjælp af al­ter­na­ti­ve nøgler. De kan eventuelt im­ple­men­te­res som sparsomme indekser for specifikt kun at indeksere del­mæng­der af dataene.
  • Au­to­ma­tisk par­ti­tio­ne­ring: Data di­stri­bu­e­res au­to­ma­tisk på tværs af flere par­ti­tio­ner og skaleres efter behov.
  • Sik­ker­heds­funk­tio­ner: Databasen tilbyder om­fat­ten­de funk­tio­ner, der sikrer sik­ker­he­den af dine data. Disse omfatter de­tal­je­re­de ad­gangs­kon­trol­funk­tio­ner, kryp­te­ring i hvile, punkt­genop­ret­ning, on-demand-backups og privat net­værks­for­bin­del­se.
  • Ka­pa­ci­tets­mo­del­ler: Brugere har mulighed for at vælge mellem en on-demand ka­pa­ci­tets­mo­dus og en for­ud­be­stemt ka­pa­ci­tets­mo­dus.
  • DynamoDB Ac­ce­le­ra­tor (DAX): Dette er en valgfri tjeneste til forbedret caching, der øger ydeevnen op til ti gange.

Fordele og ulemper ved Amazon DynamoDB

Amazons NoSQL-tjeneste DynamoDB imponerer især med følgende:

  • Au­to­ma­tisk skalering: AWS DynamoDB justerer dynamisk kapacitet og par­ti­tio­ne­ring, så den passer til gen­nem­strøm­nin­gen, hvilket muliggør ube­græn­set ho­ri­son­tal vækst.
  • Serverløs ar­ki­tek­tur: Da­ta­ba­sesty­rings­sy­ste­met er fuldt ad­mi­ni­stre­ret. Dette giver brugerne mulighed for at fokusere ude­luk­ken­de på ap­pli­ka­tions­ud­vik­ling i stedet for at skulle kon­cen­tre­re sig om den un­der­lig­gen­de in­fra­struk­tur.
  • Høj til­gæn­ge­lig­hed: Databaser i flere regioner og au­to­ma­tisk repli­ke­ring sikrer en til­gæn­ge­lig­hed på op til 99,999 %.
  • Lav latenstid: NoSQL-databasen giver som standard læse- og skri­ve­ad­gang med en latenstid på under 10 mil­li­se­kun­der. Med DynamoDB Ac­ce­le­ra­tor kan re­spon­s­ti­der­ne endda reduceres til mi­kro­se­kun­der, hvis det er nød­ven­digt.
  • Enkel AWS-in­te­gra­tion: Den sømløse in­te­gra­tion af AWS-tjenester som CloudWatch eller Kinesis udvider DynamoDB’s funk­tio­na­li­tet og muliggør yder­li­ge­re da­ta­a­na­ly­ser.

Selvom fordelene klart opvejer ulemperne, og DynamoDB helt klart er blandt de bedste SQL-al­ter­na­ti­ver, har plat­for­men også nogle svagheder. På den ene side tilbyder databasen kun be­græn­se­de sø­ge­mu­lig­he­der, som er mindre om­fat­ten­de end mange kon­kur­re­ren­de tilbud. På den anden side gør den tætte in­te­gra­tion med AWS-tjenester migration til andre platforme van­ske­li­ge­re. Med on-demand-modeller er der også en risiko for, at spids­be­last­nin­ger i ef­ter­spørgs­len kan føre til ufor­ud­si­ge­ligt høje gebyrer.

Hvilke an­ven­del­ses­om­rå­der er DynamoDB velegnet til?

DynamoDB er specielt designet til ar­bejds­be­last­nin­ger, hvor enorme mængder data skal behandles, skaleres og leveres med meget lav latenstid og høj til­gæn­ge­lig­hed. Typiske an­ven­del­ses­til­fæl­de omfatter:

  • Ser­ver­lø­se we­bap­pli­ka­tio­ner og mobile backends, hvor kontodata, sessioner og kon­fi­gu­ra­tio­ner hentes med minimal ventetid
  • Spil­p­lat­for­me, hvor hund­redt­u­sin­der eller millioner af brugere får adgang til spil­ser­ve­re samtidigt
  • Streaming af indhold til et globalt publikum med ujævn eller pludselig stigende trafik
  • Banker og fi­nan­si­el­le ser­vi­ce­virk­som­he­der, der skal behandle mange transak­tio­ner samtidigt og i realtid, samtidig med at de står over for ud­for­drin­gen med at sikre ret­ti­dig­hed og sikkerhed i fi­nan­si­el­le transak­tio­ner
  • IoT-ap­pli­ka­tio­ner (IoT = Internet of Things), der behandler og lagrer sen­sor­da­ta i stor skala

De vigtigste al­ter­na­ti­ver til DynamoDB

Ud over DynamoDB findes der andre da­ta­ba­se­sy­ste­mer, der kan fungere som al­ter­na­ti­ver afhængigt af krav, datamodel, skalering og in­fra­struk­tur. Disse omfatter primært:

  • MongoDB: Høj flek­si­bi­li­tet og ube­græn­set ska­ler­bar­hed
  • MySQL: Re­la­tions­sy­stem med første­klas­ses til­gæn­ge­lig­hed
  • MariaDB: Open source-al­ter­na­tiv til DynamoDB
  • Po­st­greSQL: Re­la­tions­da­ta­ba­se­løs­ning med un­der­støt­tel­se af ikke-re­la­tions­da­ta­ty­per
  • Firebase fra Google: Et frem­ra­gen­de al­ter­na­tiv, især til mobil- og we­bap­pli­ka­tio­ner
  • Apache Cassandra: Særligt ideel til store da­ta­mæng­der

De enkelte DynamoDB-al­ter­na­ti­vers fordele er beskrevet i detaljer i den linkede vej­led­ning.

Gå til ho­ved­me­nu­en