Xét ví dụ tính năng chuyển tiền từ A đến B trong các ứng dụng ngân hàng. Tính năng này sẽ gồm hai bước:
- Trừ tiền trong tài khoản A.
- Cộng tiền vào tài khoản B.
ACID là một tập các tính chất của một transaction ở trong database, bao gồm:
- Atomicity: toàn bộ các thao tác của transaction cần phải được thực thi thành công hoặc tất cả các thao tác đều không được thực thi. Nói cách khác, nếu có một thao tác nào đó thất bại thì toàn bộ các thao tác khác của transaction đều sẽ bị bỏ qua (những thao tác nào đã được thực thi thì sẽ được rollback). Ví dụ: nếu đã trừ tiền trong tài khoản A thì bắt buộc phải cộng tiền vào tài khoản B.
- Consistency: dữ liệu trước và sau khi thực hiện transaction cần phải nhất quán. Ví dụ: nếu ta trừ 10 vào tài khoản B.
- Isolation: các transaction không được ảnh hưởng đến nhau trong quá trình thực thi.
- Durability: dữ liệu sau khi thực hiện transaction sẽ không bị thay đổi nếu database xảy ra sự cố. Ví dụ: sau khi chuyển tiền đến B 10.
Mục đích của ACID là để đảm bảo:
- Transaction có thể thất bại mà không gây ảnh hưởng đến hệ thống.
- Nhiều transaction có thể diễn ra đồng thời.
Các database đảm bảo ACID bằng cách sử dụng lock (Mutex) để đồng bộ hóa quá trình thực thi transaction (xem thêm Synchronization).