</>Học Dev
Bài học

Tuần 5 - Ngày 5: Database Options

Tuần 5 – Ngày 5

Tuần 5 - Ngày 5: Database Options

Mục tiêu học tập

  • So sánh các database services
  • Hiểu khi nào dùng database nào
  • Nắm vững database scaling patterns

1. Database Decision Tree

DATABASESELECTIONRelational+ACID?YesRDS,Aurora,AuroraDSQLMySQL/PostgreSQLcompatibleAuroraOracle/SQLServerRDSMulti-regionwrites(single-regionprimary,asyncreplica)AuroraGlobalDistributedSQLmulti-regionACIDwrites(active-active,99.999%multi-region)AuroraDSQLKey-Value+Extremescale?YesDynamoDBNeedstrongconsistencyDynamoDBNeedcachingDAXDocument?YesDocumentDB(MongoDBcompatible)Graph?YesNeptuneIn-memory?YesElastiCache(Redis/Memcached)Time-series?YesTimestreamLedger/Immutable?YesQLDBDatawarehouse?YesRedshift

2. Aurora Advanced

Aurora Global Database

AURORAGLOBALDATABASEPrimaryRegion(us-east-1):PrimaryClusterWriterInstanceReaderInstancesAsyncReplication(<1secondlag)SecondaryRegion(eu-west-1):SecondaryCluster(Read-only)ReaderInstancesFailover:<1minute(promotedtoprimary)WriteForwarding:Enablewritesinsecondary

Aurora Serverless v2

Scaling: 0.5 ACU to 128 ACU
- Auto-scales in seconds
- Pay per ACU-hour used
- Scale to zero (Serverless v1 only)

Use cases:
- Variable workloads
- Development/Test
- Multi-tenant applications

Aurora DSQL (GA May 2025)

Aurora DSQL là distributed SQL serverless database PostgreSQL-compatible — khác hẳn Aurora Global Database thông thường ở chỗ hỗ trợ active-active multi-region writes với ACID đảm bảo.

AURORADSQLArchitecture:-Serverless,noinstancetomanage-Storagevàcomputedecoupledhoàntoàn-PostgreSQLwire-protocolcompatibleMulti-region:-Active-activewrites(miregionacceptwrite)-Strongconsistency(ACIDtransactionscross-region)-99.999%availabilitymulti-regionSLA-Automaticconflictresolution(snapshotisolation)Pricing:-Perrequest+perstorageGB-Noinstancecost,noidlecost

Aurora DSQL vs Aurora Global Database:

Tiêu chíAurora DSQLAurora Global Database
Write topologyActive-active multi-regionSingle primary, async replicas (hoặc write forwarding)
Consistency cross-regionStrong (ACID)Eventual (~< 1s lag)
Failover RTONear-zero (đã active)< 1 minute
SLA99.999% multi-region99.99% region, 99.95% với failover
Schema/featurePostgreSQL subset (no triggers, FKs có hạn chế)Aurora full PostgreSQL/MySQL
PricingServerless per-requestPer instance + I/O
Use caseMulti-region financial / inventory / global SaaS cần ACIDMulti-region read-heavy + DR

Exam keyword:

  • "Multi-region SQL với active-active writes, strong consistency" → Aurora DSQL
  • "Global app cần ACID transaction cross-region, no downtime failover" → Aurora DSQL
  • "Existing Aurora workload, cần multi-region read replica + failover < 1 min" → Aurora Global Database (write forwarding nếu cần write từ region phụ)
  • "Cần feature PostgreSQL đầy đủ (triggers, extensions, foreign keys phức tạp)" → Aurora Global Database, KHÔNG phải DSQL (DSQL còn giới hạn feature)

3. DynamoDB Advanced

Global Tables

DYNAMODBGLOBALTABLESMulti-master,multi-region:Active-Activeus-east-1eu-west-1(Write)(Write)ap-se-1ap-ne-1(Write)(Write)-Automaticconflictresolution(last-writer-wins)-<1secondreplication

DynamoDB Streams + Lambda

DYNAMODBSTREAMSDynamoDBTableChanges(Insert,Update,Delete)DynamoDBStreamEventSourceMappingLambdaFunctionReacttochanges-UpdateElasticsearch-Sendnotifications-Aggregatedata

4. ElastiCache Strategies

Caching Patterns

1. LAZY LOADING (Cache-Aside):
   - Read: Cache miss → Read DB → Write cache
   - Stale data possible

2. WRITE-THROUGH:
   - Write: Write DB + Write cache
   - Always consistent
   - Higher write latency

3. TTL:
   - Set expiration on cached data
   - Balance freshness vs performance

Redis vs Memcached

FeatureRedisMemcached
Data structuresYes (lists, sets)No
PersistenceYesNo
ReplicationYesNo
Multi-AZYesNo
Pub/SubYesNo
Use caseComplex cachingSimple caching

5. Câu hỏi ôn tập

  1. Khi nào chọn DynamoDB vs RDS?

    Xem đáp án

    DynamoDB khi: (1) cần millisecond latency at any scale (10M+ req/s), (2) data model là key-value hoặc document, (3) schema không cố định hoặc thay đổi thường xuyên, (4) serverless/global scale, (5) không cần complex SQL joins. RDS khi: (1) cần ACID transactions phức tạp, (2) complex JOINs giữa nhiều tables, (3) reporting/analytics với SQL, (4) existing apps với relational schema, (5) team quen với SQL. Aurora = enhanced RDS cho scale và availability cao hơn.

  2. Aurora Global Database replication lag bao nhiêu?

    Xem đáp án

    Thường dưới 1 giây — Aurora Global Database dùng storage-level replication (không phải binlog) với dedicated replication infrastructure. Thực tế thường < 1 giây, trong tài liệu AWS cam kết thường < 1 giây cho "typical workloads". Failover (promote secondary): < 1 phút (managed failover). Đây là lý do Aurora Global Database phù hợp cho DR với RPO gần 0 và RTO < 1 phút.

  3. DynamoDB Global Tables là active-active hay active-passive?

    Xem đáp án

    Active-active — tất cả Regions đều có thể read và write đồng thời. Khác với nhiều DB replication là active-passive (chỉ primary write). Global Tables dùng last-writer-wins để resolve conflicts. Phù hợp cho: global applications cần low-latency writes từ nhiều continents, gaming leaderboards, user profiles. Design pattern: partition users theo Region (user từ Asia → write Asia table) để tránh conflicts.

  4. Redis vs Memcached khác nhau như thế nào?

    Xem đáp án

    Redis: persistence (RDB + AOF), replication, pub/sub, Sorted Sets, Streams, scripting, Multi-AZ failover — feature-rich. Memcached: đơn giản, multi-threaded (scale CPU cores), horizontal sharding, không có persistence — pure cache. Chọn Redis khi: cần persistence, replication, pub/sub, complex data types, HA. Chọn Memcached khi: pure caching đơn giản, cần multi-threading cho CPU-intensive cache operations, không cần persistence.


Tài liệu tham khảo chính thức


Ngày tiếp theo: Quiz tổng kết Tuần 5