Thuộc tính ACID là khái niệm quan trọng bạn cần tìm hiểu kỹ khi làm việc với cơ sở dữ liệu. Transaction và ACID là hai thuộc tính gắn liền có liên quan mật thiết cùng nhau. Bài viết này sẽ giúp bạn hiểu rõ hơn ACID là gì và những thông tin quan trọng liên quan đến thuộc tính này.
1. ACID là gì?
ACID là tập hợp thuộc tính mà giao dịch thao tác với cơ sở dữ liệu sao cho đảm bảo tính an toàn, bền vững và trọn vẹn cho dữ liệu của data. Nếu một transaction không thỏa mãn các thuộc tính kể trên sẽ không thao tác được với data và bị hủy ngay lập tức.
ACID là cụm từ viết tắt của 4 thuộc tính bao gồm:
- Atomicity
- Consistency
- Isolation
- Durability
Tìm hiểu kỹ hơn về các thuộc tính này sẽ giúp bạn có cái nhìn rõ hơn về ACID là gì và những thông tin cần biết về thuật ngữ này.
2. Các thuộc tính của ACID
2.1. Atomicity
Atomicity có thể hiểu nôm na là tính nguyên tử. Nguyên tử có nghĩa là người dùng cần đảm bảo rằng mọi giao dịch xảy ra hoặc không có bất kỳ giao dịch nào xảy ra. Khi chuỗi các transaction thao tác với các dữ liệu, nếu transaction xử lý xảy ra lỗi ở data hay các hệ thống thì tất cả các transaction sẽ bị hủy bỏ, dữ liệu trong data vẫn giữ nguyên như cũ.
Nếu trường hợp không xảy ra lỗi bất thường hay vấn đề trong khi xử lý thì những transaction đó sẽ commit thành công và dữ liệu data được cập nhật thành công theo đúng như ý người dùng. Sở dĩ gọi là đặc tính nguyên tử vì mỗi hành động riêng lẻ sẽ giống như electron xoay quanh một hạt nhân và hạt nhân ấy di chuyển thì tất cả các electron sẽ di chuyển cùng với nhau và không có bất kỳ electron nào rời ra khỏi quỹ đạo ban đầu.
2.2. Consistency
Consistency là sự bảo toàn các dữ liệu trong database luôn được giữ trong trạng thái hợp lệ dù ở bất kỳ thời điểm nào, trước và sau khi thực hiện mỗi hành động transaction. Tức là hành động đầu tiên của transaction nếu gặp phải lỗi thì hành động thứ hai sẽ không xảy ra hoặc cần rollback lại.
2.3. Isolation
Isolation quy định rằng trong từng transaction sẽ đều phải thực hiện độc lập. Nếu cần 2 transaction diễn ra cùng một thời điểm cần cơ chế bảo đảm transaction này tránh ảnh hưởng đến transaction khác. Ví dụ trong trường hợp khách hàng cùng chuyển tiền vào tài khoản công ty đúng thời điểm kế toán rút tiền vậy hành động nào sẽ diễn ra?
Lúc này database sẽ thực hiện hai hành động là cập nhật số tiền trong tài khoản bằng cách trừ đi số tiền kế toán rút ra và ngay lập tức cộng thêm vào số dư hiện tại số tiền khách chuyển. Đặc tính độc lập này rất cần thiết giúp đảm bảo các giao dịch diễn ra thành công và không ảnh hưởng đến dữ liệu.
2.4. Durability
Durability hay còn gọi là đặc tính bền vững quy định về việc khi transaction diễn ra thì dù bất cứ sự cố nào diễn ra dữ liệu đều được khôi phục lại nguyên trạng thái ban đầu. Ví dụ với transaction chuyển tiền được diễn ra thành công. Tức là khi giao dịch đã hoàn tất thì tất cả những thay đổi sẽ ghi lại ở dạng bền như đĩa cứng và cả giao dịch đã hoàn thành cũng được ghi lại.
3. Những điều cần biết về Transaction là gì
Trong những phần trên chúng ta đã nhắc rất nhiều đến transaction. Thực chất ACID và Transaction là hai khái niệm có sự kết nối liên quan mật thiết với nhau. Vì vậy, nếu bạn muốn hiểu rõ về khái niệm ACID thì cũng cần tìm hiểu về Transaction.
Transaction là chuỗi những hành động khác nhau được thực hiện trên cơ sở dữ liệu, những hành động sẽ liên quan đến nhau. Ví dụ doanh nghiệp mở một tài khoản tại ngân hàng với số tiền nạp 300 triệu đồng. Chị kế toán rút 30 triệu thưởng cho nhân viên có thành tích xuất sắc trong tháng. Anh nhân viên có tài khoản trong ngân hàng này và chị kế toán sẽ chuyển khoản thưởng và thẳng tài khoản của anh nhân viên.
Bạn có thể hiểu là hành động chuyển tiền được tách biệt thành hai hành động khác nhau, trù 30 triệu ở tài khoản công ty và cộng 30 triệu ở tài khoản anh nhân viên. Mặc dù hai hành động này tách biệt nhau nhưng gộp lại sẽ là một transaction do chúng có mối liên hệ mật thiết, cần phải có cả hai hành động này mới được tính là một giao dịch thành công.
Đặc điểm của transaction là mỗi hành động trong transaction được coi là đơn vị duy nhất, không hành động nào được thực hiện thành công nếu một trong số những hành động không được thực hiện. Như trong ví dụ kể trên, nếu như hành động tạo tài khoản hoặc chuyển tiền bị lỗi thì hành động nhận tiền ở tài khoản anh nhân viên sẽ không xảy ra. Tuy nhiên, không phải hành động nào diễn ra theo chuỗi liền nhau đều được coi là một transaction.
Vậy thuộc tính ACID là gì và những khái niệm liên quan chắc hẳn bạn đã có câu trả lời. Hy vọng những thông tin này sẽ giúp bạn có thêm những thông tin cần thiết trong quá trình làm việc với cơ sở dữ liệu.