What is Amazon DynamoDB document API?

Amazon DynamoDB: Dokument API-oversigt

05/01/2025

Rating: 4.77 (6964 votes)

Amazon DynamoDB er en hurtig og fleksibel NoSQL-database, der understøtter alle skalaer. Dens Document API tilbyder en intuitiv og kraftfuld måde at interagere med dine data på, især når dine data naturligt passer ind i et dokumentorienteret format. I modsætning til traditionelle relationelle databaser, hvor data er organiseret i tabeller med strenge skemaer, tillader DynamoDB's Document API dig at gemme data som JSON-dokumenter. Dette giver en enestående fleksibilitet i datastruktur, hvilket gør det ideelt til applikationer med skiftende krav eller uforudsigelige datamønstre.

What is Amazon DynamoDB document API?
Indholdsfortegnelse

Hvad er et Dokument i DynamoDB?

I konteksten af DynamoDB refererer et "dokument" til en samling af attributter, der repræsenteres som et JSON-objekt. Hvert dokument har en primær nøgle, som unikt identificerer det inden for en tabel. Attributterne kan være primitive typer som strenge, tal, binære data, boolske værdier og null, eller de kan være sammensatte typer som lister (arrays) og maps (objekter). Denne struktur ligner meget den måde, data ofte håndteres i moderne webapplikationer, hvilket gør integrationen med disse systemer uhyre enkel.

Fordele ved at bruge Document API

DynamoDB's Document API tilbyder en række betydelige fordele for udviklere:

  • Fleksibelt Skema: Du behøver ikke at definere et fast skema på forhånd. Hvert dokument kan have sin egen unikke struktur, hvilket eliminerer behovet for dyre og tidskrævende skemaændringer. Dette er en game-changer for agile udviklingsmiljøer.
  • Intuitiv Datamodel: JSON-strukturen er velkendt for de fleste udviklere og matcher naturligt mange applikationsdatamodeller, især dem, der bruger JavaScript eller andre sprog, der nemt kan serialisere og deserialisere JSON.
  • Høj Ydeevne: DynamoDB er designet til at levere konsekvent lav latenstid og høj throughput, selv ved massive skalaer. Document API'en udnytter dette fuldt ud.
  • Skalerbarhed: Databasen skalerer automatisk op eller ned baseret på din arbejdsbyrde, hvilket sikrer, at din applikation forbliver responsiv.
  • Managed Service: Som en fuldt administreret tjeneste håndterer AWS administrationen af hardware, softwareopdateringer, patching, replikering og backup, hvilket frigør dig til at fokusere på din applikation.

Grundlæggende Operationer med Document API

Interaktion med DynamoDB via Document API involverer typisk en række grundlæggende operationer:

Oprette et Dokument (PutItem)

For at gemme et nyt dokument i en DynamoDB-tabel bruger du `PutItem`-operationen. Du specificerer tabellens navn og det element (dokument), du vil gemme. Hvis et element med samme primære nøgle allerede eksisterer, vil det blive overskrevet.

// Eksempel i AWS SDK for JavaScript const AWS = require('aws-sdk'); const dynamoDb = new AWS.DynamoDB.DocumentClient(); const params = { TableName: 'MineDokumenter', Item: { 'id': '123', 'navn': 'Eksempel Dokument', 'detaljer': { 'version': 1, 'status': 'aktiv' }, 'tags': ['vigtig', 'test'] } }; dynamoDb.put(params, (error, data) => { if (error) { console.error('Kunne ikke tilføje element:', JSON.stringify(error, null, 2)); } else { console.log('Element tilføjet:', JSON.stringify(data, null, 2)); } });

Hente et Dokument (GetItem)

For at hente et specifikt dokument bruger du `GetItem`-operationen. Du skal angive tabellens navn og den primære nøgle for det element, du søger efter. Du kan også vælge at forespørge kun specifikke attributter for at optimere ydeevnen.

// Eksempel i AWS SDK for JavaScript const params = { TableName: 'MineDokumenter', Key: { 'id': '123' } }; dynamoDb.get(params, (error, data) => { if (error) { console.error('Kunne ikke hente element:', JSON.stringify(error, null, 2)); } else { console.log('Element hentet:', JSON.stringify(data.Item, null, 2)); } });

Opdatere et Dokument (UpdateItem)

`UpdateItem`-operationen giver dig mulighed for at modificere specifikke attributter i et eksisterende dokument uden at skulle genindlæse hele dokumentet. Dette er meget effektivt til at håndtere delvise opdateringer.

// Eksempel i AWS SDK for JavaScript const params = { TableName: 'MineDokumenter', Key: { 'id': '123' }, UpdateExpression: 'SET detaljer.status = :s, #v = :val', ExpressionAttributeNames: { '#v': 'version' }, ExpressionAttributeValues: { ':s': 'afventer', ':val': 2 }, ReturnValues: 'UPDATED_NEW' }; dynamoDb.update(params, (error, data) => { if (error) { console.error('Kunne ikke opdatere element:', JSON.stringify(error, null, 2)); } else { console.log('Element opdateret:', JSON.stringify(data, null, 2)); } });

Slette et Dokument (DeleteItem)

For at fjerne et dokument fra tabellen bruger du `DeleteItem`-operationen, hvor du angiver tabellen og den primære nøgle.

// Eksempel i AWS SDK for JavaScript const params = { TableName: 'MineDokumenter', Key: { 'id': '123' } }; dynamoDb.delete(params, (error, data) => { if (error) { console.error('Kunne ikke slette element:', JSON.stringify(error, null, 2)); } else { console.log('Element slettet:', JSON.stringify(data, null, 2)); } });

Forespørgsler og Scanninger

DynamoDB tilbyder to primære metoder til at hente flere elementer fra en tabel:

  • Query: En `Query`-operation bruger en primær nøgle til at finde et sæt elementer. Du kan specificere en nøgleværdiforbindelse for den partitionelle nøgle og en betingelse for den sorteringsnøgle (hvis den findes). Query er meget effektiv, da den kun scanner de partitioner, der er relevante for din forespørgsel.
  • Scan: En `Scan`-operation læser alle elementer i en tabel eller et indeks. Den filtrerer derefter resultaterne baseret på specificerede betingelser. Scanning kan være ressourcekrævende og bør bruges med forsigtighed, især på store tabeller, da den skal læse alle data.

Eksempel på Query

Antag, at du har en tabel med en partitionel nøgle 'userId' og en sorteringsnøgle 'timestamp'.

const params = { TableName: 'BrugerAktivitet', KeyConditionExpression: 'userId = :uid AND timestamp BETWEEN :ts1 AND :ts2', ExpressionAttributeValues: { ':uid': 'bruger-abc', ':ts1': 1678886400, // Start timestamp ':ts2': 1678972800 // Slut timestamp } }; dynamoDb.query(params, (error, data) => { if (error) { console.error('Kunne ikke udføre query:', JSON.stringify(error, null, 2)); } else { console.log('Query resultater:', JSON.stringify(data.Items, null, 2)); } });

Sammenligning: Document API vs. SQL

Det er nyttigt at forstå forskellene mellem DynamoDB's Document API og traditionelle SQL-databaser:

FunktionDynamoDB Document APISQL Database
DatamodelDokumentorienteret (JSON)Relationel (tabeller, rækker, kolonner)
SkemaFleksibelt, skemafriFast, kræver foruddefineret skema
SkaleringHorisontal (automatisk)Vertikal og/eller horisontal (ofte manuel)
ForespørgslerPrimær nøgle, sekundære indekser, nøglebetingelserSQL-forespørgsler (JOINs, komplekse betingelser)
BrugsscenarierMobilapps, IoT, gaming, indholdsstyring, realtidsdataFinansielle systemer, ERP, CRM, applikationer med komplekse relationer
TransaktionerUnderstøtter atomare operationer på flere elementer (begrænset)ACID-transaktioner over flere tabeller

Spørgsmål og Svar (FAQ)

Er DynamoDB's Document API egnet til alle applikationer?

DynamoDB's Document API er ideel til applikationer, der drager fordel af et fleksibelt skema, har brug for høj skalerbarhed og lav latenstid, og hvor data naturligt passer ind i et dokumentformat. For applikationer med komplekse relationer mellem data, der kræver hyppige JOINs, kan en relationel database være et bedre valg.

Hvordan håndterer jeg relationer i DynamoDB?

Selvom DynamoDB ikke understøtter JOINs som SQL, kan du modellere relationer ved at gemme data fra relaterede entiteter i det samme dokument (embedding) eller ved at bruge forskellige strategier som Adjacency Lists eller Materialized Views, som ofte involverer brug af sekundære indekser.

Hvad er forskellen mellem Document Client og den generelle DynamoDB API?

Document Client er et abstraktionslag oven på den generelle DynamoDB API. Den konverterer automatisk DynamoDB-datatyper til almindelige JavaScript-typer og omvendt, hvilket gør det nemmere at arbejde med data, da du undgår manuel konvertering af typer som S, N, BOOL osv.

Hvordan sikrer jeg data i DynamoDB?

DynamoDB tilbyder indbyggede sikkerhedsfunktioner, herunder adgangskontrol via AWS Identity and Access Management (IAM), kryptering af data både i hvile (at rest) og under transport (in transit), samt muligheder for at opsætte VPC endpoints for at begrænse netværksadgang.

Konklusion

Amazon DynamoDB's Document API giver en kraftfuld og fleksibel tilgang til datalagring, der passer perfekt til moderne, skalerbare applikationer. Ved at udnytte JSON-dokumenter og den administrerede natur af DynamoDB kan udviklere bygge og skalere applikationer hurtigere og mere effektivt. Forståelsen af de grundlæggende operationer, forespørgselsmetoder og forskellene fra SQL er nøglen til at udnytte dette værktøj fuldt ud.

Hvis du vil læse andre artikler, der ligner Amazon DynamoDB: Dokument API-oversigt, kan du besøge kategorien Teknologi.

Go up