Bỏ qua để đến nội dung

Databases trên AWS – chọn đúng loại

AWS có rất nhiều database được quản lý để bạn chọn, và trong đề thi SAA-C03 phần khó nhất không phải là nhớ dịch vụ nào tồn tại, mà là chọn đúng dịch vụ cho đúng bài toán. Chương này vì thế là một chương tổng kết — nó gom lại những gì đã học và đặt cạnh nhau để so sánh.

Để chọn đúng database dựa trên kiến trúc của bạn, hãy tự trả lời các câu hỏi sau:

  • Workload là đọc nhiều (read-heavy), ghi nhiều (write-heavy), hay cân bằng? Nhu cầu throughput ra sao? Nó có thay đổi không, có cần scale hoặc dao động trong ngày không?
  • Lưu bao nhiêu dữ liệu và lưu trong bao lâu? Nó có tăng lên không? Kích thước object trung bình là bao nhiêu? Chúng được truy cập như thế nào?
  • Yêu cầu về độ bền dữ liệu (durability)? Đây có phải là nguồn sự thật (source of truth) của dữ liệu không?
  • Yêu cầu về độ trễ (latency)? Bao nhiêu người dùng đồng thời?
  • Data model là gì? Bạn sẽ truy vấn dữ liệu thế nào? Có cần join không? Dữ liệu có cấu trúc hay bán cấu trúc?
  • Cần schema chặt (strong schema) hay cần linh hoạt hơn? Có cần reporting? Có cần search? RDBMS hay NoSQL?
  • Chi phí license? Có nên chuyển sang database cloud-native như Aurora?

Danh sách phân loại dưới đây là “bản đồ” nên học thuộc:

Loại Dịch vụ Ghi chú
RDBMS (= SQL / OLTP) RDS, Aurora Rất tốt cho join
NoSQL (không join, không SQL) DynamoDB (~JSON), ElastiCache (cặp key/value), Neptune (graph), DocumentDB (cho MongoDB), Keyspaces (cho Apache Cassandra)
Object Store S3 (cho object lớn) / Glacier (cho backup / archive)
Data Warehouse (= SQL Analytics / BI) Redshift (OLAP), Athena, EMR
Search OpenSearch (JSON) Tìm kiếm free text, tìm kiếm phi cấu trúc
Graphs Amazon Neptune Thể hiện quan hệ giữa các dữ liệu
Ledger Amazon Quantum Ledger Database
Time series Amazon Timestream

Lưu ý: một số database trong bảng trên được bàn kỹ ở phần Data & Analytics — xem Chương 20.

RDS là dịch vụ quản lý cho các engine quan hệ: PostgreSQL / MySQL / Oracle / SQL Server / DB2 / MariaDB / Custom.

  • Bạn cấp phát trước kích thước RDS Instance cùng loại và kích thước EBS Volume.
  • Có khả năng auto-scaling cho Storage.
  • Hỗ trợ Read ReplicasMulti AZ.
  • Bảo mật qua IAM, Security Groups, KMS, và SSL in transit.
  • Automated Backup với tính năng Point in time restore (tối đa 35 ngày).
  • Manual DB Snapshot cho nhu cầu khôi phục dài hạn hơn.
  • Bảo trì được quản lý và theo lịch (có downtime).
  • Hỗ trợ IAM Authentication, tích hợp với Secrets Manager.
  • RDS Custom cho phép truy cập và tùy biến instance bên dưới — chỉ với Oracle & SQL Server.
  • Use case: lưu các tập dữ liệu quan hệ (RDBMS / OLTP), chạy truy vấn SQL, transaction.

AuroraAPI tương thích PostgreSQL / MySQL, và điểm kiến trúc quan trọng nhất là tách rời storage và compute.

  • Storage: dữ liệu được lưu thành 6 bản sao (replica) trải trên 3 AZtính sẵn sàng cao, tự phục hồi (self-healing), tự scale.
  • Compute: một cluster các DB Instance trải trên nhiều AZ, tự scale Read Replicas.
  • Cluster:custom endpoint riêng cho writer và cho reader DB instance.
  • Các tính năng bảo mật / giám sát / bảo trì giống RDS.
  • Cần biết các phương án backup & restore của Aurora.
  • Aurora Serverless — cho workload khó dự đoán / gián đoạn, không cần capacity planning.
  • Aurora Globaltối đa 16 DB Read Instance ở mỗi region, nhân bản storage dưới 1 giây.
  • Aurora Machine Learning — làm ML bằng SageMaker & Comprehend trên Aurora.
  • Aurora Database Cloning — tạo cluster mới từ cluster có sẵn, nhanh hơn restore từ snapshot.
  • Use case: giống RDS, nhưng ít bảo trì hơn / linh hoạt hơn / hiệu năng cao hơn / nhiều tính năng hơn.

ElastiCache là dịch vụ quản lý cho Redis / Memcached — tương tự như RDS nhưng dành cho cache.

  • Kho dữ liệu in-memory, độ trễ dưới một millisecond (sub-millisecond).
  • Bạn chọn loại ElastiCache instance (ví dụ cache.m6g.large).
  • Hỗ trợ Clustering (Redis), Multi AZ, và Read Replicas (sharding).
  • Bảo mật qua IAM, Security Groups, KMS, và Redis Auth.
  • Backup / Snapshot / Point in time restore.
  • Bảo trì được quản lý và theo lịch.
  • Cần sửa một phần code ứng dụng để khai thác được cache.
  • Use case: key/value store, đọc thường xuyên, ghi ít, cache kết quả truy vấn DB, lưu session data cho website; không dùng được SQL.

DynamoDBcông nghệ độc quyền của AWS, một database NoSQL serverless được quản lý, độ trễ millisecond.

  • Capacity mode: provisioned capacity với auto-scaling tùy chọn, hoặc on-demand capacity.
  • Có thể thay thế ElastiCache trong vai trò key/value store — ví dụ lưu session data, dùng kèm tính năng TTL.
  • Tính sẵn sàng cao, Multi AZ mặc định, read và write được tách rời (decoupled), có khả năng transaction.
  • DAX cluster làm read cache, độ trễ đọc ở mức microsecond.
  • Bảo mật, xác thực và phân quyền đều làm qua IAM.
  • Event Processing: DynamoDB Streams để tích hợp với AWS Lambda, hoặc Kinesis Data Streams.
  • Global Table: cấu hình active-active.
  • Automated backup tới 35 ngày với PITR (restore ra table mới), hoặc on-demand backup.
  • Export sang S3 không tiêu tốn RCU trong phạm vi cửa sổ PITR; import từ S3 không tiêu tốn WCU.
  • Rất tốt để tiến hóa schema nhanh.
  • Use case: phát triển ứng dụng serverless (các document nhỏ, hàng trăm KB), distributed serverless cache.

Trong ngữ cảnh chương này, S3 được nhìn như một loại database: nó là một key/value store dành cho object.

  • Rất tốt cho object lớn, không tốt lắm cho rất nhiều object nhỏ.
  • Serverless, scale vô hạn, object lớn nhất là 5 TB, có versioning.
  • Tiers: S3 Standard, S3 Infrequent Access, S3 Intelligent, S3 Glacier — kèm lifecycle policy.
  • Tính năng: Versioning, Encryption, Replication, MFA-Delete, Access Logs…
  • Bảo mật: IAM, Bucket Policies, ACL, Access Points, Object Lambda, CORS, Object/Vault Lock.
  • Mã hóa: SSE-S3, SSE-KMS, SSE-C, client-side, TLS in transit, default encryption.
  • Thao tác theo lô trên object bằng S3 Batch, liệt kê file bằng S3 Inventory.
  • Hiệu năng: Multi-part upload, S3 Transfer Acceleration, S3 Select.
  • Tự động hóa: S3 Event Notifications (SNS, SQS, Lambda, EventBridge).
  • Use case: file tĩnh, key value store cho file lớn, website hosting.

Cách hiểu nhanh nhất: Aurora là “bản AWS hóa” của PostgreSQL / MySQL, thì DocumentDB là điều tương tự dành cho MongoDB (MongoDB là một database NoSQL).

  • MongoDB được dùng để lưu, truy vấn và index dữ liệu JSON.
  • Có các “khái niệm triển khai” tương tự Aurora.
  • Được quản lý hoàn toàn, tính sẵn sàng cao nhờ nhân bản trên 3 AZ.
  • Storage của DocumentDB tự động tăng theo bước 10GB.
  • Tự scale để đáp ứng workload lên tới hàng triệu request mỗi giây.

Neptunegraph database được quản lý hoàn toàn. Bộ dữ liệu dạng graph phổ biến nhất là một mạng xã hội: người dùng có bạn bè, bài viết có bình luận, bình luận có lượt like từ người dùng, người dùng share và like bài viết của nhau…

  • Tính sẵn sàng cao trên 3 AZ, với tối đa 15 read replicas.
  • Dùng để xây và chạy ứng dụng làm việc với các tập dữ liệu có độ liên kết caođược tối ưu cho các truy vấn phức tạp và khó kiểu đó.
  • Có thể lưu tới hàng tỷ mối quan hệtruy vấn graph với độ trễ millisecond.
  • Tính sẵn sàng cao nhờ nhân bản trên nhiều AZ.
  • Rất tốt cho knowledge graph (như Wikipedia), phát hiện gian lận (fraud detection), hệ thống gợi ý (recommendation engines), và mạng xã hội.

Neptune Streamschuỗi thay đổi có thứ tự, theo thời gian thực của mọi thay đổi trên dữ liệu graph của bạn.

  • Các thay đổi có ngay lập tức sau khi ghi.
  • Không có bản trùng lặp (no duplicates), thứ tự chặt (strict order).
  • Dữ liệu stream truy cập được qua một HTTP REST API.
  • Use case:
    • Gửi thông báo khi có những thay đổi nhất định.
    • Giữ dữ liệu graph đồng bộ sang một kho dữ liệu khác (ví dụ S3, OpenSearch, ElastiCache).
    • Nhân bản dữ liệu giữa các region trong Neptune.

Về cách dùng: một Streams reader application gửi HTTP Get Request tới Streams API của Neptune Cluster, rồi đẩy tiếp dữ liệu sang OpenSearch, S3, ElastiCache…

Apache Cassandra là một database NoSQL phân tán mã nguồn mở. Amazon Keyspacesdịch vụ database tương thích Apache Cassandra được quản lý.

  • Serverless, scale được, tính sẵn sàng cao, được AWS quản lý hoàn toàn.
  • Tự động scale table lên/xuống theo traffic của ứng dụng.
  • Table được nhân bản 3 lần trên nhiều AZ.
  • Dùng Cassandra Query Language (CQL).
  • Độ trễ single-digit millisecond ở mọi quy mô, hàng nghìn request mỗi giây.
  • Capacity: On-demand mode, hoặc provisioned mode với auto-scaling.
  • encryption, backup, và Point-In-Time Recovery (PITR) tới 35 ngày.
  • Use case: lưu thông tin thiết bị IoT, dữ liệu time-series

Timestreamtime series database được quản lý hoàn toàn, nhanh, scale được, và serverless.

  • Tự scale lên/xuống để điều chỉnh capacity.
  • Lưu và phân tích hàng nghìn tỷ event mỗi ngày.
  • Nhanh hơn hàng nghìn lầnchi phí chỉ 1/10 so với database quan hệ.
  • scheduled queries, multi-measure records, và tương thích SQL.
  • Phân tầng lưu trữ dữ liệu (data storage tiering): dữ liệu gần đây giữ trong memory, dữ liệu lịch sử giữ ở kho lưu trữ tối ưu chi phí.
  • Có sẵn các hàm phân tích time series (built-in time series analytics functions) — giúp nhận diện pattern gần thời gian thực.
  • Mã hóa cả khi truyền và khi lưu (in transit and at rest).
  • Use case: ứng dụng IoT, ứng dụng vận hành (operational applications), phân tích thời gian thực

Về kiến trúc, Timestream nằm giữa hai phía:

  • Nguồn đẩy dữ liệu vào: AWS IoT, Kinesis Data Streams (trực tiếp hoặc qua Lambda), Prometheus, Amazon MSK, Kinesis Data Analytics for Apache Flink.
  • Bên tiêu thụ dữ liệu: Amazon QuickSight, Amazon SageMaker, và bất kỳ kết nối JDBC nào.
Dịch vụ Chốt lại cho kỳ thi
RDS RDBMS/OLTP, 6 engine + Custom; Read Replicas + Multi AZ; PITR tới 35 ngày; auto-scaling storage; RDS Custom chỉ cho Oracle & SQL Server; bảo trì có downtime
Aurora Tương thích PostgreSQL/MySQL, tách storage và compute; 6 bản sao / 3 AZ, self-healing; endpoint riêng cho writer và reader; Serverless cho workload khó đoán; Global: 16 read instance/region, < 1 giây; Cloning nhanh hơn restore snapshot
ElastiCache Redis/Memcached, in-memory sub-millisecond, phải chọn instance type, Clustering + Multi AZ + Read Replicas; cần sửa code ứng dụng; không dùng SQL
DynamoDB NoSQL serverless độc quyền AWS, Multi AZ mặc định, provisioned (có auto-scaling) hoặc on-demand; DAX cho read cache microsecond; Streams → Lambda/Kinesis; Global Table active-active; PITR 35 ngày; export S3 không tốn RCU, import không tốn WCU; document hàng trăm KB
S3 Key/value store cho object, max 5 TB, serverless, scale vô hạn; tiers Standard / IA / Intelligent / Glacier + lifecycle; SSE-S3, SSE-KMS, SSE-C, client-side; tốt cho object lớn, không tốt cho nhiều object nhỏ
DocumentDB “Aurora của MongoDB”, NoSQL document JSON, 3 AZ, storage tăng theo bước 10GB, hàng triệu request/giây
Neptune Graph database, 3 AZ, tới 15 read replicas, hàng tỷ quan hệ, truy vấn millisecond; knowledge graph, fraud detection, recommendation, social network; Neptune Streams: thứ tự chặt, không trùng lặp, đọc qua HTTP REST API
Keyspaces Apache Cassandra được quản lý, serverless, CQL, table nhân bản 3 lần trên nhiều AZ, single-digit ms, on-demand hoặc provisioned + auto-scaling, PITR 35 ngày; IoT & time-series
Timestream Time series serverless, nhanh hơn 1000x và rẻ hơn 10x so với DB quan hệ, hàng nghìn tỷ event/ngày, tiering memory + storage rẻ, hàm phân tích time series sẵn có
Bản đồ chọn database Cần join → RDS/Aurora · key/value siêu nhanh → DynamoDB/ElastiCache · object lớn → S3/Glacier · analytics/BI → Redshift, Athena, EMR · free text search → OpenSearch · graph → Neptune · ledger → QLDB · time series → Timestream