Site logo
Tác giả
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
Ngày xuất bản
Ngày xuất bản

Tổng Hợp Các Dịch Vụ AWS Database

Giới Thiệu

AWS cung cấp một hệ sinh thái dịch vụ cơ sở dữ liệu phong phú, bao phủ từ cơ sở dữ liệu quan hệ truyền thống cho đến NoSQL, in-memory, và cơ sở dữ liệu đồ thị. Trong phạm vi bài viết này, chúng ta tập trung vào 5 dịch vụ trọng tâm:

  • Amazon RDS (Relational Database Service)
  • Amazon Aurora (MySQL/PostgreSQL-compatible)
  • Amazon DynamoDB (Key-Value/Document NoSQL)
  • Amazon MemoryDB for Redis (durable, Redis-compatible)
  • Amazon Neptune (Graph database)

Bài viết này nhằm giúp bạn:

  • Hiểu đúng mô hình, tính năng, giới hạn và use case của từng dịch vụ.
  • So sánh nhanh để chọn dịch vụ phù hợp cho workload thực tế.
  • Nắm các best practices về bảo mật, hiệu năng, HA/DR và tối ưu chi phí.
  • Có “decision guide” khi đứng trước lựa chọn giữa RDS/Aurora/DynamoDB/MemoryDB/Neptune.

Phân Loại Nhanh Theo Nhu Cầu

  • Cần ACID, SQL, quan hệ: RDS hoặc Aurora.
  • Cần throughput cực lớn, latency thấp, scale linh hoạt, access patterns rõ ràng: DynamoDB.
  • Cần in-memory tốc độ cao nhưng vẫn bền vững (durability) và Multi‑AZ: MemoryDB for Redis.
  • Cần mô hình dữ liệu đồ thị với truy vấn quan hệ phức tạp: Neptune.

Tổng Quan Và So Sánh Nhanh Các Dịch Vụ

Dịch vụ Kiểu dữ liệu Mô hình HA/DR Scale Tính bền vững Chi phí (khái quát) Dùng khi
RDS Quan hệ (SQL) Managed engine (MySQL, PostgreSQL, MariaDB, Oracle, SQL Server) Multi-AZ, Read Replicas Vertical + Read Replica Cao (sao lưu/PITR) Theo instance + storage + I/O Ứng dụng truyền thống, OLTP, transactional
Aurora Quan hệ (SQL) Aurora MySQL/ Postgres compatible Storage phân tán 6 bản sao/3 AZ, Global DB Tự động, read scaling mạnh Rất cao (backtrack, continuous backups) Theo ACU (Serverless v2), I/O + storage OLTP, mission-critical, serverless relational
DynamoDB NoSQL Key-Value/Document Partitioned, eventually/strong consistent Global Tables, multi-Region Hầu như vô hạn Cao (PITR, backups) On-demand/provisioned RCU/WCU + storage Microservices, IoT, session, event-driven
MemoryDB In-memory (Redis) Redis-compatible durable store Multi-AZ Horizontal sharding Durable (AOF, multi-AZ) Node hours + shard + data Low-latency read/write, leaderboards, real-time state
Neptune Đồ thị (Graph) Property graph (Gremlin)/RDF (SPARQL) Multi-AZ, read replicas Scale read, partitioning Cao (backup, snapshot) Instance + storage + I/O Social graph, knowledge graph, fraud analysis

1. Amazon RDS

1.1 RDS Là Gì?

Amazon RDS là dịch vụ managed cho các hệ quản trị CSDL quan hệ: MySQL, PostgreSQL, MariaDB, Oracle, SQL Server. AWS quản lý phần lớn tác vụ hạ tầng: provisioning, patching, backup, Multi‑AZ, Read Replica, monitoring.

1.2 Dùng Khi Nào?

  • Ứng dụng truyền thống, cần ACID, JOIN, transaction phức tạp.
  • Cần giữ nguyên engine quen thuộc (ví dụ PostgreSQL) và/hoặc license (Oracle/SQL Server).
  • Cần migration nhanh từ on‑prem lên cloud với ít thay đổi ứng dụng.

1.3 Tính Năng Chính

  • Multi‑AZ cho HA tự động; Read Replica để scale đọc.
  • Backup tự động, Point‑in‑Time Recovery (PITR), snapshot.
  • Tích hợp IAM, KMS (mã hóa at rest), VPC, Security Group.
  • Performance Insights, Enhanced Monitoring.

1.4 Ưu/nhược Điểm

  • Ưu: Dễ quản lý, quen thuộc, migration thuận tiện, tương thích SQL.
  • Nhược: Scale ngang hạn chế; replication/partitioning phức tạp hơn NoSQL; cấu trúc bảng/quan hệ cần thiết kế kỹ.

1.5 Ví Dụ Use Case

  • Hệ thống ERP/CRM, transactional web app.
  • Ứng dụng có logic SQL phức tạp, nhiều JOIN/transaction.

1.6 Lưu Ý Chi Phí

  • Tối ưu instance size, storage type (gp3/io1), bật storage autoscaling hợp lý.
  • Dùng Reserved Instances/Savings Plans khi workload ổn định.

2. Amazon Aurora

2.1 Aurora Là Gì?

Aurora là cơ sở dữ liệu quan hệ tương thích MySQL/PostgreSQL, thiết kế lại bởi AWS để đạt hiệu năng cao và độ bền dữ liệu vượt trội. Kiến trúc storage tách biệt, nhân bản 6 bản sao trên 3 AZ.

2.2 Dùng Khi Nào?

  • Ứng dụng mission‑critical cần HA/DR cao và hiệu năng ổn định.
  • Cần scale đọc lớn, số lượng read replica nhiều.
  • Muốn serverless relational (Aurora Serverless v2) với auto‑scaling mượt.

2.3 Tính Năng Chính

  • Aurora Serverless v2: scale mịn theo ACU, không downtime.
  • Aurora Global Database: đọc gần user, DR nhanh multi‑Region.
  • Backtrack (Aurora MySQL), continuous backups, Fast Clone.
  • Tối ưu replication, cache, failover nhanh.

2.4 Ưu/nhược Điểm

  • Ưu: Hiệu năng cao, HA vượt trội, scale đọc tốt, tính năng enterprise.
  • Nhược: Chi phí có thể cao hơn RDS tiêu chuẩn; lock‑in vào kiến trúc Aurora.

2.5 Ví Dụ Use Case

  • FinTech/commerce với yêu cầu HA/DR rất cao.
  • Ứng dụng SaaS nhiều tenant, cần clone/scale nhanh.

2.6 Lưu Ý Chi Phí

  • Tối ưu I/O (Aurora tính phí theo I/O); thiết kế truy vấn/index tốt.
  • Aurora Serverless v2 phù hợp workload dao động.

3. Amazon DynamoDB

3.1 DynamoDB Là Gì?

DynamoDB là cơ sở dữ liệu NoSQL key‑value/document, fully managed, hiệu năng ổn định với độ trễ mili‑giây, scale gần như vô hạn. Hỗ trợ cả eventually consistent và strongly consistent reads.

3.2 Dùng Khi Nào?

  • Access patterns rõ ràng, truy cập theo key, yêu cầu throughput rất cao.
  • Microservices, event‑driven, IoT, session store, catalog.
  • Cần multi‑Region active‑active (Global Tables) đơn giản.

3.3 Tính Năng Chính

  • Provisioned/On‑Demand capacity; Auto Scaling.
  • Global Secondary Index (GSI), Local Secondary Index (LSI).
  • Streams cho event sourcing, CDC; TTL để tự xóa dữ liệu.
  • PITR, backup/restore; DAX (cache) giảm độ trễ đọc.

3.4 Ưu/nhược Điểm

  • Ưu: Scale lớn, độ trễ thấp, vận hành tối thiểu, multi‑Region đơn giản.
  • Nhược: Thiết kế lược đồ theo access pattern; không phù hợp JOIN/transaction phức tạp như SQL.

3.5 Ví Dụ Access Pattern

Giả sử bảng Orders với partition key customerId và sort key orderDate. Truy vấn đơn hàng gần nhất của một khách hàng chỉ cần query theo customerId + hạn chế phạm vi orderDate.

3.6 Lưu Ý Chi Phí

  • Chọn On‑Demand cho workload khó dự đoán; Provisioned khi ổn định.
  • Hạn chế item lớn, giảm số lượt đọc/ghi bằng thiết kế tốt; dùng DAX nếu đọc nhiều.

4. Amazon MemoryDB for Redis

4.1 MemoryDB Là Gì?

MemoryDB là dịch vụ cơ sở dữ liệu in‑memory, Redis‑compatible, nhưng nhấn mạnh tính bền vững dữ liệu (durability) và HA Multi‑AZ. Khác với ElastiCache (chủ yếu là cache), MemoryDB hướng tới “system of record” cho khối lượng dữ liệu cần tốc độ rất cao.

4.2 Dùng Khi Nào?

  • Low‑latency đọc/ghi vài mili‑giây, nhưng vẫn cần durable store.
  • Tình huống real‑time: leaderboard, session state quan trọng, feature flags, gaming, ad‑tech.

4.3 Tính Năng Chính

  • Durable Multi‑AZ, AOF; Redis API compatibility.
  • Sharding để scale; read replicas.
  • Tích hợp IAM, KMS, VPC; snapshot/backup.

4.4 Ưu/nhược Điểm

  • Ưu: In‑memory tốc độ cao nhưng vẫn durable/HA tốt.
  • Nhược: Chi phí cao hơn cache thuần; dung lượng RAM là giới hạn.

4.5 So Với ElastiCache for Redis

  • ElastiCache: cache thuần, RTO/RPO khác, dùng để giảm tải backend/DB; không phải source of truth.
  • MemoryDB: có thể làm source of truth in‑memory nhờ durability/Multi‑AZ.

5. Amazon Neptune

5.1 Neptune Là Gì?

Neptune là cơ sở dữ liệu đồ thị managed, hỗ trợ Property Graph (Gremlin) và RDF (SPARQL). Phù hợp khi dữ liệu có nhiều mối quan hệ liên kết như mạng xã hội, knowledge graph, phát hiện gian lận.

5.2 Dùng Khi Nào?

  • Truy vấn theo đường đi (path), độ bậc quan hệ, pattern matching.
  • Dữ liệu có liên kết phức tạp, JOIN trong SQL không còn hiệu quả hoặc khó biểu diễn.

5.3 Tính Năng Chính

  • Multi‑AZ, read replicas; backup/snapshot.
  • Hỗ trợ Gremlin, SPARQL; tương thích các công cụ graph.
  • Bảo mật: VPC, IAM, KMS.

5.4 Ví Dụ Use Case

  • Social graph: gợi ý bạn bè, cộng đồng.
  • Fraud detection: phát hiện chuỗi giao dịch bất thường nhiều cấp.

Bảng So Sánh Chi Tiết (Giống nhau & khác nhau)

Tiêu chí RDS Aurora DynamoDB MemoryDB Neptune
Mô hình dữ liệu Quan hệ (SQL) Quan hệ (SQL) nâng cao Key‑Value/Document (NoSQL) Redis in‑memory (durable) Đồ thị (Graph)
Dung sai lỗi/HA Multi‑AZ, Read Replica 6 bản sao/3 AZ, failover nhanh Global Tables, multi‑Region Multi‑AZ Multi‑AZ, Read Replicas
Scale Vertical + read scale Read scale mạnh, Serverless v2 Gần như vô hạn (partition) Sharding Read scaling, partitioning
Tính bền vững Cao (backup, PITR) Rất cao (continuous backups) Cao (PITR, backup/restore) Cao (AOF, durable Multi‑AZ) Cao (backup/snapshot)
Giao dịch ACID, SQL transactions ACID, SQL, performance tối ưu Transaction hạn chế (item-level) Không phải SQL, Redis semantics Không phải SQL, Gremlin/SPARQL
Truy vấn JOIN phức tạp, SQL SQL hiệu năng cao Theo key, GSI/LSI Theo Redis API Pattern/graph traversal
Chi phí (khái quát) Instance + storage + I/O ACU/I/O + storage RCU/WCU + storage Node + shard + RAM Instance + storage + I/O
Dùng cho OLTP truyền thống OLTP mission‑critical Microservices, IoT, catalogs Real‑time low‑latency durable Knowledge graph, fraud, social

So Sánh Cụ Thể Theo Từng Cặp

Aurora vs RDS

  • Aurora: HA/DR vượt trội, hiệu năng cao, scale đọc tốt, tính năng enterprise (Global DB, Backtrack). Phù hợp mission‑critical.
  • RDS: Đơn giản, quen thuộc, chi phí “mềm” hơn; thích hợp khi yêu cầu HA/throughput không quá cực đoan.

DynamoDB vs Aurora/RDS

  • DynamoDB: Scale lớn, latency thấp, multi‑Region dễ với Global Tables; nhưng cần thiết kế theo access pattern, không JOIN/SQL phức tạp.
  • Aurora/RDS: Hỗ trợ SQL, JOIN, transaction mạnh; nhưng scale ngang khó hơn.

MemoryDB vs ElastiCache for Redis

  • MemoryDB: Durable + Multi‑AZ → có thể là source of truth.
  • ElastiCache: Cache thuần, tập trung tăng tốc đọc/ghi tạm thời, RTO/RPO khác.

Neptune vs RDS

  • Neptune: Truy vấn theo graph traversal, pattern matching phức tạp; giảm chi phí logic JOIN phức tạp.
  • RDS: SQL/relational mạnh, nhưng biểu diễn quan hệ nhiều cấp có thể phức tạp/không hiệu quả.

Decision Guide (Lựa Chọn Nhanh Theo Câu Hỏi)

  • Cần SQL/ACID, logic phức tạp? → Aurora hoặc RDS.
  • Cần throughput cực lớn, access pattern rõ ràng, scale mượt? → DynamoDB.
  • Cần tốc độ in‑memory nhưng vẫn durable/HA? → MemoryDB.
  • Dữ liệu nhiều mối quan hệ, truy vấn theo đường đi/độ bậc? → Neptune.
  • Multi‑Region active‑active native? → DynamoDB Global Tables, Aurora Global DB (chủ yếu read; write cross‑Region có độ trễ/khác biệt).
  • Workload biến thiên nhiều? → Aurora Serverless v2 hoặc DynamoDB On‑Demand.

Kiến Trúc Mẫu

1) Microservices Serverless, Event‑Driven (DynamoDB)

  • API Gateway → Lambda → DynamoDB (On‑Demand/Provisioned + Auto Scaling).
  • DynamoDB Streams → Lambda → SQS/Kinesis/EventBridge cho async processing.
  • TTL dọn dẹp dữ liệu tạm; DAX cho low‑latency reads nóng.

2) Web App Quan Hệ (Aurora/RDS)

  • ALB → EC2/ECS/EKS → Aurora (Serverless v2) hoặc RDS Multi‑AZ.
  • Read replicas cho báo cáo, analytics nhẹ; ElastiCache để cache query.
  • Backup + PITR; snapshot định kỳ; KMS cho mã hóa.

3) Real‑time State/Leaderboard (MemoryDB)

  • Game server/API → MemoryDB (sharded, Multi‑AZ) → ghi/đọc cực nhanh.
  • Snapshot định kỳ; tích hợp Kinesis/S3 nếu cần phân tích.

4) Knowledge Graph/Fraud (Neptune)

  • Dữ liệu từ S3/Glue/DMS → Neptune Loader.
  • Ứng dụng truy vấn Gremlin/SPARQL để tìm pattern, recommendation.

Bảo Mật & Tuân Thủ

  • Mã hóa: KMS at rest cho RDS/Aurora/DynamoDB/MemoryDB/Neptune; TLS in transit.
  • IAM: Kiểm soát truy cập tinh chỉnh; với RDS/Aurora dùng Secrets Manager/ IAM Database Authentication.
  • Mạng: Triển khai trong VPC, Security Group, NACL; hạn chế public exposure.
  • Giám sát & Audit: CloudWatch, CloudTrail, Config, GuardDuty; Performance Insights.

HA/DR & Sao Lưu

  • RDS/Aurora: Multi‑AZ, automatic backup, PITR; Aurora có storage phân tán, failover nhanh.
  • DynamoDB: Multi‑AZ by default; Global Tables cho multi‑Region active‑active; backup/PITR.
  • MemoryDB: Multi‑AZ durable, AOF; snapshot.
  • Neptune: Multi‑AZ, read replica; snapshot/backup.
  • DR Strategy: Xác định RTO/RPO; kiểm thử thường xuyên; xem xét cross‑Region replication.

Tối Ưu Hiệu Năng

  • RDS/Aurora: Tối ưu truy vấn và index; connection pooling; lựa chọn instance/storage phù hợp (gp3/io1); hạn chế N+1; dùng read replica.
  • DynamoDB: Thiết kế partition key trải đều; tránh hot partition; dùng GSI hợp lý; DAX cho cache đọc.
  • MemoryDB: Cấu hình shard, replica phù hợp; tối ưu cấu trúc dữ liệu Redis; theo dõi latency/CPU/memory.
  • Neptune: Thiết kế mô hình graph tối ưu truy vấn; index thích hợp; cân nhắc phân vùng dữ liệu.

Tối Ưu Chi Phí

  • RDS/Aurora: Reserved Instances/ Savings Plans; chọn storage gp3; bật storage autoscaling; tối ưu I/O với Aurora.
  • DynamoDB: Chọn On‑Demand hoặc Provisioned + Auto Scaling; TTL cho dữ liệu không cần thiết; tránh item quá lớn.
  • MemoryDB: Quy hoạch shard và dung lượng; snapshot hợp lý; dùng đúng khi cần durable in‑memory.
  • Neptune: Chọn instance phù hợp; snapshot/lifecycle policies; scale read replicas theo nhu cầu.

Công Cụ Migration & Xử Lý Dữ Liệu

  • AWS DMS (Database Migration Service): di chuyển dữ liệu giữa on‑prem và AWS, giữa các engine (homogeneous/heterogeneous).
  • AWS SCT (Schema Conversion Tool): chuyển đổi schema khi đổi engine (ví dụ Oracle → PostgreSQL/Aurora).
  • AWS Glue: ETL/ELT dữ liệu từ S3/RDS/DynamoDB về data lake hoặc nạp vào Neptune.

Mẹo Ôn Thi (AWS Certified – Theo Danh Mục In‑Scope)

  • Aurora vs RDS: Nắm rõ kiến trúc storage Aurora, Global Database, Serverless v2, Backtrack.
  • DynamoDB: Nắm On‑Demand vs Provisioned, GSI/LSI, Streams, TTL, DAX, Global Tables.
  • MemoryDB vs ElastiCache: Sự khác biệt về durability/HA và vai trò (source of truth vs cache).
  • Neptune: Gremlin/SPARQL, use case graph; cách backup/restore, read replicas.
  • Bảo mật/Quản trị: KMS, IAM auth, VPC, Security Group, CloudWatch/CloudTrail/Config.

So Sánh Chi Tiết Theo Engine RDS (Bổ Sung)

Engine RDS Ưu thế Lưu ý
PostgreSQL Mở rộng, tính năng phong phú, JSONB, cộng đồng mạnh Extension/phiên bản; theo dõi hiệu năng, autovacuum
MySQL/MariaDB Phổ biến, tài liệu phong phú, dễ dùng Tối ưu InnoDB, index; replication/read replica
Oracle/SQLServer Enterprise features, PL/SQL/T-SQL Chi phí license; xem xét Aurora PostgreSQL như lựa chọn thay thế

Ví Dụ Nhanh

DynamoDB: Thiết Kế Bảng Đơn Giản

Table: Orders
Partition key: customerId
Sort key: orderDate

GSI: statusIndex → partition key: status, sort key: orderDate
Use cases: lấy đơn theo khách hàng; thống kê theo trạng thái.

Aurora Serverless v2: Scale Mịn

  • Workload dao động theo giờ: để ACU tự co giãn, không cần điều chỉnh kích thước instance thủ công.

MemoryDB: Feature Flags Real‑time

  • Lưu cờ tính năng (feature flag) và trạng thái người chơi trong MemoryDB để cập nhật theo thời gian thực, đồng thời vẫn đảm bảo durability khi AZ gặp sự cố.

Checklist Lựa Chọn Nhanh

  • Cần SQL/transaction? → RDS/Aurora.
  • Cần scale cực lớn, latency thấp, access pattern rõ? → DynamoDB.
  • Cần in‑memory nhưng bền vững, Multi‑AZ? → MemoryDB.
  • Cần graph traversal phức tạp? → Neptune.
  • Cần multi‑Region active‑active đơn giản? → DynamoDB Global Tables.

Kết Luận

Không có cơ sở dữ liệu “vạn năng”. Mỗi dịch vụ AWS Database mạnh ở một hoặc vài nhóm use case. Hãy xác định rõ mô hình dữ liệu, yêu cầu nhất quán/HA/DR, throughput, latency, và chi phí để đưa ra lựa chọn đúng đắn:

  • Aurora/RDS cho SQL/ACID, OLTP truyền thống và mission‑critical.
  • DynamoDB cho scale cực lớn, access pattern rõ, microservices/event‑driven.
  • MemoryDB cho real‑time in‑memory nhưng vẫn durable/HA.
  • Neptune cho các bài toán liên kết phức tạp theo đồ thị.

Kết hợp đúng dịch vụ, áp dụng best practices bảo mật và tối ưu chi phí sẽ giúp hệ thống của bạn vừa bền vững vừa hiệu quả.