1.3.9 Specialized Data Stores
Specialized Data Stores Based on Access Patterns
Chọn Data Store theo Access Pattern
| Access Pattern | Service | Lý do |
|---|
| Key-value lookups | DynamoDB | Single-digit ms latency, auto-scaling |
| Relational queries (JOIN, complex) | RDS / Aurora | SQL, ACID transactions |
| Full-text search | OpenSearch | Inverted index, fuzzy search |
| In-memory caching | ElastiCache (Redis/Memcached) | Sub-ms latency |
| DynamoDB read acceleration | DAX | Microsecond latency |
| File/object storage | S3 | Unlimited, durable |
| Graph relationships | Neptune | Traversal queries |
| Time-series data | Timestream | Time-based queries, auto-tiering |
| Ledger/immutable records | QLDB | Cryptographically verifiable |
Common Patterns
Amazon OpenSearch Service
Managed Elasticsearch/OpenSearch cho full-text search, log analytics, và real-time monitoring.
| Feature | Mô tả |
|---|
| Engine | OpenSearch (fork of Elasticsearch) |
| Use cases | Full-text search, log analytics, SIEM |
| Deployment | Managed cluster (domain) |
| Access | VPC hoặc Public endpoint |
| Dashboards | OpenSearch Dashboards (built-in visualization) |
| Serverless | ✅ OpenSearch Serverless (auto-scaling) |
Ingestion Patterns:
| Source | Method |
|---|
| CloudWatch Logs | Subscription filter → OpenSearch |
| Kinesis Data Firehose | Direct delivery |
| DynamoDB | Streams → Lambda → OpenSearch |
| Application | OpenSearch SDK / REST API |
DynamoDB + OpenSearch (Full-text Search)
DynamoDB → DynamoDB Streams → Lambda → OpenSearch
↑
App queries here
- DynamoDB cho CRUD operations
- OpenSearch cho search/analytics
- Lambda sync data via Streams
- OpenSearch Dashboards cho visualization
DynamoDB + S3 (Large Objects)
App → S3 (store large file, get URL)
→ DynamoDB (store metadata + S3 URL)
- DynamoDB item max 400KB
- Large objects (images, documents) → S3
- DynamoDB chỉ lưu metadata + S3 key/URL
RDS + ElastiCache (Read-heavy)
App → ElastiCache (cache hit) → return
→ RDS (cache miss) → ElastiCache (populate) → return
- Giảm load lên RDS cho read-heavy workloads
- Lazy Loading strategy
Aurora vs RDS
| Feature | Aurora | RDS |
|---|
| Storage | Auto-scaling (10GB → 128TB) | Manual provisioning |
| Replicas | Up to 15 (ms replication) | Up to 5 (async) |
| Failover | Faster (~30s) | Slower (~60-120s) |
| Serverless | ✅ Aurora Serverless v2 | ❌ |
| Cost | ~20% more than RDS | Standard |
Exam Tip: Key-value = DynamoDB. SQL/JOIN = RDS/Aurora. Search = OpenSearch. DynamoDB Streams → Lambda → OpenSearch là pattern phổ biến. Item > 400KB → lưu S3, metadata ở DynamoDB.