Skip to content
Go back

[ACID vs BASE] So sánh các mô hình Database Transaction

Published:  at  02:29 PM

Quyết định lựa chọn một hệ thống quản lý cơ sở dữ liệu phù hợp (DBMS) có thể là một nhiệm vụ khó khăn. Có rất nhiều các tuỳ chọn DBMS có sẵn vậy nên trước khi bắt đầu tìm kiếm một giải pháp cơ sở dữ liệu phù hợp, hãy xem xét lại các yêu cầu hệ thống của bạn.

Trong bài viết này, chúng ta sẽ tìm hiểu về hai mô hình Database Transaction phổ biến nhất: ACIDBASE.

Sự khác nhau giữa mô hình database transaction ACID và BASE

Định lý CAP nói rằng không thể đạt được cả tính nhất quán và tính khả dụng trong một hệ thống phân tán (partition tolerant distributed system) — tức là một hệ thống tiếp tục hoạt động trong trường hợp xảy ra sự cố giao tiếp tạm thời.

Consistency - Tính nhất quán ở đây mang ý nghĩa dữ liệu trả về phải được đồng nhất cho dù chúng được trả về từ các node khác nhau. Khi cập nhất dữ liệu vào một node thì các node khác cũng phải cập nhật theo, tránh dữ liệu trả về lệch lạc nhau trên các node.

Availability - Tính sẵn sàng được hiểu rằng bất cứ khi nào client gửi request, họ đều sẽ nhận được response. Thậm chí một hoặc vài node bị down. (giống như trong microservices, khi một node hoặc một service con down, các service khác vẫn có thể hoạt động độc lập).

Partition Tolerance - Partition tolerance means that the cluster must continue to work despite any number of communication breakdowns between nodes in the system. (Trạng thái hoạt động của hệ thống khi đường kết nối (mạng) giữa các node bị đứt, hệ thống vẫn phải hoạt động bình thường cho dù các kết nối của các node trong hệ thống bị đứt gãy).

Vậy tại sao lại nói không thể đạt được cùng lúc cả 3 tính chất trên trong hệ thống phân tán?

Khi hệ thống đạt được tính chất ConsistencyAvailability sẽ không thể thoả mãn thêm tính chất Partition Tolerance bởi khi đường kết nối (mạng) giữa các node không được đảm bảo dẫn đến việc các node sẽ không được update dữ liệu cùng một thời điểm, điều này dẫn tới việc một vài node dữ liệu sẽ bị out-of-date do chưa được cập nhật dữ liệu từ đó vi phạm tính Consistency.

Trường hợp khi hệ thống đạt được tính ConsistencyPartition Tolerance thì không thể đạt được tính Availability bởi hệ thống cần phải ngừng phục vụ nhữg node bị out-of-date (TH kể trên) cho tới khi nó được update dữ liệu đầy đủ, nhưng việc này lại vi phạm tính Availability của hệ thống.

Thông thường, người ta thường đánh đổi yếu tố Consistency để lấy hai yếu tố AvailabilityPartition Tolerance. Khi đó họ sẽ thay thế Consistency thành Eventually Consistency (tính nhất quán có độ trễ), làm như thế hệ thống sẽ có hiệu năng tốt hơn.

Ngoài ra sự khác biệt cơ bản giữa các mô hình cơ sở dữ liệu ACID và BASE là cách chúng đối phó với hạn chế này.

ACID Model

Mô hình ACID đảm bảo rằng một giao dịch đã thực hiện luôn được nhất quán. Mô hình này phù hợp với các doanh nghiệp xử lý giao dịch trực tuyến (ví dụ: các tổ chức tài chính) không được phép có sai xót cho các trạng thái không hợp lệ. Chúng ta sẽ tìm hiểu về 4 thuộc tính quan trọng khi xử lý bất kỳ giao dịch nào của mô hình ACID:

Nguồn: wikipedia

Ví dụ: Các tổ chức tài chính hầu như sẽ chỉ sử dụng cơ sở dữ liệu ACID. Chuyển tiền phụ thuộc vào các tính chất của mô hình ACID. Một giao dịch bị gián đoạn không được xóa ngay lập tức khỏi cơ sở dữ liệu có thể gây ra rất nhiều vấn đề. Tiền có thể được ghi nợ từ một tài khoản và do lỗi, không bao giờ được ghi có vào tài khoản khác.

Một DBMS đảm bảo tuân thủ các nguyên tắc ACID là một hệ thống quản lý cơ sở dữ liệu có quan hệ (relational database management system). Ví dụ như MySQL, PostgreSQL, Oracle, SQLite và Microsoft SQL Server.

BASE Model

Sự phát triển của cơ sở dữ liệu NoSQL cung cấp một cách linh hoạt và dễ dàng thao tác dữ liệu. BASE là viết tắt của:

Nguồn tham khảo


Suggest Changes

Previous Post
Kubernetes Overview Diagrams
Next Post
Hệ thống mã hoá sử dụng Public Key như thế nào?