Phần này tập trung vào cách thiết kế giải pháp cơ sở dữ liệu trên AWS sao cho tối ưu chi phí nhưng vẫn đáp ứng được yêu cầu về hiệu năng, độ tin cậy, khả năng mở rộng và khả năng khôi phục dữ liệu.
Nội dung chính bao gồm cách thiết kế policy sao lưu và lưu giữ dữ liệu, xác định tần suất snapshot phù hợp, lựa chọn database engine như MySQL hoặc PostgreSQL, so sánh các dịch vụ cơ sở dữ liệu như Amazon RDS, Amazon DynamoDB, Aurora Serverless và DynamoDB On-Demand.
Bên cạnh đó, phần này cũng trình bày cách chọn loại cơ sở dữ liệu phù hợp theo định dạng dữ liệu, chẳng hạn như dữ liệu quan hệ, NoSQL, columnar, time series và graph database. Cuối cùng là các công cụ hỗ trợ di chuyển schema và dữ liệu như AWS Database Migration Service (DMS) và AWS Schema Conversion Tool (SCT).
Nói ngắn gọn, đây là phần giúp bạn chọn đúng “ngôi nhà” cho dữ liệu: vừa đủ rộng, đủ nhanh, dễ khôi phục khi có sự cố, nhưng không khiến chi phí database âm thầm tăng như tiền cà phê mỗi ngày.
Mục lục
- Thiết kế policy sao lưu và lưu giữ phù hợp
- Xác định database engine phù hợp
- Xác định các dịch vụ cơ sở dữ liệu AWS hiệu quả về chi phí
- Xác định các loại cơ sở dữ liệu AWS hiệu quả về chi phí
Thiết kế policy sao lưu và lưu giữ phù hợp, ví dụ: tần suất snapshot
Sao lưu rất quan trọng cho việc bảo vệ dữ liệu và khôi phục sau thảm họa. Thiết kế policy sao lưu và lưu giữ phù hợp là điều thiết yếu để giảm thiểu chi phí, đồng thời vẫn bảo đảm dữ liệu luôn có thể khôi phục khi cần.
Snapshot
Snapshot là bản sao lưu tăng dần, ghi lại trạng thái của cơ sở dữ liệu tại một thời điểm cụ thể. Snapshot được lưu trong Amazon S3, nơi cung cấp khả năng lưu trữ bền vững và hiệu quả về chi phí.
Tần suất sao lưu
Tần suất sao lưu là mức độ thường xuyên bạn tạo snapshot. Snapshot càng thường xuyên thì càng cung cấp nhiều điểm khôi phục chi tiết hơn, nhưng đồng thời cũng làm tăng chi phí lưu trữ.
Tần suất sao lưu phù hợp phụ thuộc vào mục tiêu điểm khôi phục (RPO) của ứng dụng. Nếu doanh nghiệp chỉ chấp nhận mất rất ít dữ liệu khi xảy ra sự cố, tần suất sao lưu cần dày hơn. Ngược lại, nếu workload ít quan trọng hơn, có thể chọn tần suất sao lưu thưa hơn để tiết kiệm chi phí.
Policy lưu giữ
Policy lưu giữ là thời gian bạn giữ snapshot. Thời gian lưu giữ càng dài thì càng có nhiều tùy chọn khôi phục hơn, nhưng chi phí lưu trữ cũng tăng theo.
Policy lưu giữ phù hợp phụ thuộc vào yêu cầu pháp lý, yêu cầu tuân thủ và nhu cầu kinh doanh. Nói đơn giản, dữ liệu nào cần giữ lâu thì giữ, dữ liệu nào hết giá trị thì nên dọn dẹp, đừng để snapshot cũ nằm đó rồi âm thầm tính tiền.
Chiến lược tối ưu chi phí cho sao lưu
Sao lưu tự động: Sử dụng tính năng sao lưu tự động do các dịch vụ cơ sở dữ liệu AWS cung cấp để đơn giản hóa việc quản lý sao lưu và giảm chi phí vận hành.
Quản lý vòng đời snapshot: Sử dụng lifecycle policy để tự động xóa snapshot cũ dựa trên policy lưu giữ của bạn.
Sao chép snapshot sang lưu trữ chi phí thấp hơn: Cân nhắc sao chép các snapshot ít được truy cập sang Amazon S3 Glacier để lưu trữ dài hạn với chi phí thấp hơn.
Xác định database engine phù hợp, ví dụ: MySQL so với PostgreSQL
Chọn đúng database engine là điều rất quan trọng đối với hiệu năng và chi phí. Các engine khác nhau có điểm mạnh, điểm yếu và trường hợp sử dụng phù hợp khác nhau.
MySQL
MySQL là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở phổ biến. MySQL nổi tiếng vì dễ sử dụng, có hiệu năng tốt và khả năng mở rộng ổn định.
MySQL phù hợp với nhiều loại ứng dụng, bao gồm ứng dụng web, nền tảng thương mại điện tử và hệ thống quản lý nội dung.
PostgreSQL
PostgreSQL là một RDBMS mã nguồn mở phổ biến khác, nổi tiếng với các tính năng nâng cao, tính toàn vẹn dữ liệu và khả năng mở rộng bằng extension.
PostgreSQL phù hợp với mô hình dữ liệu phức tạp, ứng dụng giao dịch và kho dữ liệu.
Các yếu tố cần cân nhắc khi chọn database engine
- Đặc điểm workload: Loại truy vấn, khối lượng dữ liệu và tỷ lệ giao dịch sẽ ảnh hưởng đến lựa chọn engine.
- Yêu cầu tính nhất quán dữ liệu: PostgreSQL cung cấp bảo đảm tính nhất quán dữ liệu mạnh hơn MySQL.
- Tính năng và extension: PostgreSQL cung cấp phạm vi tính năng và extension rộng hơn so với MySQL.
- Chi phí: Cả MySQL và PostgreSQL đều có sẵn dưới dạng dịch vụ được quản lý trên Amazon RDS, với các mô hình giá khác nhau.
Xác định các dịch vụ cơ sở dữ liệu AWS hiệu quả về chi phí với các trường hợp sử dụng phù hợp, ví dụ: DynamoDB so với Amazon RDS, serverless
AWS cung cấp nhiều dịch vụ cơ sở dữ liệu, mỗi dịch vụ có điểm mạnh, điểm yếu và mô hình chi phí riêng. Chọn đúng dịch vụ là yếu tố rất quan trọng để tối ưu chi phí.
Amazon RDS (Relational Database Service)
Amazon RDS là dịch vụ được quản lý, giúp dễ thiết lập, vận hành và mở rộng cơ sở dữ liệu quan hệ như MySQL, PostgreSQL, Oracle, SQL Server và MariaDB.
RDS phù hợp với các ứng dụng yêu cầu dữ liệu có cấu trúc và thuộc tính ACID.
Amazon DynamoDB
Amazon DynamoDB là dịch vụ cơ sở dữ liệu NoSQL được quản lý hoàn toàn, cung cấp hiệu năng nhanh và có thể dự đoán với khả năng mở rộng liền mạch.
DynamoDB phù hợp với các ứng dụng yêu cầu thông lượng cao, độ trễ thấp và schema linh hoạt.
Tùy chọn serverless
Các tùy chọn serverless như Aurora Serverless và DynamoDB On-Demand tự động mở rộng năng lực điện toán dựa trên nhu cầu ứng dụng. Nhờ đó, bạn chỉ trả tiền cho phần sử dụng thực tế.
Các tùy chọn này phù hợp với workload có mẫu lưu lượng thay đổi, khó dự đoán hoặc không chạy đều liên tục.
Các cân nhắc về trường hợp sử dụng
- Dữ liệu quan hệ và thuộc tính ACID: Amazon RDS là lựa chọn phù hợp.
- Thông lượng cao, độ trễ thấp và schema linh hoạt: Amazon DynamoDB là lựa chọn phù hợp.
- Workload thay đổi và cần tối ưu chi phí: Các tùy chọn serverless đáng để cân nhắc.
Chiến lược tối ưu chi phí cho dịch vụ cơ sở dữ liệu
Right-sizing: Chọn kích thước phiên bản phù hợp cho cơ sở dữ liệu dựa trên yêu cầu workload.
Reserved Instances (RI) hoặc Savings Plans: Với workload ổn định, RI hoặc Savings Plans có thể tiết kiệm chi phí đáng kể so với phiên bản On-Demand.
Tùy chọn serverless: Với workload thay đổi, các tùy chọn serverless có thể giúp bạn tránh trả tiền cho dung lượng nhàn rỗi.
Tối ưu lưu trữ: Chọn loại và kích thước lưu trữ phù hợp dựa trên khối lượng dữ liệu và yêu cầu hiệu năng.
Xác định các loại cơ sở dữ liệu AWS hiệu quả về chi phí, ví dụ: định dạng time series, định dạng columnar
AWS cung cấp nhiều dịch vụ cơ sở dữ liệu, mỗi dịch vụ có điểm mạnh và đặc điểm chi phí riêng. Chọn đúng loại cơ sở dữ liệu là điều rất quan trọng để tối ưu chi phí.
Dưới đây là phân tích dựa trên định dạng dữ liệu và các trường hợp sử dụng phổ biến.
Cơ sở dữ liệu quan hệ, theo hàng
Amazon RDS (Relational Database Service): Hỗ trợ nhiều database engine như MySQL, PostgreSQL, MariaDB, Oracle và SQL Server. RDS phù hợp với workload giao dịch có quan hệ dữ liệu nhất quán. Chi phí dựa trên kích thước phiên bản, lưu trữ, I/O và truyền dữ liệu. Với workload ổn định, bạn có thể cân nhắc Reserved Instances hoặc Savings Plans để giảm chi phí đáng kể.
Amazon Aurora: Đây là dịch vụ cơ sở dữ liệu tương thích MySQL và PostgreSQL, cung cấp hiệu năng và tính sẵn sàng được cải thiện đáng kể so với MySQL và PostgreSQL tiêu chuẩn. Aurora cung cấp các tùy chọn serverless như Aurora Serverless v1 và Aurora Serverless v2 để tối ưu chi phí cho workload thay đổi.
Cơ sở dữ liệu NoSQL, phi quan hệ
Amazon DynamoDB: Đây là dịch vụ cơ sở dữ liệu NoSQL được quản lý hoàn toàn, cung cấp độ trễ rất thấp và khả năng mở rộng cao. Chi phí dựa trên read/write capacity unit, lưu trữ và truyền dữ liệu.
DynamoDB cung cấp hai chế độ dung lượng chính là on-demand và provisioned. On-demand phù hợp với workload khó dự đoán, trong khi provisioned capacity phù hợp hơn với workload dự đoán được và có yêu cầu thông lượng nhất quán. Bạn cũng có thể cân nhắc auto scaling cho provisioned capacity để tối ưu chi phí hơn nữa.
Amazon DocumentDB: Đây là dịch vụ cơ sở dữ liệu tài liệu được quản lý hoàn toàn, tương thích với workload MongoDB. Chi phí dựa trên kích thước phiên bản, lưu trữ và I/O.
Amazon Keyspaces cho Apache Cassandra: Đây là dịch vụ cơ sở dữ liệu tương thích Apache Cassandra, có khả năng mở rộng, tính sẵn sàng cao và được quản lý. Chi phí dựa trên read/write capacity unit, lưu trữ và truyền dữ liệu.
Kho dữ liệu dạng cột
Amazon Redshift: Đây là dịch vụ kho dữ liệu được quản lý hoàn toàn, tối ưu cho truy vấn phân tích trên tập dữ liệu lớn. Lưu trữ dạng cột cho phép nén dữ liệu hiệu quả và giúp truy vấn nhanh hơn.
Chi phí của Redshift dựa trên loại node, số lượng node và lưu trữ. Bạn có thể cân nhắc sử dụng Redshift Spectrum để truy vấn dữ liệu trực tiếp trong S3 mà không cần tải dữ liệu vào Redshift, nhằm tối ưu chi phí cho dữ liệu ít được truy cập.
Cơ sở dữ liệu time series
Amazon Timestream là dịch vụ cơ sở dữ liệu time series được quản lý hoàn toàn, tối ưu cho việc lưu trữ và truy vấn dữ liệu có dấu thời gian.
Chi phí của Timestream dựa trên ghi, lưu trữ và truy vấn. Timestream cung cấp khả năng tự động mở rộng và tùy chọn serverless để tối ưu chi phí.
Cơ sở dữ liệu đồ thị
Amazon Neptune là dịch vụ cơ sở dữ liệu đồ thị được quản lý hoàn toàn, hỗ trợ cả mô hình dữ liệu property graph và RDF.
Chi phí của Neptune dựa trên kích thước phiên bản, lưu trữ và I/O.
Chọn đúng loại cơ sở dữ liệu dựa trên định dạng dữ liệu
- Định dạng time series: Amazon Timestream là tùy chọn hiệu quả về chi phí.
- Định dạng columnar cho truy vấn phân tích: Amazon Redshift là lựa chọn tốt cho kho dữ liệu quy mô lớn. Với phân tích quy mô nhỏ hơn, có thể cân nhắc Amazon Athena để truy vấn dữ liệu trực tiếp trong S3.
- Dữ liệu quan hệ cho workload giao dịch: Amazon RDS hoặc Amazon Aurora. Aurora Serverless là lựa chọn tốt cho workload thay đổi.
- Dữ liệu key-value hoặc document với thông lượng cao và độ trễ thấp: Amazon DynamoDB.
- Dữ liệu đồ thị, tức dữ liệu có nhiều quan hệ liên kết: Amazon Neptune.
Nói dễ hiểu, đừng dùng một loại database cho mọi bài toán. Dữ liệu giao dịch, dữ liệu log theo thời gian, dữ liệu phân tích và dữ liệu quan hệ phức tạp đều có “nhà” phù hợp riêng của chúng.
Di chuyển schema và dữ liệu cơ sở dữ liệu sang vị trí khác và/hoặc database engine khác
Di chuyển cơ sở dữ liệu có thể phức tạp và tốn kém. Vì vậy, lập kế hoạch và thực hiện cẩn thận là điều rất quan trọng để quá trình di chuyển diễn ra thành công.
AWS cung cấp một số công cụ và dịch vụ để đơn giản hóa quy trình di chuyển.
AWS Database Migration Service (DMS)
AWS Database Migration Service (DMS) giúp bạn di chuyển cơ sở dữ liệu lên AWS nhanh chóng và an toàn. DMS hỗ trợ nhiều cơ sở dữ liệu nguồn và đích, bao gồm cả cơ sở dữ liệu quan hệ và NoSQL.
DMS có thể thực hiện cả di chuyển đồng nhất, ví dụ Oracle sang Oracle, và di chuyển không đồng nhất, ví dụ Oracle sang Amazon Aurora.
AWS Schema Conversion Tool (SCT)
AWS Schema Conversion Tool (SCT) giúp bạn chuyển đổi schema cơ sở dữ liệu từ một database engine sang engine khác.
SCT có thể chuyển đổi schema từ Oracle, SQL Server, MySQL và các database engine khác sang Amazon Aurora, Amazon Redshift và các dịch vụ cơ sở dữ liệu AWS khác.
Cân nhắc chi phí trong quá trình di chuyển
Chi phí DMS: DMS tính phí dựa trên lượng dữ liệu được truyền và thời gian di chuyển.
Chi phí lưu trữ: Bạn sẽ phát sinh chi phí lưu trữ cho cả cơ sở dữ liệu nguồn và đích trong quá trình di chuyển.
Chi phí điện toán: Nếu cần sử dụng phiên bản EC2 cho tác vụ di chuyển, bạn sẽ phát sinh chi phí điện toán.
Chi phí downtime: Giảm thiểu downtime trong quá trình di chuyển để tránh gián đoạn kinh doanh và chi phí liên quan.
Chiến lược tối ưu chi phí
- Right-sizing phiên bản: Chọn kích thước phiên bản phù hợp cho workload cơ sở dữ liệu.
- Sử dụng Reserved Instances hoặc Savings Plans: Với workload ổn định, Reserved Instances hoặc Savings Plans có thể tiết kiệm chi phí đáng kể.
- Sử dụng Spot Instances cho workload không quan trọng: Spot Instances có thể tiết kiệm chi phí đáng kể, nhưng có thể bị gián đoạn với thông báo ngắn.
- Sử dụng tùy chọn serverless: Aurora Serverless và DynamoDB On-Demand cung cấp tối ưu chi phí cho workload thay đổi.
- Tối ưu lưu trữ: Sử dụng loại lưu trữ và kỹ thuật nén phù hợp để giảm thiểu chi phí lưu trữ.
- Giám sát hiệu năng cơ sở dữ liệu: Thường xuyên giám sát hiệu năng cơ sở dữ liệu và xác định các khu vực cần tối ưu.