Lộ trình
Amazon Web ServicesCơ bảnTuần 2: Dịch vụ cốt lõi (Compute, Storage, Database, Networking)Bài 12 / 30

Ngày 12: Database — Amazon RDS, Aurora và DynamoDB

Thời lượng: 45 phút
Mục tiêu: 2 nhiệm vụ chính
Tiến độ lộ trình
aws-clf-c02ngày 12
hoàn thành12 / 30 bài
Bối cảnh bài học

Chọn relational hay NoSQL dựa trên mô hình dữ liệu, transaction và access pattern.

đọc hiểuthực hànhcheckpoint
Bài giảng hôm nay

Học hiểu, rồi mới thực hành

Chọn relational hay NoSQL dựa trên mô hình dữ liệu, transaction và access pattern.

Bắt đầu đọc bài giảng

Nhiệm vụ bài học hôm nay

  • Tìm hiểu RDS, Aurora, DynamoDB
  • Phân biệt SQL và NoSQL trên AWS
Instructor walkthrough

Bài giảng chi tiết: từ bài toán đến bằng chứng

Scenario xuyên suốt

Một hệ thống đặt hàng cần transaction/join, nhưng session và lookup key-value cần scale theo access pattern. Nếu chọn database theo tên phổ biến thay vì consistency, transaction và query pattern, kiến trúc sẽ khó scale hoặc sai semantics.

01Đọc bài toán

Xác định actor, workload, constraint và trạng thái cuối cần đạt.

02Vẽ luồng / boundary

Chỉ ra request, dependency, identity và failure domain trước khi chọn công cụ.

03Chọn và thực hành

Thay đổi nhỏ nhất trong lab cô lập; command nào cũng phải nói rõ nó kiểm tra điều gì.

04Kiểm chứng / recovery

Đối chiếu trạng thái thực tế, tạo một failure variant và ghi cách hoàn tác.

Cách nối lý thuyết với thực tế
  • RDS/Aurora là relational managed database; schema, query, IAM và data vẫn là trách nhiệm cần thiết của khách hàng.
  • Multi-AZ chủ yếu tăng availability/failover; Read Replica chủ yếu scale read.
  • DynamoDB là key-value/document; partition key và access pattern phải thiết kế trước.
  • Managed service giảm operational work, không loại bỏ backup, encryption, network và cost management.

Mục tiêu bài học

Chọn relational hay NoSQL dựa trên mô hình dữ liệu, transaction và access pattern.

Bài giảng chi tiết

Bài toán thực tế

Một hệ thống đặt hàng cần transaction/join, nhưng session và lookup key-value cần scale theo access pattern. Nếu chọn database theo tên phổ biến thay vì consistency, transaction và query pattern, kiến trúc sẽ khó scale hoặc sai semantics.

Đừng học nội dung này như một danh sách tên dịch vụ. Hãy đi theo chuỗi: requirement → khái niệm → quyết định → bằng chứng. Một câu trả lời tốt phải nói được vì sao lựa chọn phù hợp, phương án gần nhất bị loại ở đâu, và kiểm tra nào chứng minh lựa chọn đó hoạt động.

Khái niệm được giải thích theo scenario

  1. RDS/Aurora là relational managed database; schema, query, IAM và data vẫn là trách nhiệm cần thiết của khách hàng.
  2. Multi-AZ chủ yếu tăng availability/failover; Read Replica chủ yếu scale read.
  3. DynamoDB là key-value/document; partition key và access pattern phải thiết kế trước.
  4. Managed service giảm operational work, không loại bỏ backup, encryption, network và cost management.

Ví dụ khi gặp một scenario mới, hãy thay các từ khóa trong đề bằng một hệ thống cụ thể: ai là người dùng, dữ liệu đi qua đâu, thành phần nào có thể lỗi, quyền nào cần có và điều gì phải được quan sát. Cách làm này giúp phân biệt các đáp án gần đúng thay vì chọn theo trí nhớ tên service.

flowchart LR
  A[Scenario / requirement] --> B[Concept and boundary]
  B --> C[Service or control choice]
  C --> D[Evidence and trade-off]
  D --> E[Failure variant]

Khái niệm cốt lõi

RDS managed engine quan hệ, giảm vận hành OS/patching. Multi-AZ chủ yếu tăng availability và failover; Read Replica chủ yếu phục vụ read scaling/replication. Aurora là relational tương thích MySQL/PostgreSQL. DynamoDB là NoSQL key-value/document; partition key quyết định phân phối dữ liệu và access pattern phải được thiết kế trước.

Ví dụ giảng viên: phân loại một quyết định cloud

Bắt đầu từ access pattern: order cần transaction/join/constraint thì relational thường phù hợp; session lookup theo key và throughput lớn có thể phù hợp DynamoDB. Multi-AZ giải quyết failure/failover của database primary trong phạm vi thiết kế; Read Replica giải quyết read scaling/replication lag trade-off; backup/PITR giải quyết recovery, không thay hai mục tiêu kia.

Failure drill: primary lỗi, replica lag, query reporting làm nghẽn transaction, partition key tạo hot partition và database bị public. Với mỗi lỗi ghi signal, impact, control và evidence; không dùng “managed” để bỏ qua schema, IAM, backup hoặc network boundary.

Thực hành có kiểm soát

Vẽ hệ thống đặt hàng cần join/transaction với RDS và session key-value với DynamoDB. Đánh dấu Multi-AZ cho HA, Read Replica cho read-heavy workload. Không tạo database public chỉ để kết nối cho dễ.

Expected state và recovery

Trước khi thực hành, ghi rõ target/account/region, trạng thái hiện tại và output mong đợi. Sau thao tác, kiểm chứng bằng trạng thái thực tế hoặc command phù hợp; nếu kết quả sai, giữ lại evidence, quay về thay đổi nhỏ nhất và cleanup đúng owner. Không coi exit code 0 hoặc thông báo “success” là bằng chứng duy nhất.

  1. Chọn relational hoặc NoSQL dựa trên requirement, không dựa vào tên service.
  2. Phân biệt Multi-AZ, Read Replica và backup.
  3. Giải thích partition key quyết định cách DynamoDB phân phối/access dữ liệu.
  4. Vẽ network boundary khiến database không nhận inbound Internet trực tiếp.

Bẫy đề thi và cách tự kiểm tra

Managed không có nghĩa AWS chịu trách nhiệm cho schema, query, IAM và dữ liệu. Multi-AZ không phải Read Replica. DynamoDB không phải “RDS không có schema”.

Terminal reference

Command list và cách dùng

Chạy từng lệnh theo đúng thứ tự. Trước các lệnh có thể tạo hoặc thay đổi tài nguyên, hãy kiểm tra profile, account và region.

Commands · read-only checkpoints
aws rds describe-db-instances --profile study --query "DBInstances[].{Id:DBInstanceIdentifier,Engine:Engine,MultiAZ:MultiAZ,Public:PubliclyAccessible}" --output table
aws dynamodb list-tables --profile study --output table
Hands-on lab

Thực hành theo scenario

Tạo decision table cho order transaction, read-heavy reporting và session lookup. Với mỗi dòng ghi consistency, join, latency, read/write pattern và failover requirement. Chỉ đọc metadata database nếu có sandbox; không tạo database public hoặc để password trong markdown.

Evidence checkpoint

Kiểm chứng kết quả

Không coi lệnh chạy thành công là đủ. Hãy đối chiếu output với trạng thái mong đợi:

  • Chọn relational hoặc NoSQL dựa trên requirement, không dựa vào tên service.
  • Phân biệt Multi-AZ, Read Replica và backup.
  • Giải thích partition key quyết định cách DynamoDB phân phối/access dữ liệu.
  • Vẽ network boundary khiến database không nhận inbound Internet trực tiếp.
Transfer to exam / production

Bẫy thường gặp và trade-off

Managed không có nghĩa AWS chịu trách nhiệm cho schema, query, IAM và dữ liệu. Multi-AZ không phải Read Replica. DynamoDB không phải “RDS không có schema”.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Lựa chọn nào chủ yếu tăng khả năng đọc của database quan hệ?

Kết thúc bài

Checklist trước khi sang Ngày 2