Cơ sở dữ liệu & Phân tích dữ liệu
1. Vì sao cần database riêng
Phần tiêu đề “1. Vì sao cần database riêng”Ở các chương trước, bạn đã biết nhiều cách lưu dữ liệu trên đĩa: EBS (ổ đĩa gắn cho EC2), Instance Store (đĩa tạm trên EC2), EFS (ổ đĩa mạng chia sẻ), và S3 (lưu trữ object). Những dịch vụ này rất tốt để lưu file — ảnh, video, log, backup — nhưng chúng có giới hạn rõ ràng: bạn không thể hỏi “tìm tất cả khách hàng ở Hà Nội có đơn hàng trên 1 triệu trong tháng 7” một cách hiệu quả nếu dữ liệu chỉ là các file rời rạc trên S3. Để làm được việc đó, bạn cần một database — nơi dữ liệu được cấu trúc hóa, có index (giống mục lục sách) để tra cứu nhanh, và có thể định nghĩa quan hệ giữa các tập dữ liệu.
Không có một loại database “vạn năng” phù hợp cho mọi bài toán. Mỗi loại database được thiết kế tối ưu cho một mục đích riêng: có loại tối ưu cho giao dịch nhanh (đặt hàng, thanh toán), có loại tối ưu cho phân tích số liệu lớn (báo cáo doanh thu theo quý), có loại tối ưu cho truy vấn siêu nhanh dạng key-value (giỏ hàng, session người dùng), có loại tối ưu cho dữ liệu dạng mạng lưới quan hệ (ai là bạn của ai trên mạng xã hội). Vì vậy AWS cung cấp rất nhiều dịch vụ database khác nhau, và một trong những kỹ năng quan trọng khi thiết kế hệ thống là chọn đúng loại database cho đúng bài toán.
2. Relational Database (SQL)
Phần tiêu đề “2. Relational Database (SQL)”Relational Database (cơ sở dữ liệu quan hệ) trông giống như các bảng tính Excel có liên kết với nhau. Ví dụ: một bảng Students (sinh viên) chứa thông tin sinh viên, một bảng Subjects (môn học) chứa thông tin môn học, một bảng Departments (khoa) chứa thông tin khoa. Các bảng này liên kết với nhau thông qua khóa ngoại (foreign key) — ví dụ bảng Students có cột department_id trỏ tới bảng Departments. Nhờ cấu trúc bảng rõ ràng và quan hệ giữa các bảng, bạn dùng ngôn ngữ SQL (Structured Query Language) để truy vấn: “lấy tất cả sinh viên thuộc khoa Công nghệ Thông tin, sắp xếp theo điểm trung bình giảm dần”.
Đặc điểm của relational database: schema (cấu trúc bảng, tên cột, kiểu dữ liệu) phải được định nghĩa trước và tương đối cố định; dữ liệu được đảm bảo tính toàn vẹn (ví dụ không thể có sinh viên thuộc khoa không tồn tại); rất mạnh trong các giao dịch cần độ chính xác cao (chuyển tiền ngân hàng, đặt hàng online) — gọi là OLTP (Online Transaction Processing).
3. NoSQL Database là gì?
Phần tiêu đề “3. NoSQL Database là gì?”NoSQL = “non-SQL” = “non-relational” — tức là các database không tổ chức dữ liệu theo dạng bảng có quan hệ chặt như trên. Chúng được xây dựng cho các “kiểu dữ liệu” (data model) cụ thể, với schema linh hoạt, phù hợp cho các ứng dụng hiện đại cần thay đổi nhanh. Các lợi ích chính của NoSQL:
- Linh hoạt (Flexibility): dễ dàng thay đổi cấu trúc dữ liệu theo thời gian mà không cần “sửa schema” như SQL.
- Khả năng mở rộng (Scalability): được thiết kế để scale-out (mở rộng theo chiều ngang) bằng các cluster phân tán trên nhiều máy.
- Hiệu năng cao (High-performance): tối ưu riêng cho từng kiểu dữ liệu cụ thể.
- Chức năng chuyên biệt (Highly functional): mỗi loại NoSQL có các kiểu dữ liệu/API tối ưu cho use-case riêng.
Các loại NoSQL phổ biến: key-value (lưu theo cặp khóa-giá trị, ví dụ DynamoDB), document (lưu dạng document JSON/BSON, ví dụ DocumentDB, MongoDB), graph (lưu dạng đồ thị quan hệ, ví dụ Neptune), in-memory (lưu trong RAM để truy xuất siêu nhanh, ví dụ ElastiCache), và search (tối ưu cho tìm kiếm văn bản).
NoSQL thường ở dạng JSON
Phần tiêu đề “NoSQL thường ở dạng JSON”JSON (JavaScript Object Notation) là dạng dữ liệu rất phổ biến phù hợp với mô hình NoSQL. Dữ liệu JSON có thể lồng nhau (nested), các trường (field) có thể thay đổi theo thời gian, và hỗ trợ các kiểu dữ liệu mới như mảng (array). Ví dụ một object JSON mô tả một người:
{ "name": "Nguyen Van A", "age": 30, "cars": ["Toyota", "Honda"], "address": { "street": "123 Nguyen Trai", "city": "Ha Noi" }}So với bảng SQL cứng nhắc, JSON cho phép mỗi “record” có cấu trúc khác nhau (một người có thể không có trường “cars”), và có thể lồng dữ liệu (trường “address” chứa một object con) — điều mà bảng SQL truyền thống làm rất khó khăn.
4. Database trên AWS
Phần tiêu đề “4. Database trên AWS”AWS cung cấp các dịch vụ database được quản lý (managed) với rất nhiều lợi ích: cấp phát nhanh chóng (Quick Provisioning), tính khả dụng cao (High Availability), khả năng scale theo chiều dọc và chiều ngang (Vertical & Horizontal Scaling), backup & restore tự động, AWS lo phần vận hành, nâng cấp, patch hệ điều hành, và giám sát/cảnh báo (monitoring/alerting) cho bạn.
Điều quan trọng cần nhớ: về lý thuyết, bạn có thể tự cài bất kỳ công nghệ database nào (MySQL, PostgreSQL, MongoDB…) lên một EC2 instance. Nhưng khi đó, bạn phải tự chịu trách nhiệm về: khả năng chịu lỗi (resiliency), backup, patch bảo mật, tính sẵn sàng cao (High Availability), fault tolerance, và việc scale khi tải tăng. Đây chính là điểm khác biệt cốt lõi giữa “tự triển khai database trên EC2” và “dùng dịch vụ database được quản lý của AWS” — và đây cũng là ví dụ điển hình của Shared Responsibility Model đã học ở Chương 1: dùng dịch vụ managed, AWS gánh phần vận hành hạ tầng nhiều hơn, bạn chỉ cần lo về dữ liệu và cấu hình ứng dụng.
5. Amazon RDS
Phần tiêu đề “5. Amazon RDS”RDS (Relational Database Service) là dịch vụ database quan hệ được AWS quản lý, sử dụng SQL làm ngôn ngữ truy vấn. RDS hỗ trợ 6 “engine”: PostgreSQL, MySQL, MariaDB, Oracle, Microsoft SQL Server, IBM DB2, và đặc biệt là Amazon Aurora — engine độc quyền của AWS (sẽ nói ở mục sau).
So với việc tự cài database lên EC2, RDS mang lại các lợi thế lớn:
- Tự động cấp phát (provisioning) và tự động patch hệ điều hành.
- Backup liên tục (continuous backups) và có thể khôi phục về đúng một mốc thời gian bất kỳ trong quá khứ — gọi là Point in Time Restore.
- Dashboard giám sát (monitoring) trực quan.
- Read Replicas giúp tăng hiệu năng đọc.
- Cấu hình Multi-AZ để phục hồi sau thảm họa (Disaster Recovery).
- Có “maintenance window” định kỳ để nâng cấp phiên bản.
- Có thể scale theo chiều dọc (nâng cấp loại instance) và chiều ngang (thêm read replica).
- Dữ liệu được lưu trên EBS ở phía sau.
Điểm đánh đổi duy nhất: vì đây là dịch vụ managed, bạn không thể SSH vào instance database để tùy biến sâu ở tầng hệ điều hành.
Kiến trúc điển hình khi dùng RDS: người dùng gửi request tới Elastic Load Balancer, load balancer phân phối tới các EC2 instance (có thể nằm trong Auto Scaling Group) chạy ứng dụng, và các EC2 này đọc/viết dữ liệu qua kết nối SQL tới RDS database phía sau.
6. Amazon Aurora
Phần tiêu đề “6. Amazon Aurora”Amazon Aurora là một công nghệ database độc quyền của AWS (chưa được mã nguồn mở), hỗ trợ hai engine tương thích: PostgreSQL và MySQL. Aurora được quảng cáo là “được tối ưu hóa cho cloud của AWS” (cloud optimized), với hiệu năng nhanh hơn tới 5 lần so với MySQL chạy trên RDS thông thường, và 3 lần so với PostgreSQL trên RDS. Dung lượng lưu trữ của Aurora tự động tăng theo từng bước 10GB, lên tới tối đa 128TB — bạn không cần tự quản lý dung lượng ổ đĩa. Chi phí của Aurora cao hơn RDS thông thường khoảng 20%, nhưng đổi lại hiệu năng và độ tin cậy tốt hơn đáng kể — vì vậy nhiều công ty coi đây là lựa chọn “đắt hơn một chút nhưng hiệu quả hơn nhiều”.
Aurora Serverless
Phần tiêu đề “Aurora Serverless”Aurora Serverless tự động khởi tạo và tự động scale năng lực (capacity) của database dựa trên nhu cầu sử dụng thực tế — bạn không cần lên kế hoạch trước về capacity (no capacity planning). Đây là lựa chọn có mức quản lý (management overhead) thấp nhất, và bạn chỉ trả tiền theo giây sử dụng thực tế (pay per second) — rất tiết kiệm chi phí. Aurora Serverless phù hợp cho các workload không thường xuyên, gián đoạn, hoặc khó dự đoán (ví dụ: một ứng dụng nội bộ chỉ có người dùng vào giờ hành chính). Về kiến trúc, client kết nối tới một “Proxy Fleet” do Aurora quản lý, proxy này định tuyến request tới một Shared Storage Volume linh hoạt phía sau — cho phép việc scale lên/xuống diễn ra minh bạch với ứng dụng.
7. Triển khai RDS
Phần tiêu đề “7. Triển khai RDS”RDS (và Aurora) hỗ trợ 3 mô hình triển khai chính để tăng hiệu năng đọc hoặc tăng độ sẵn sàng — đây là chủ đề rất dễ gây nhầm lẫn khi đi thi, vì tên nghe giống nhau nhưng mục đích hoàn toàn khác nhau.
| Mô hình | Mục đích chính | Cách hoạt động | Giới hạn |
|---|---|---|---|
| Read Replicas | Tăng hiệu năng đọc (scale read workload) | Dữ liệu chỉ được viết vào database chính (main DB); các bản sao (replica) chỉ dùng để đọc; nhân bản (replication) là bất đồng bộ (async) | Tạo được tối đa 15 Read Replicas |
| Multi-AZ | Tính sẵn sàng cao (High Availability), chuyển đổi dự phòng (failover) khi một AZ gặp sự cố | Dữ liệu chỉ đọc/viết ở database chính; bản dự phòng ở AZ khác nhân bản đồng bộ (sync) để đảm bảo không mất dữ liệu khi failover | Chỉ có 1 AZ dự phòng khác làm failover |
| Multi-Region (dùng Read Replicas liên vùng) | Disaster Recovery cấp vùng (region); hiệu năng đọc tốt cho người dùng ở xa | Region chính ghi dữ liệu, nhân bản tới các Read Replica ở các region khác (ví dụ eu-west-1, ap-southeast-2); ứng dụng ở mỗi region đọc dữ liệu tại local, nhưng việc viết vẫn phải quay về region chính | Có phát sinh chi phí nhân bản (replication cost) giữa các region |
Tóm lại: Read Replicas giải quyết bài toán “đọc quá nhiều” (scale reads), Multi-AZ giải quyết bài toán “một trung tâm dữ liệu bị sự cố” (High Availability), còn Multi-Region giải quyết bài toán “cả một region gặp sự cố” hoặc “người dùng ở xa cần đọc dữ liệu nhanh tại chỗ” (Disaster Recovery + hiệu năng toàn cầu).
8. Amazon ElastiCache
Phần tiêu đề “8. Amazon ElastiCache”Giống như RDS là dịch vụ quản lý cho Relational Database, Amazon ElastiCache là dịch vụ quản lý cho Redis hoặc Memcached — hai công nghệ cache phổ biến. Cache là loại database “trong bộ nhớ” (in-memory), có hiệu năng rất cao và độ trễ (latency) rất thấp, vì dữ liệu được lưu trong RAM thay vì trên đĩa. ElastiCache giúp giảm tải cho database chính đối với các workload đọc nhiều (read-intensive workloads) — vì thay vì mỗi lần đọc lại truy vấn xuống database chậm, ứng dụng có thể đọc trực tiếp từ cache siêu nhanh. Giống các dịch vụ managed khác, AWS lo toàn bộ việc bảo trì OS, tối ưu hóa, cấu hình, giám sát, phục hồi sự cố và backup.
Kiến trúc điển hình: Load Balancer phân phối request tới các EC2 instance chạy ứng dụng; ứng dụng có thể đọc/viết từ database (SQL, chậm hơn) hoặc đọc/viết từ cache (ElastiCache) nếu dữ liệu đã có sẵn trong cache (nhanh hơn nhiều, dạng in-memory).
9. DynamoDB, DAX & Global Tables
Phần tiêu đề “9. DynamoDB, DAX & Global Tables”Amazon DynamoDB là database NoSQL dạng key-value, được quản lý hoàn toàn (fully managed) bởi AWS. Đây là một database serverless và phân tán (distributed), có khả năng đáp ứng hàng triệu request mỗi giây, xử lý hàng nghìn tỷ dòng dữ liệu (trillions of rows), với dung lượng lưu trữ hàng trăm TB. DynamoDB có tính sẵn sàng cao nhờ tự động nhân bản dữ liệu trên 3 Availability Zone, cung cấp hiệu năng nhanh và ổn định với độ trễ ở mức single-digit millisecond (dưới 10ms). DynamoDB tích hợp chặt với IAM để quản lý bảo mật/quyền truy cập, có chi phí thấp và khả năng auto scaling. DynamoDB còn hỗ trợ 2 loại table class: Standard và Standard-Infrequent Access (IA) — loại IA rẻ hơn cho dữ liệu ít truy cập.
DynamoDB Accelerator (DAX)
Phần tiêu đề “DynamoDB Accelerator (DAX)”DAX là dịch vụ cache trong bộ nhớ (in-memory) được quản lý hoàn toàn, dùng riêng cho DynamoDB. DAX có thể cải thiện hiệu năng đọc lên tới 10 lần, đưa độ trễ từ mức “single-digit millisecond” xuống mức “microsecond” (micro giây). DAX an toàn, có khả năng scale và tính sẵn sàng cao.
DynamoDB Global Tables
Phần tiêu đề “DynamoDB Global Tables”Global Tables giúp một bảng DynamoDB có thể được truy cập với độ trễ thấp ở nhiều region khác nhau trên thế giới, theo mô hình nhân bản Active-Active — nghĩa là bạn có thể đọc và viết vào bảng ở bất kỳ AWS Region nào được cấu hình, dữ liệu sẽ tự động đồng bộ hai chiều. Ví dụ: một bảng được đặt ở cả N. Virginia và Paris, với dữ liệu nhân bản 2 chiều — người dùng ở Mỹ đọc/viết vào bảng ở N. Virginia, người dùng ở châu Âu đọc/viết vào bảng ở Paris, và cả hai bên đều nhìn thấy dữ liệu mới nhất.
10. Amazon Redshift
Phần tiêu đề “10. Amazon Redshift”Amazon Redshift dựa trên nền công nghệ PostgreSQL nhưng KHÔNG được dùng cho các giao dịch OLTP (đặt hàng, thanh toán liên tục). Thay vào đó, Redshift là dịch vụ OLAP – Online Analytical Processing, dùng cho phân tích dữ liệu và data warehousing (kho dữ liệu). Bạn không tải dữ liệu vào Redshift mỗi giây như hệ thống giao dịch, mà thường tải theo lô, ví dụ mỗi giờ một lần (load data once every hour).
Redshift có hiệu năng nhanh hơn tới 10 lần so với các data warehouse khác, có thể scale tới hàng petabyte dữ liệu. Lý do Redshift nhanh cho phân tích: nó dùng columnar storage (lưu dữ liệu theo cột thay vì theo dòng như SQL truyền thống) — điều này giúp các câu truy vấn tổng hợp (ví dụ: tính tổng doanh thu theo cột “revenue” của hàng triệu dòng) nhanh hơn rất nhiều vì chỉ cần đọc đúng cột cần thiết. Redshift cũng dùng Massively Parallel Query Execution (MPP) — chia truy vấn ra chạy song song trên nhiều node để tăng tốc, và có tính sẵn sàng cao. Về chi phí, bạn trả tiền theo số instance đã cấp phát (pay as you go). Redshift có interface SQL để truy vấn, và tích hợp tốt với các công cụ BI (Business Intelligence) như AWS QuickSight hoặc Tableau.
Redshift Serverless
Phần tiêu đề “Redshift Serverless”Redshift Serverless tự động cấp phát và tự động scale năng lực hạ tầng bên dưới của kho dữ liệu — bạn có thể chạy các workload phân tích mà không cần quản lý hạ tầng data warehouse, và chỉ trả tiền cho những gì thực sự dùng. Các use-case điển hình: báo cáo (reporting), xây dựng dashboard, phân tích thời gian thực (real-time analytics).
11. Amazon EMR
Phần tiêu đề “11. Amazon EMR”EMR là viết tắt của “Elastic MapReduce”. Dịch vụ này giúp bạn dễ dàng tạo các cluster Hadoop (công nghệ Big Data) để phân tích và xử lý khối lượng dữ liệu khổng lồ. Một cluster EMR có thể bao gồm hàng trăm EC2 instance làm việc cùng nhau. Ngoài Hadoop, EMR cũng hỗ trợ các framework Big Data phổ biến khác như Apache Spark, HBase, Presto, Flink.
EMR đảm nhiệm toàn bộ việc cấp phát và cấu hình cluster cho bạn, hỗ trợ auto-scaling, và có thể kết hợp với Spot Instances để tiết kiệm chi phí đáng kể (vì các job xử lý dữ liệu lớn thường có thể chịu được việc một số node bị gián đoạn). Các use-case điển hình của EMR: xử lý dữ liệu quy mô lớn (data processing), machine learning, đánh chỉ mục web (web indexing), và các bài toán Big Data nói chung.
12. Athena & QuickSight
Phần tiêu đề “12. Athena & QuickSight”Amazon Athena
Phần tiêu đề “Amazon Athena”Athena là dịch vụ truy vấn serverless để phân tích dữ liệu lưu trực tiếp trên S3, sử dụng ngôn ngữ SQL chuẩn — bạn không cần cấp phát bất kỳ server hay cluster nào. Athena hỗ trợ nhiều định dạng file: CSV, JSON, ORC, Avro, Parquet, và được xây dựng dựa trên nền công nghệ Presto. Về giá, Athena tính phí $5.00 cho mỗi TB dữ liệu được quét (scanned) trong quá trình truy vấn — vì vậy nếu bạn lưu dữ liệu ở dạng đã nén hoặc dạng columnar (như Parquet), Athena sẽ quét ít dữ liệu hơn và tiết kiệm chi phí hơn đáng kể.
Các use-case điển hình: business intelligence/phân tích/báo cáo, phân tích và truy vấn các loại log như VPC Flow Logs, ELB Logs, CloudTrail trails (các log này thường được lưu trên S3).
Amazon QuickSight
Phần tiêu đề “Amazon QuickSight”QuickSight là dịch vụ business intelligence (BI) serverless, được hỗ trợ bởi machine learning, dùng để tạo các dashboard tương tác (interactive dashboards). QuickSight có tốc độ nhanh, tự động scale, có thể nhúng (embeddable) vào ứng dụng khác, và tính phí theo mô hình per-session (trả theo mỗi lượt người dùng truy cập dashboard). Các use-case: phân tích kinh doanh (business analytics), xây dựng biểu đồ trực quan (visualizations), phân tích tùy biến theo yêu cầu (ad-hoc analysis), và có được các insight về kinh doanh dựa trên dữ liệu. QuickSight tích hợp tốt với nhiều nguồn dữ liệu: RDS, Aurora, Athena, Redshift, S3.
13. DocumentDB, Neptune, Timestream
Phần tiêu đề “13. DocumentDB, Neptune, Timestream”Ngoài các database “chủ lực” ở trên, AWS còn có một số dịch vụ NoSQL chuyên biệt cho các dạng dữ liệu đặc thù.
Amazon DocumentDB
Phần tiêu đề “Amazon DocumentDB”Nếu Aurora là “phiên bản AWS-hóa” của PostgreSQL/MySQL, thì DocumentDB chính là điều tương tự dành cho MongoDB — một database NoSQL dạng document, thường dùng để lưu trữ, truy vấn và đánh index dữ liệu JSON. DocumentDB có các khái niệm triển khai (deployment concepts) tương tự Aurora: được quản lý hoàn toàn (fully managed), có tính sẵn sàng cao nhờ nhân bản trên 3 AZ, dung lượng lưu trữ tự động tăng theo bước 10GB, và tự động scale để đáp ứng workload lên tới hàng triệu request mỗi giây.
Amazon Neptune
Phần tiêu đề “Amazon Neptune”Neptune là database graph (đồ thị) được quản lý hoàn toàn. Một ví dụ kinh điển về dữ liệu dạng đồ thị là 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 thích, người dùng chia sẻ/thích bài viết của nhau — tất cả tạo thành một mạng lưới các node và mối quan hệ (relationship) chằng chịt. Neptune có tính sẵn sàng cao trên 3 AZ, hỗ trợ tới 15 read replicas, giúp xây dựng và chạy các ứng dụng làm việc với dữ liệu có độ liên kết cao — tối ưu cho các truy vấn phức tạp mà database quan hệ thông thường xử lý rất chậm. Neptune có thể lưu hàng tỷ mối quan hệ và truy vấn đồ thị với độ trễ ở mức millisecond. Rất phù hợp 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.
Amazon Timestream
Phần tiêu đề “Amazon Timestream”Timestream là database time series (chuỗi thời gian) được quản lý hoàn toàn, nhanh, có khả năng scale, và serverless. Nó tự động scale lên/xuống để điều chỉnh năng lực, có thể lưu trữ và phân tích hàng nghìn tỷ sự kiện (events) mỗi ngày. Timestream nhanh hơn tới 1000 lần và chi phí chỉ bằng 1/10 so với dùng relational database cho cùng bài toán time series. Timestream có sẵn các hàm phân tích chuỗi thời gian (built-in time series analytics functions) để nhận diện các pattern gần theo thời gian thực — ví dụ dữ liệu từ cảm biến IoT, log theo mốc thời gian.
Amazon Managed Blockchain
Phần tiêu đề “Amazon Managed Blockchain”Blockchain cho phép xây dựng các ứng dụng mà nhiều bên có thể thực hiện giao dịch với nhau mà không cần một cơ quan trung gian đáng tin cậy (trusted central authority). Amazon Managed Blockchain là dịch vụ giúp bạn: tham gia vào các mạng blockchain công khai (public blockchain networks), hoặc tự tạo một mạng blockchain riêng, có khả năng mở rộng (scalable private network). Dịch vụ này tương thích với hai framework phổ biến: Hyperledger Fabric và Ethereum.
14. AWS Glue & AWS DMS
Phần tiêu đề “14. AWS Glue & AWS DMS”AWS Glue
Phần tiêu đề “AWS Glue”AWS Glue là dịch vụ ETL (Extract, Transform, Load) được quản lý hoàn toàn — hữu ích để chuẩn bị/biến đổi dữ liệu phục vụ cho phân tích. Glue hoàn toàn serverless. Một thành phần quan trọng của Glue là Glue Data Catalog — một danh mục (catalog) mô tả các tập dữ liệu bạn có, và catalog này có thể được các dịch vụ khác như Athena, Redshift, EMR sử dụng để biết “dữ liệu ở đâu, có cấu trúc gì” mà không cần bạn khai báo lại thủ công.
Luồng xử lý điển hình: dữ liệu thô nằm trong S3 Bucket và RDS → Glue Extract (trích xuất) dữ liệu từ các nguồn này → Glue ETL Transform (biến đổi, làm sạch, định dạng lại dữ liệu) → Load (tải) dữ liệu đã xử lý vào Redshift để phục vụ phân tích.
AWS DMS
Phần tiêu đề “AWS DMS”DMS giúp bạn di trú (migrate) database sang AWS một cách nhanh chóng và an toàn. DMS có khả năng tự phục hồi (self-healing) và chịu lỗi tốt (resilient). Điểm quan trọng: database nguồn vẫn tiếp tục hoạt động bình thường trong suốt quá trình di trú — nghĩa là hệ thống của bạn không cần dừng hoạt động để migrate. DMS hỗ trợ hai loại di trú:
- Homogeneous migrations: di trú giữa hai database cùng loại công nghệ, ví dụ Oracle sang Oracle.
- Heterogeneous migrations: di trú giữa hai công nghệ khác nhau, ví dụ Microsoft SQL Server sang Aurora.
Về mặt kỹ thuật, DMS chạy trên một EC2 instance, đóng vai trò trung gian đọc dữ liệu từ Source DB (database nguồn) và ghi liên tục vào Target DB (database đích) cho tới khi quá trình đồng bộ hoàn tất.
Tổng kết chương
Phần tiêu đề “Tổng kết chương”- Relational Database (OLTP): RDS (PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, DB2) và Aurora (proprietary, tương thích PostgreSQL/MySQL, nhanh hơn 3-5 lần) — dùng SQL. Phân biệt kỹ Read Replicas (đọc nhiều, async, tối đa 15) vs Multi-AZ (failover, sync, 1 AZ dự phòng) vs Multi-Region (disaster recovery liên vùng).
- In-memory Database: ElastiCache (Redis/Memcached) — cache để giảm tải database.
- Key/Value Database: DynamoDB (serverless, NoSQL) & DAX (cache riêng cho DynamoDB, chỉ dùng cho DynamoDB).
- Data Warehouse (OLAP): Redshift (SQL, columnar storage, phân tích/báo cáo, không dùng cho giao dịch).
- Hadoop Cluster: EMR — xử lý Big Data với Hadoop/Spark/Presto/Flink.
- Athena: truy vấn dữ liệu trên S3 bằng SQL, serverless, trả tiền theo TB dữ liệu quét.
- QuickSight: dashboard BI, serverless, tích hợp RDS/Aurora/Athena/Redshift/S3.
- DocumentDB: “Aurora cho MongoDB” — NoSQL document, dữ liệu JSON.
- Neptune: database dạng graph (đồ thị) — mạng xã hội, fraud detection, recommendation.
- Timestream: database time-series — dữ liệu theo thời gian, IoT, log.
- Amazon Managed Blockchain: mạng blockchain được quản lý, tương thích Hyperledger Fabric & Ethereum.
- Glue: dịch vụ ETL quản lý và Data Catalog dùng chung cho Athena/Redshift/EMR.
- DMS: di trú database (homogeneous & heterogeneous), database nguồn vẫn hoạt động trong suốt quá trình migrate.