Data Systems
DynamoDB Deep Dive
Amazon DynamoDB is a fully managed NoSQL database that delivers single-digit millisecond performance at any scale. Master its partitioning model, indexing strategies, global tables, and event-driven patterns with DynamoDB Streams.
- Serverless β No servers to manage, auto-scaling built in
- Predictable Performance β Single-digit millisecond at any scale
- Global Distribution β Multi-region replication with global tables
DynamoDB scales to millions of requests per second with zero operational overhead.
DynamoDB Architecture
Data Model
| Concept | Description |
|---|---|
| Table | Collection of items (analogous to a table in SQL) |
| Item | A group of attributes (analogous to a row) |
| Attribute | A key-value pair (analogous to a column) |
| Primary Key | Unique identifier for each item (partition key + optional sort key) |
Partitioning
Single Table Design
| Entity | PK | SK | Attributes |
|---|---|---|---|
| User | USER#123 | PROFILE | name, email |
| Order | USER#123 | ORDER#2024-01-15 | amount, status |
| Product | PRODUCT#456 | METADATA | name, price |
| Review | PRODUCT#456 | REVIEW#USER#123 | rating, text |
Secondary Indexes
| Index Type | Partition Key | Sort Key | Consistency | Cost |
|---|---|---|---|---|
| GSI | Different from base | Optional | Eventually consistent | Extra storage + throughput |
| LSI | Same as base | Different | Strongly consistent | Extra storage only |
DynamoDB Streams
| Use Case | Pattern |
|---|---|
| Cross-region replication | Stream β Lambda β write to other region |
| Event-driven workflows | Stream β Lambda β trigger Step Functions |
| Materialized views | Stream β Lambda β update derived tables |
| Audit logging | Stream β Kinesis β S3 β Athena |
Global Tables
| Feature | Description |
|---|---|
| Multi-active | Read and write in any region |
| Eventual consistency | Replication across regions is async |
| Conflict resolution | Last-writer-wins (LWW) |
| Automatic | No manual setup for replication |
Capacity Modes
| Mode | Description | Best For |
|---|---|---|
| On-demand | Pay per request, auto-scales | Unpredictable workloads |
| Provisioned | Reserve read/write capacity | Predictable workloads |
| Auto-scaling | Adjusts provisioned capacity | Variable but patterned workloads |
Practice Exercises
-
Table Design: Design a single-table DynamoDB schema for a ride-sharing app with users, drivers, rides, and payments. Identify all access patterns and choose appropriate PK/SK combinations.
-
Partition Key Analysis: You have a DynamoDB table with 100M items and the partition key is "country". Analyze the access pattern and identify potential hot partitions. Propose a solution.
-
Stream Processing: Design an event-driven workflow using DynamoDB Streams that sends a notification when an order status changes to "shipped".
-
Cost Estimation: Estimate the monthly cost for a DynamoDB table with 100GB of data, 10K read capacity units, and 5K write capacity units.
What to Learn Next
-> Redis Deep Dive Redis data structures, persistence, clustering, and use cases.
-> Cassandra Deep Dive Cassandra architecture, data modeling, and operational patterns.
-> Spanner and CockroachDB Deep dive into specific NewSQL implementations.
-> NoSQL Deep Dive Document, key-value, column-family, and graph databases overview.
-> Data Partitioning Sharding strategies, consistent hashing, and partition keys.
-> Choosing the Right Database Systematic framework for database selection.