ACID là gì?

20/11/2023 - 2 phút

Follow  on Google News

ACID là gì?

ACID là viết tắt của bốn thuộc tính quan trọng trong quản lý giao dịch trong hệ thống cơ sở dữ liệu:

  1. Atomicity (Nguyên tử hóa): Atomicity đảm bảo rằng một giao dịch sẽ được thực hiện một cách nguyên tử. Nó có nghĩa là giao dịch sẽ hoàn thành hoặc không hoàn thành, không có trạng thái trung gian. Nếu một phần của giao dịch thất bại, toàn bộ giao dịch sẽ bị hủy và dữ liệu sẽ trở lại trạng thái ban đầu.

  2. Consistency (Nhất quán): Consistency đảm bảo rằng một giao dịch sẽ đưa cơ sở dữ liệu từ một trạng thái hợp lệ đến một trạng thái hợp lệ khác. Nó đảm bảo rằng dữ liệu sẽ luôn tuân theo các quy tắc và ràng buộc được định nghĩa trước trong cơ sở dữ liệu.

  3. Isolation (Cô lập): Isolation đảm bảo rằng một giao dịch không ảnh hưởng đến các giao dịch khác đang diễn ra đồng thời. Nó ngăn chặn việc truy cập dữ liệu chưa được commit của một giao dịch bởi các giao dịch khác.

  4. Durability (Bền vững): Durability đảm bảo rằng khi một giao dịch đã được commit, thì dữ liệu đã được lưu trữ sẽ tồn tại và không bị mất ngay cả khi có sự cố trong hệ thống như lỗi phần cứng hoặc mất điện.

Ví dụ

erDiagram
    Customer||--o{Transaction:"Has"
    Transaction}o--o{TransactionHistory:"Belongs to"

    Customer{
        int ID
        string Name
        string Address
        int AccountBalance
    }
    Transaction{
        int ID
        string TransactionType
        string TransactionDate
        int Amount
    }
    TransactionHistory{
        int ID
        int CustomerID
        int TransactionID
        string Description
    }

Chúng ta có các bảng sau:

Bảng “Khách hàng”:

ID (Khóa chính)TênĐịa chỉSố dư tài khoản
1Alice123 Elm Street1000
2Bob456 Oak Street800
3Charlie789 Maple Avenue1500

Bảng “Giao dịch”:

ID (Khóa chính)Loại giao dịchNgày giao dịchSố tiền
1Chuyển khoản2023-11-01200
2Rút tiền2023-11-0250
3Nạp tiền2023-11-03100
4Chuyển khoản2023-11-04300
5Rút tiền2023-11-0575

Bảng “Lịch Sử Giao Dịch” (Transaction History):

ID (Khóa chính)ID Khách Hàng (Khóa ngoại)ID Giao Dịch (Khóa ngoại)Mô Tả
111Chuyển 200 đến Bob
222Rút 50 từ Bob
313Nạp 100 vào Alice
414Chuyển 300 đến Charlie
535Rút 75 từ Charlie

Trong ví dụ này, bảng “Lịch Sử Giao Dịch” chứa thông tin về lịch sử giao dịch của các khách hàng, bao gồm một mô tả chi tiết về từng giao dịch. Các trường dữ liệu bao gồm ID (khóa chính) để xác định mỗi bản ghi một cách duy nhất, ID Khách Hàng (khóa ngoại) để liên kết với bảng “Khách Hàng,” ID Giao Dịch (khóa ngoại) để liên kết với bảng “Giao Dịch,” và Mô Tả để ghi chú về mỗi giao dịch.