Databases trên AWS – chọn đúng loại
1. Chọn đúng database
Phần tiêu đề “1. Chọn đúng database”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?
2. Các loại database
Phần tiêu đề “2. Các loại database”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.
3. Amazon RDS – tổng kết
Phần tiêu đề “3. Amazon RDS – tổng kết”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 Replicas và Multi 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.
4. Amazon Aurora – tổng kết
Phần tiêu đề “4. Amazon Aurora – tổng kết”Aurora có API 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 AZ — tí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: có 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 Global — tố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.
5. Amazon ElastiCache – tổng kết
Phần tiêu đề “5. Amazon ElastiCache – tổng kết”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.
- Có 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.
6. Amazon DynamoDB – tổng kết
Phần tiêu đề “6. Amazon DynamoDB – tổng kết”DynamoDB là cô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.
7. Amazon S3 – tổng kết
Phần tiêu đề “7. Amazon S3 – tổng kết”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.
8. DocumentDB
Phần tiêu đề “8. DocumentDB”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.
9. Amazon Neptune
Phần tiêu đề “9. Amazon Neptune”Neptune là graph 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ệ và 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 Streams
Phần tiêu đề “Neptune Streams”Neptune Streams là chuỗ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…
10. Amazon Keyspaces (for Apache Cassandra)
Phần tiêu đề “10. Amazon Keyspaces (for Apache Cassandra)”Apache Cassandra là một database NoSQL phân tán mã nguồn mở. Amazon Keyspaces là dị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.
- Có 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…
11. Amazon Timestream
Phần tiêu đề “11. Amazon Timestream”Timestream là time 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ần và chi phí chỉ 1/10 so với database quan hệ.
- Có 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.
Tóm tắt nhanh
Phần tiêu đề “Tóm tắt nhanh”| 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 |