Em muốn hỏi về tính chất ACID và BASE của mỗi transaction khi access database chứ không phải tính axit, bazo, độ pH của hợp chất hóa học. Mỗi transaction CSDL quan hệ SQL (MS SQL server) thì phải có 4 tính chất ACID còn CSDL noSQL (MongoDB) thì phải có 4 tính chất BASE. Theo lý thuyết thì :
Định nghĩa thì em có đọc nhiều trên mạng rồi, mà chả hiểu gì cả. Em chỉ tìm được 1 trường hợp thực tế cho thấy rõ các tính chất:
Em muốn xin 5 ví dụ của các trường hợp còn lại ạ. Khi so sánh ACID và BASE thì người ta thường nhắc tới tính nhất quán (consistency), vậy tính nhất quán ở đây cụ thể có nghĩa là gì? Có phải đang nói đến số lượng thuộc tính của một thực thể nào đó, CSDL RDB có thiết kế bảng, scheme từ trước nên cho ra các row (object trong thực tế) đồng nhất về thuộc tính. Còn MongoDB các object được sinh ra cùng một “cái gì đó tương tự class :v” nếu có số lượng thuộc tính khác nhau thì vẫn hợp lệ? Em cảm ơn nhiều. P/S: em là sinh viên đã sử dụng MS SQL server và MySQL được 1 năm, MongoDB dùng được vài tháng. Uhm, câu hỏi của cậu thú vị đó! Tớ sẽ chia câu trả lời của tớ thành các section. Cậu theo dõi và đọc phần cậu muốn hiểu nha! AtomicVề ví dụ Atomic, cậu hiểu đúng tính chất đó rồi. DurabilityVề Durability, cậu hiểu cơ bản khái niệm rồi. Tuy nhiên, tớ không nghĩ NoSQL durable đâu NoSQL như cậu đã biết, thiết kế theo BASE. Vì lẽ đó, khi cậu gửi một request thay đổi/thêm/xóa dữ liệu tới NoSQL, cho dù NoSQL có trả lời cậu “OK”, nhưng nó không đồng nghĩa với việc dữ liệu của cậu đã được persist trên đĩa (nó sẽ được, nhưng ở một thời điểm nào đó trong tương lai). Thiết kế này sẽ cho cậu một vài hệ quả:
Vậy nên, MongoDB hay các NoSQL khác đều không thể đảm bảo durability trong mọi TH đâu. ConsistencyTính nhất quán, thật không may, cậu không hiểu đúng rồi. Thử tưởng tượng cậu có một model mô phỏng dữ liệu thuộc về 1 giao dịch ngân hàng trong app của cậu. Model đó bao gồm:
Cậu hẳn nhiên cần thiết kế database schema để lưu thông tin trên. Nó thường được lưu trữ ở các bảng/collection/khái niệm tương tự nào đó ở CSDL.
Chuyện gì sẽ xảy ra nếu như sau khi cậu trừ tiền ở tài khoản gửi, nhưng gặp lỗi khi đang cố cộng tiền ở tài khoản nhận?
Đó là consistency Về cơ bản, DB đảm bảo tính chất này sẽ đảm bảo cậu luôn có model toàn vẹn về mặt logic. Không thời điểm nào model của cậu bị sai về mặt logic cảDatabase theo nguyên tắc BASE sẽ không thể đảm bảo tính toàn vẹn dữ liệu tại mọi thời điểm. Vậy nên, nếu cậu cần bảo vệ data integrity nghiêm ngặt (chẳng hạn, các thao tác liên quan tới tiền), cậu buộc phải cân nhắc DB có tính chất ACID, hoặc sử dụng NoSQL mà hi sinh availability (see CAP theorem). IsolationTính chất này đảm bảo cho cậu các transaction khác nhau chạy độc lập với nhau. Điều đó có nghĩa là, việc đọc dữ liệu từ DB ở transaction này không bị ảnh hưởng bởi việc ghi dữ liệu ở transaction khác khi việc ghi này chưa được commit. Liên quan tới tính chất này, cậu nên tìm hiểu thêm về transaction isolation level. Kiến thức này có thể hơi advance chút, nhưng nếu được, cậu nên biết nó có tồn tại, cho công việc của cậu ở tương lai Tớ nghĩ qua ví dụ trên, cậu có thể hiểu hơn về ACID, thậm chí cả BASE. Nếu cậu có vấn đề gì về việc hiểu 2 tính chất này, cho tớ biết nhé! Dạ anh ơi cho em hỏi về trường hợp này có bị vi phạm tính nhất quán của dữ liệu không? Nếu không thì gọi là gì?
Giả sử những số liệu đó là thật, không có ai gian dối hết. Vậy cuối cùng ngôi trường này hiện tại có bao nhiêu sinh viên? Thầy hiệu trưởng biết tin vào số liệu nào khi cấp dưới mỗi người thống kê ra một kiểu? Vậy thông tin tổng số sinh viên đang còn học hiện tại là chưa nhất quán đúng không anh? ACID là gì trong SQL?ACID là viết tắt của cụm từ Atomicity (nguyên tử), Consitency (nhất quán), Isolation (Cô lập), và Durability (Lâu bền). Đây là các thuộc tính mà mọi transaction đều được đảm bảo bởi SQL Server.
ACID Property là gì?ACID là viết tắt của bốn từ Atomicity, Consistency, Isolation và Durability, đó là bốn thuộc tính quan trọng cần đảm bảo khi thực hiện bất kỳ thao tác giao dịch nào với cơ sở dữ liệu. Cụ thể, đó là các yêu cầu về tính an toàn, tính bền vững và tính trọn vẹn cho dữ liệu.
ACID Java là gì?ACID là tính chất trong đó bao gồm tập hợp của 4 đặc tính khác nhau áp dụng cho một database transaction. Bốn đặc tính này gồm: atomicity (nguyên tử), consistency (nhất quán), isolation (độc lập), và durability (bễn vững).
|