Khám phá cách Database Replication giúp nâng cao hiệu suất, đảm bảo tính sẵn sàng và giảm thiểu rủi ro trong cơ sở dữ liệu. Tìm hiểu các chiến lược phổ biến như Master-Slave, Multi-Master, Asynchronous và Synchronous Replication để áp dụng hiệu quả vào hệ thống của bạn.
Tags: #system design, #database, #replicationGiả sử bạn đang xây dựng một hệ thống thương mại điện tử (e-commerce) phục vụ khách hàng trên toàn quốc. Khi một khách hàng đặt hàng trên website, các thông tin về đơn hàng, sản phẩm, thanh toán, v.v. cần được lưu trữ trong cơ sở dữ liệu.
Một số vấn đề có thể xảy ra trong trường hợp này:
Để khắc phục các vấn đề này, chúng ta sẽ cần đến sự trợ giúp của Database Replication.
Database replication là quá trình sao chép và lưu trữ các bản sao của cơ sở dữ liệu trên nhiều server cơ sở dữ liệu khác nhau.
Quá trình này bao gồm việc sao chép dữ liệu từ một cơ sở dữ liệu chính (master) sang các cơ sở dữ liệu phụ (slave). Các cơ sở dữ liệu slave thường được sử dụng cho các hoạt động đọc dữ liệu.
Mục tiêu chính của database replication là:
Phân loại Database Replication dựa trên kiến trúc
Master-slave replication là một trong những mô hình phổ biến nhất trong database replication. Trong kiến trúc này, có một cơ sở dữ liệu chính được gọi là "master", và một hoặc nhiều cơ sở dữ liệu phụ được gọi là "slave".
Khác với mô hình master-slave replication, multi-master replication là một mô hình database replication với nhiều database đóng vài trò là master, có khả năng thực hiện các thao tác ghi dữ liệu.
Trong kiểu Asynchronous Replication, quá trình nhân bản dữ liệu từ database master sang các database slave diễn ra theo một cách không đồng bộ.
Khi có yêu cầu từ client, các thay đổi sẽ được áp dụng trên database master và phản hồi lại các thay đổi cho client, sau đó những thay đổi này mới được nhân bản và áp dụng lên các database slave, nhưng không phải ngay lập tức mà ở một thời điểm khác theo quy tắc của hệ thống.
Ưu điểm:
Vì database master không phải chờ đợi các slave được cập nhật, nên việc thực hiện thay đổi trên master sẽ nhanh hơn. Điều này giúp cải thiện hiệu suất chung của hệ thống.
Nhược điểm:
Vì không được cập nhật dữ liệu liên tục nên có thể dẫn đến sự không nhất quán giữa database master và slave.
Asynchronous Replication thường được sử dụng trong các trường hợp ít yêu cầu tính nhất quán tuyệt đối, nhưng cần cải thiện hiệu suất và giảm độ trễ.
Trong kiểu Synchronous Replication, quá trình nhân bản dữ liệu từ database master sang các database slave diễn ra theo cách đồng bộ.
Khi có yêu cầu từ client, các thay đổi sẽ được áp dụng trên database master và slave cùng một lúc sau đó mới phản hồi lại cho client.
Ưu điểm:
Đảm báo tính nhất quán của dữ liệu. Khi master bị lỗi có thể lập tức chuyển sang sử dụng một slave khác, vì dữ liệu luôn được đồng bộ hóa.
Nhược điểm:
Do yêu cầu phải đồng bộ hóa các thao tác giữa master và slave, nên hiệu suất của hệ thống có thể bị ảnh hưởng, đặc biệt khi có nhiều thao tác ghi.
=> Synchronous Replication thường được sử dụng trong các ứng dụng yêu cầu tính nhất quán dữ liệu rất cao, ngay cả khi điều này ảnh hưởng đến hiệu suất một phần. Ví dụ như các hệ thống tài chính, ngân hàng, y tế…
Database replication là một giải pháp tuyệt vời và có thể giải quyết nhiều bài toán phức tạp trong thiết kế hệ thống. Tuy nhiên, chính nó cũng là một bài toán mà người kỹ sư cần phải cân nhắc thật kỹ trước khi áp dụng.