DynamoDB
NoSQLAmazon's fuldt managed serverless NoSQL database med single-digit millisecond performance ved enhver skala.
Beskrivelse
Amazon DynamoDB er en key-value og document database designet til at levere konsistent performance uanset størrelsen af datasættet. Som en fuldt managed serverless tjeneste håndterer DynamoDB automatisk provisioning, patching, backups og scaling. Den bruger SSD storage og distribuerer data på tværs af multiple Availability Zones for høj durability og availability. DynamoDB excellerer ved use cases der kræver forudsigelig performance ved millioner af requests per sekund. Med features som Global Tables (multi-region replication), DynamoDB Streams (change data capture), og Point-in-Time Recovery, er den enterprise-ready. Prismodellen er pay-per-request eller provisioned capacity. DynamoDB bruges af store virksomheder som Amazon.com, Samsung, Lyft og Duolingo til mission-critical workloads. Integration med AWS Lambda og andre AWS services gør den til en naturlig del af serverless arkitekturer.
Features
- •Fully managed serverless
- •Single-digit millisecond latency
- •Automatic scaling
- •Global Tables for multi-region
- •DynamoDB Streams for CDC
- •Point-in-Time Recovery
- •Encryption at rest
- •DAX (in-memory cache)
Query Eksempel
// AWS SDK for JavaScript (v3)
import {
DynamoDBClient,
PutItemCommand,
GetItemCommand,
QueryCommand
} from '@aws-sdk/client-dynamodb';
import { marshall, unmarshall } from '@aws-sdk/util-dynamodb';
const client = new DynamoDBClient({ region: 'eu-west-1' });
// Put item
await client.send(new PutItemCommand({
TableName: 'Users',
Item: marshall({
userId: 'user-123',
name: 'Maria Nielsen',
email: 'maria@email.dk',
age: 28,
city: 'København'
})
}));
// Get item by primary key
const result = await client.send(new GetItemCommand({
TableName: 'Users',
Key: marshall({ userId: 'user-123' })
}));
const user = unmarshall(result.Item);
// Query with sort key
await client.send(new QueryCommand({
TableName: 'Orders',
KeyConditionExpression: 'userId = :userId AND orderDate > :date',
ExpressionAttributeValues: marshall({
':userId': 'user-123',
':date': '2024-01-01'
})
}));
// Global Secondary Index query
await client.send(new QueryCommand({
TableName: 'Users',
IndexName: 'CityIndex',
KeyConditionExpression: 'city = :city',
ExpressionAttributeValues: marshall({
':city': 'København'
})
}));Anvendelsesområder
- •Serverless web og mobile backends
- •Gaming leaderboards og user data
- •IoT data storage ved stor skala
- •Session management
- •Shopping carts og e-commerce
Fordele
- ✓Nul server management
- ✓Predictable performance ved enhver skala
- ✓Excellent AWS ecosystem integration
- ✓Pay-per-request pricing option
- ✓High availability built-in
Ulemper
- ✗Vendor lock-in (AWS only)
- ✗Begrænset query capabilities
- ✗Kan blive dyrt ved høj throughput
- ✗Steeper learning curve end MongoDB
- ✗Index limits og design constraints
Bedst til
- →Serverless arkitekturer
- →Workloads med forudsigelige access patterns
- →High-traffic web/mobile apps
- →AWS-native applikationer
- →Gaming og real-time applications
Ikke anbefalet til
- ⚠Komplekse relational queries
- ⚠Ad-hoc analytics
- ⚠Applikationer uden AWS
- ⚠Når cost optimization er kritisk
- ⚠Traditional OLAP workloads