- vừa được xem lúc

Relational Database Service trên AWS

0 0 4

Người đăng: Pham Hieu

Theo Viblo Asia

Tổng quan về Relational Database Service (RDS)

  • RDS cung cấp các dịch vụ quản lý cơ sở dữ liệu quan hệ (Các loại Database dùng SQL).
  • RDS cho phép tạo cũng như quản lý các cơ sở dữ liệu này trên Cloud AWS, bao gồm các loại dưới đây:
    • Postgres
    • MySQL
    • MariaDB
    • Oracle
    • Microsoft SQL Server
    • Aurora (Một loại CSDL độc quyền của AWS)

Vậy có những khác biệt gì giữa việc sử dụng RDS và dựng DB trên các server (EC2) truyền thống?

RDS là một service được quản lý bởi AWS (một cách dễ hiểu thì AWS sẽ lo từ phần tạo server, cài đặt Database cũng như các hạng mục vận hành, bảo trì về sau này), nên nó bao gồm các đặc tính sau:

  • AWS sẽ tự động tạo, quản lý cũng như xử lý các lỗi liên quan đến OS.
  • Cho phép sao lưu và khôi phục tại nhiều thời điểm khác nhau (Gọi là Point in Time Restore).
  • Có thể giám sát, thay đổi một số tham số thông qua AWS Console.
  • Có thể tạo nhiều Read Replica nhằm cải thiện hiệu suất đọc (Đa phần các CSDL thường phải xử lý nhiều thao tác Read (Đọc) hơn là các thao tác Write (Ghi), vậy nên việc sử dụng các Read Replica thường đem lại hiệu quả rất cao).
  • Có thể được triển khai trên các AZ khác nhau cho phép RDS có được khả năng DR (Disaster Recovery - Khôi phục sau thảm họa).
  • Có khả năng Scale theo cả chiều dọc và chiều ngang (vertical và horizontal).
  • Sử dụng bộ nhớ EBS (gp2 hoặc io1).

Lưu ý rằng người dùng không thể truy cập các server đang triển khai RDS thông qua SSH nói riêng và các giao thức khác nói chung.

Storage Auto Scaling

auto-scaling

RDS cho phép các CSDL có thể tăng được dung lượng lưu trữ của mình một cách dễ dàng, hay nói cách khác là các DB RDS này là hoàn toàn động (dynamically). Khi RDS phát hiện bộ nhớ của CSDL sắp hết, nó sẽ tự động scale. Điều này là vô cùng quan trọng đặc biệt là đối với các hệ thống không có người trực thường xuyên, việc tràn bộ nhớ là chuyện thường xuyên xảy ra. Auto Scaling cũng giúp tiết kiệm công sức khi người dùng không phải tự thực hiện các thao tác tăng dung lượng bộ nhớ cho CSDL của mình.
Dĩ nhiên để tránh việc scale quá mức cho phép gây ảnh hưởng đến các dự toán về chi phí, người dùng cần thiết lập một chỉ số gọi là Maximum Storage Threshold, chỉ số này sẽ đảm bảo CSDL sẽ không scale quá một mức nhất định, tránh việc hóa đơn tăng mất kiểm soát.
Vậy RDS sẽ tự động Scale lên khi nào?
Chúng sẽ tự động thay đổi dung lượng lưu trữ khi gặp các điều kiện sau:

  • CSDL đã "đầy" nhiều hơn 90% so với dung lượng ban đầu.
  • Tình trạng CSDL bị "đầy" này kéo dài nhiều hơn 5 phút.
  • Khoảng thời gian kể từ lần thay đổi cuối cùng phải nhiều hơn 6 tiếng.
  • RDS hỗ trợ các loại database engine sau: MariaDB, MySQL, PostgreSQL, SQL Server, Oracle.

RDS Read Replicas

read-rep

Như đã nói ở phần trên, phần nhiều các CSDL đều được yêu cầu phải đáp ứng lượng Read request nhiều hơn nhiều so với Write, vì vậy các hệ thống RDS đã cung cấp các Read Replicas, các phiên bản này được tối ưu cho thao tác Đọc và dĩ nhiên là không thể ghi. Các Read Replica này có thể được triển khai trên cùng một Availability Zone hoặc Multi-AZ, thậm chí là Cross Region. Dĩ nhiên, các phiên bản Read Replica này cũng có thể được promote lên thành các DB riêng biệt với đầy đủ tính năng.
Quá trình Replication giữa các Read Replicas và RDS là quá trình bất đồng bộ (ASYNC), tuy nhiên thao tác đọc sau cùng vẫn là nhất quán giữa các Replicas và RDS Instance.

Ứng dụng cần thay đổi connection string khi làm việc với các Read Replicas.

read-rep-use Read Replicas có rất nhiều ứng dụng, một trong số những ứng dụng thường thấy nhất có thể được mô tả như sau:

  • X có một Production DB đang hoạt động ổn định với mức tải trong giới hạn cho phép.
  • X muốn chạy các ứng dụng phân tích dữ liệu nhằm cung cấp các báo cáo cần thiết, tuy nhiên các ứng dụng này sẽ cần gọi một lượng rất lớn các câu query SELECT đối với CSDL, điều này sẽ ảnh hưởng rất lớn đến hoạt động bình thường của hệ thống.
  • Để giải quyết bài toán nói trên X tạo một Read Replica, ứng dụng phân tích dữ liệu sẽ chỉ thao tác với Read Replica mà không thao tác bới Database chính, bài toán đã được giải quyết.

    Các Read Replicas là Read-only, nghĩa là nó chỉ cho phép thực hiện các query SELECT.

Chi phí về Network

network-cost

  • Đối với các ứng dụng trên AWS, dữ liệu chỉ bị tính phí khi đi từ một Availability Zone này tới một Availability Zone hoặc ra ngoài internet, vậy nên nếu các Read Replicas nằm cùng AZ với CSDL gốc thì quá trình Replica này là miễn phí, nó chỉ mất phí khi ta đặt các Read Replicas ở các AZ khác nhau và khác với CSDL gốc.

RDS Multi AZ (Disaster Recovery)

disater-recovery Câu chuyện khôi phục sau thảm họa này thường ít được quan tâm đối với các CSDL vừa và nhỏ hay đôi khi là những CSDL tương đối "lớn", tuy nhiên trong kinh doanh thì mọi rủi do đều nên được quan tâm đúng mức. Đối với RDS, quá trình triển khai trên nhiều AZ khác nhau có thể đảm bảo được khả năng khôi phục sau thảm họa của các hệ thống CSDL, dĩ nhiên điều nay không tuyệt đối tuy nhiên là chấp nhận được. Các đặc điểm của quá trình này có thể kể tới như sau:

  • Quá trình Replication này là đồng bộ (SYNC).
  • Giúp tăng khả năng đáp ứng của hệ thống, đảm bảo quá trình chuyển đổi dự phòng sẽ được diễn ra khi CSDL gặp các vấn đề bất khả kháng như mất kết nối, sập hệ thống...
  • Quá trình này được diễn ra hoàn toàn tự động.

single-to-multi-az

  • Khi chuyển một CSDL từ Single AZ sang Multi AZ, quá trình này diễn ra với "Zero downtime", vậy nên không cần thiết phải tắt Database mà chỉ cần thao tác click vào nút "Modify" trên AWS Console.
  • Quá trình chuyển đổi từ Single AZ sang Multi AZ có thể tóm gọn như sau:
    • AWS sẽ chụp một bản snapshot của instance đang "chứa" CSDL gốc. Bản snapshot này sau đó sẽ được chuyển qua AZ đích và một DB mới sẽ được restored dựa trên bản snapshot kia.
    • Sau khi Database mới được tạo, quá trình đồng bộ hóa sẽ được thiết lập giữa 2 CSDL.

Các Read Replicas được thiết lập Multi AZ sẽ được sử dụng cho mục đích Khôi phục sau thảm họa - Disaster Recovery (DR)

RDS Custom

Các CSDL RDS được quản lý bởi AWS nói chung đem lại tính tiện lợi lớn cho người dùng, tuy nhiên với nhiều hệ thống đặc thù, nó sẽ vẫn cần được quản lý bởi người dùng. Đó là lý do RDS Custom được xây dựng. Hiện nay RDS custom cho phép người dùng quản lý cũng như chỉnh sửa các CSDL dạng Oracle và Microsoft SQL Server.
Điểm khác biệt lớn nhất giữa các hệ thống RDS và RDS Custom đó là người dùng có thể tủy ý truy cập thông qua SSH, từ đó thực hiện các thao tác cài đặt, cập nhật cần thiết (Đối với cả tầng OS và tầng CSDL).

Bình luận

Bài viết tương tự

- vừa được xem lúc

Mô hình quan hệ - thực thể (Entity – Relationship Model)

Mô hình quan hệ thực thể (Entity Relationship model - E-R) được CHEN giới thiệu vào năm 1976 là một mô hình được sử dụng rộng rãi trong các bản thiết kế cơ sở dữ liệu ở mức khái niệm, được xây dựng dựa trên việc nhận thức thế giới thực thông qua tập các đối tượng được gọi là các thực thể và các mối

0 0 117

- vừa được xem lúc

[Embulk #1] Công cụ giúp giảm nỗi đau chuyển đổi dữ liệu

Embulk là gì. Embulk là một công cụ open source có chức năng cơ bản là load các record từ database này và import sang database khác.

0 0 40

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần II).

Chào mọi người, lại là mình đây, ở phần trước mình đã giới thiệu với mọi người về Window Functions Phần I. Nếu chưa rõ nó là gì thì mọi người nên đọc lại trước nha, để nắm được định nghĩa và các key words, tránh mắt chữ O mồm chứ A vì phần này mình chủ yếu sẽ thực hành với các Window Functions.

0 0 90

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần I).

Chào mọi người, mình mới tìm hiểu đc topic Window Functions cá nhân mình cảm thấy khá là hay và mình đánh giá nó là phần nâng cao. Vì ít người biết nên Window Functions thấy rất ít khi sử dụng, thay vì đó là những câu subquery dài dằng dặc như tin nhắn nhắn cho crush, và người khác đọc hiểu được câu

0 0 897

- vừa được xem lúc

Disable và Enable trigger trong Oracle

Origin post: https://www.tranthanhdeveloper.com/2020/12/disable-va-enable-trigger-trong-oracle.html.

0 0 29

- vừa được xem lúc

Lưu trữ dữ liệu với Data Store

. Data Store là một trong những componet của bộ thư viện Android JetPack, nó là một sự lựa chọn hoàn hảo để thay thế cho SharedPreferences để lưu trữ dữ liệu đơn giản dưới dạng key-value. Chúng ta cùng làm một so sánh nhỏ để thấy sự tối ưu của Data Store với SharedPreferences nhé.

0 0 61