Databaser er en nøglekomponent i de fleste applikationer og hjemmesider. De gemmer vigtige data som indhold og brugeroplysninger og kan registrere hændelser, der sker i en applikation. Der findes mange forskellige databaseteknologier, og den, du vælger, kan påvirke alt fra applikationsarkitektur til udviklingsprocesser.

Vi kigger her nærmere på DynamoDB og MongoDB, to populære tilbud, som ikke er traditionelle relationsdatabaser. Du kan beslutte, om denne “NoSQL”-tilgang er den rigtige for din applikation, og hvilken af disse to databaseplatforme, der vil gøre jobbet bedst.

Forståelse af teknologien: DynamoDB vs MongoDB

I løbet af det sidste årti er NoSQL-databaser blevet mere og mere populære for at imødekomme efterspørgslen efter mere fleksibel og skalerbar teknologi. Væksten i sociale netværk og brugergenereret indhold har til dels drevet denne efterspørgsel.

I årevis brugte de fleste applikationer traditionelle SQL-databaser, hvor hver datarække beskriver en særskilt enhed og dens relationer til andre enheder. Når man svarer på en forespørgsel, forbinder en relationsdatabase data fra forskellige rækker og returnerer dem til en klientapplikation. Denne arkitektur er optimeret til at reducere lagerplads og eliminere duplikering af gentagne data, da hvert element i et resultatsæt typisk kun gemmes én gang i databasen.

I modsætning hertil gemmer NoSQL-databaser almindeligvis basenheden og relaterede data i et enkelt dokument. Det betyder, at nogle data registreres flere gange, hvilket øger lagerbehovet. Men efterhånden som lageromkostningerne er faldet, har NoSQL-løsningernes skalerbarhed fået forrang i mange brugssituationer. Deres underliggende arkitektur gør NoSQL-databaser exceptionelt velegnede til at køre i klynger med data fordelt på flere noder.

Hvad er DynamoDB?

DynamoDB er en serverløs NoSQL-database, der er udviklet af Amazon til at understøtte deres berømte online shopping-destination og derefter gjort tilgængelig for udviklere i 2012 på deres cloud hosting-platform, Amazon Web Services (AWS). Ligesom det var tilfældet med Amazons butik, svarer DynamoDB på forespørgsler uden det computeroverhead, der kræves for at foretage de til tider komplekse sammenføjninger i en relationsdatabase.

DynamoDB er optimeret til skala og er en key-value item store, hvor alle data, der er relateret til en bestemt nøgle, gemmes sammen med den. Ingen joining er påkrævet! Efter at have elimineret dette krav, optimerede ingeniørerne DynamoDB til at returnere data hurtigt.

Amazon gør DynamoDB tilgængelig gennem AWS som en fuldt administreret tjeneste. Derfor er den blevet populær blandt udviklere, som kan bruge DynamoDB med minimalt databaseoverhead. Desuden skalerer tjenesten nemt, efterhånden som applikationer får flere brugere. Og hvis en virksomhed bruger andre AWS-værktøjer, kan DynamoDB problemfrit kobles til dem.

DynamoDB vs MongoDB: DynamoDB logoet.
DynamoDB-logoet.

Hvordan fungerer DynamoDB?

DynamoDB er en NoSQL key-value item store, og fordi det er en administreret service, er dens underliggende arkitektur og infrastruktur abstraheret fra udvikleren.

Under motorhjelmen er data partitioneret ved hjælp af den primære nøgle, hvor hver partition indeholder tre noder, der opbevarer en kopi af dataene. Denne partitionering gør det nemt at skalere, da data er spredt over flere servere. Derudover giver datareplikeringen redundans, hvis en bestemt node fejler.

En af de tre noder udnævnes til leader-node, hvor alle skrivninger først udstedes, før de replikeres til de to andre noder. At skrive først til leader-noden gør det muligt for DynamoDB at opretholde konsistente skrivninger. For at opnå optimal læsekonsistens skal alle DynamoDB-læsninger også bruge leader-noden.

Denne tilgang koster performance i læsetunge applikationer, så DynamoDB giver brugerne mulighed for at vælge “eventual” konsistens. Det gør det muligt at sprede læsninger over alle noder. Denne mulighed kan dog gå ud over nøjagtigheden, hvis dataene ikke er blevet spredt til alle noder før en læsning.

Fordele og ulemper ved DynamoDB

De største fordele ved DynamoDB er, at den er serverløs, skalerbar og hurtig. Du kan konfigurere det på få minutter med minimalt infrastrukturoverhead. AWS håndterer sikkerhed, opgraderinger, serveradministration og sikrer høj tilgængelighed. Desuden kan DynamoDB skaleres uendeligt (kun begrænset af den fysiske størrelse af AWS) på en betal-for-brug-model. Endelig tilbyder DynamoDB hurtige læsninger og skrivninger med skaleringsevner, der sikrer fortsat hurtig ydeevne, når datalageret vokser.

En ulempe er dens minimale forespørgselsmuligheder. Nøgleopslag er nyttige, men hvis du har brug for mere komplekse forespørgsler – såsom aggregeringer – bliver du nødt til at eksportere data til en ekstern database til analyse. Derudover er DynamoDB kun tilgængelig via AWS. Hvis du allerede er integreret i AWS’ økosystem, vil det ikke være et problem. Hvis din virksomhed ønsker at implementere on-premises, må den kigge andre steder hen.

Hvad er MongoDB?

MongoDB er et NoSQL-dokumentlager, der oprindeligt blev udgivet i 2009 som en open source-database med mulighed for kommercielle supportpakker. Den gemmer JSON-dokumenter som binære JSON-objekter (BSON), der kan gemme komplekse datastrukturer som indlejrede egenskaber og arrays.

MongoDB kører på Windows-, macOS- og Linux-platforme og understøtter mange programmeringssprog. Du kan også finde MongoDB på populære cloud-platforme fra Amazon, Google og Microsoft.

MongoDB er primært populær på grund af sin fleksibilitet. Den giver alle fordelene ved en NoSQL-database, samtidig med at den opfylder mere komplekse krav, som ACID-transaktioner for dataintegritet, aggregeringsforespørgsler og sammenføjning af datasæt. Og på grund af den indbyggede JavaScript-understøttelse er det en stadig mere populær backend-database til hjemmesider, der bruger det populære programmeringssprog.

DynamoDB vs MongoDB: MongoDB logoet.
MongoDB logoet.

Hvordan fungerer MongoDB?

MongoDB gemmer BSON-objekter, der indeholder et eller flere nøgle-værdipar. Værdierne kan være simple datatyper, som strenge og tidsstempler, eller komplekse typer, som indlejrede objekter og arrays.

MongoDB gemmer dokumenter i samlinger, svarende til rækker i en tabel. Det er almindelig praksis, at dokumenter i en samling deler et lignende skema, men selv dokumenter med de samme nøgler kan have forskellige skemaer – nøgler med samme navn behøver ikke at gemme den samme datatype. MongoDB kan håndhæve validering af egenskaber, når poster indsættes eller opdateres, og der er et krav om, at data i visse nøgler skal være af en bestemt type.

MongoDB tilbyder også sharding, som svarer til partitionering i DynamoDB. Sharding distribuerer data på tværs af flere servere baseret på en shard-nøgle. Ved at distribuere data kan læse- og skriveoperationer spredes over flere servere, hvilket forhindrer en enkelt server i at blive overbelastet.

Fordele og ulemper ved MongoDB

Ud over de typiske fordele ved NoSQL understøtter MongoDB flere platforme – afgørende for virksomheder, der ønsker fleksibilitet i deres valg af cloud-udbyder eller muligheden for at hoste en lokal database.

MongoDB understøtter også komplekse forespørgsler og aggregeringer gennem sin aggregeringspipeline. Det gør den usædvanligt fleksibel sammenlignet med andre NoSQL-valg, da den understøtter analytiske forespørgsler, dokumentsøgninger og sammenkædning af data. Ydeevnen kan dog falde ved store skalaer. Derudover giver MongoDB Atlas en serverløs mulighed for virksomheder, der ønsker at fjerne byrden ved infrastrukturstyring.

En af ulemperne ved MongoDB er, at dens datafodaftryk kan være ret stort, da dokumenter skal gemme både data og nøgler. Og selvom dens aggregeringspipelines er kraftfulde værktøjer, gør deres brug af en skræddersyet syntaks dem usædvanligt komplekse at skrive og bygge.

Endelig er der et infrastrukturoverhead for dem, der ikke bruger MongoDB Atlas, især for produktionssystemer, der bruger replikering og sharding for at sikre, at systemet er performant. Det omfatter overvågning, håndtering af dataskævhed og udførelse af opgraderinger, foruden håndtering af sikkerhed.

Det korte af det lange: DynamoDB vs MongoDB

Selvom DynamoDB og MongoDB begge er NoSQL-databaser, er de meget forskellige. Din brugssag vil i høj grad afgøre, hvilken du skal bruge.

For det første har DynamoDB færre tilgængelige datatypemuligheder på skemaniveau. For eksempel understøtter den ikke datoer, hvilket betyder, at udviklere skal vedligeholde logik i deres applikationer for at analysere og håndtere dem. MongoDB understøtter mange flere datatyper, herunder datoer.

For det andet muliggør DynamoDB forespørgsler via key-value lookups og table scans. Men dens performance for tabelscanninger er mangelfuld. Til mere komplekse eller ad hoc-agtige forespørgsler er den bedste løsning at eksportere til en anden database. I modsætning hertil understøtter MongoDB key lookups oven på analytiske forespørgsler og data joining. Den tilbyder mere fleksibel indeksunderstøttelse, da du kan tilføje sekundære indekser til ethvert felt. Mens DynamoDB understøtter sekundære indekser, er de begrænset af deres konceptuelle kompleksitet og det antal, du kan oprette.

På sikkerhedssiden drager DynamoDB fordel af AWS-platformen. Autentificering med DynamoDB går gennem AWS brugeradgangskontrol. Det gør det ret ligetil at sikre en DynamoDB-database.

Med MongoDB er du selv ansvarlig for alle sikkerhedsbegrænsninger, herunder oprettelse af brugerkonti og administration af netværksadgang. Det betyder meget højere omkostninger. Men MongoDB Atlas gør MongoDB til en administreret løsning, der eliminerer disse udfordringer.

Som en administreret løsning har DynamoDB indbyggede backup- og gendannelsesfunktioner, herunder muligheden for multiregionale replikaer og enkel gendannelse fra backups. Som standard vil MongoDB ikke administrere disse processer, hvilket kræver manuel konfiguration. MongoDB Atlas letter processen noget, men kræver ekstra konfiguration for at gøre det.

Et overblik: DynamoDB vs MongoDB

Funktion DynamoDB MongoDB
Datatyper De fleste standarddatatyper undtagen datoer Alle datatyper i BSON-specifikationen inklusive datoer
Forespørgsel Nøgleopslag med begrænset multi-dokument-forespørgsel Nøgleopslag, forespørgsler, sammenføjninger og aggregeringer
Sikkerhed Indbygget i AWS med lidt overhead Selvadministreret, medmindre man bruger MongoDB Atlas
Skalerbarhed Indbygget i AWS med lidt overhead Selvadministreret, medmindre du bruger MongoDB Atlas
Sikkerhedskopiering og gendannelse Indbygget i AWS med lidt overhead Selvadministreret, medmindre du bruger MongoDB Atlas

Samlet set er MongoDB den mere fleksible løsning – den kan implementeres overalt og giver et rigere sæt værktøjer til lagring og forespørgsel af data. Men for en slank database med tæt AWS-integration og reducerede infrastruktur- og sikkerhedsomkostninger er DynamoDB et sandsynligt valg.

Sammenfatning

MongoDB og DynamoDB er yderst performante NoSQL-løsninger, hvis relative styrker gør dem velegnede til vidt forskellige formål. For en slank og enkel løsning er DynamoDB et stærkt valg. Men MongoDB er en vinder, hvis du har brug for mere komplekse skemaer, aggregeringsforespørgsler og bedre indeksunderstøttelse.

Husk, at prisen for fleksibilitet er øget infrastrukturoverhead. Men hvis du har brug for MongoDB’s fleksibilitet og ønsker at reducere overhead, er MongoDB Atlas ofte et overkommeligt kompromis.

Foran din database vil du selvfølgelig have en overbevisende applikation. Du kan udvikle din på Kinstas Applikation Hosting-platform og endda komme i gang gratis med vores Hobby Tier og skalere op, når brugerne begynder at strømme til dit mesterværk.

Steve Bonisteel Kinsta

"Steve Bonisteel er en teknisk redaktør hos Kinsta, der begyndte sin forfatterkarriere som journalist på en avis, der jagtede ambulancer og brandbiler. Han har dækket internetrelateret teknologi siden slutningen af 1990'erne."