NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
31/08/2022
Lượt xem

ACID là gì? Tìm hiểu về thuộc tính ACID trong cơ sở dữ liệu

31/08/2022
10 phút đọc
Lượt xem

Đánh giá

5/5 - (122 bình chọn)

Khi làm việc với cơ sở dữ liệu, kiến thức về khái niệm ACID là điều bạn cần phải nắm vững. Transaction và ACID là hai thuộc tính có mối liên hệ vô cùng mật thiết. Vậy, cụ thể ACID là gì? ACID bao gồm những thuộc tính nào và những phiên bản đang được sử dụng? Cùng tìm hiểu các thông tin liên quan đến ACID thông qua bài viết ngay dưới đây nhé!

ACID là gì?

ACID là viết tắt của bốn từ Atomicity, Consistency, IsolationDurability, đó 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. Nếu một tiến trình không đảm bảo được các thuộc tính trên thì sẽ không thể thực hiện được các thao tác với data và sẽ bị hủy ngay lập tức.

ACID là gì?
ACID là gì?

Khái niệm về ACID được mô tả trong phần 4 của tiêu chuẩn ISO/IEC 10026-1:1992. Mỗi thuộc tính của ACID đều có một phương pháp đo lường riêng. Thông thường sẽ có một module quản lý các giao dịch, các tiến trình được vận hành để đảm bảo đáp ứng đủ các yêu cầu ACID. 

Trong hệ thống phân tán, để đáp ứng đủ các thuộc tính ACID này, người ta thường áp dụng phương pháp xác nhận 2 pha (2PC). Phương pháp này bắt buộc tất cả các thành phần tham gia phải bảo đảm xác nhận hoàn tất các giao dịch, nếu không đạt được yêu cầu đó sẽ bị hủy và trở về trạng thái trước đó.

Các thuộc tính của ACID trong cơ sở dữ liệu

Mỗi tiến trình đòi hỏi phải đáp ứng đủ 4 thuộc tính ACID để tham gia các giao dịch, cụ thể là các thuộc tính: Atomicity (nguyên tử), Consistency (nhất quán), Isolation (cô lập), và Durability (lâu bền), cụ thể như sau.

1. Atomicity

Atomicity có thể hiểu là tính nguyên tử. Điều này có nghĩa là mọi thay đổi về dữ liệu phải đảm bảo trọn vẹn, nếu các tiến trình thực hiện thành công hoặc là sẽ không có bất kỳ sự thay đổi nào về dữ liệu nếu có sự cố tiến trình xảy ra.

Atomicity
Atomicity

Khi chuỗi các tiến trình thao tác với cơ sở dữ liệu, nếu có lỗi xảy ra thì tất cả các tiến trình này phải bị hủy bỏ, data trong cơ sở dữ liệu vẫn giữ nguyên không có gì thay đổi. Trường hợp không có bất kỳ lỗi nào xảy ra bất thường trong quá trình xử lý tiến trình, thì dữ liệu sẽ được cập nhật mới lại theo ý muốn của người dùng.

Gọi là thuộc tính nguyên tử bởi vì mỗi thao tác riêng lẻ cũng được coi giống như các electron chuyển động quanh hạt nhân và hạt nhân ấy di chuyển thì các electron này cũng di chuyển theo. Sẽ không có bất cứ hạt electron nào đi lệch khỏi quỹ đạo ban đầu.

2. Consistency

Thuộc tính Consistency yêu cầu tính nhất quán dữ liệu cho database. Khi có một Transaction được hoàn thành, tất cả dữ liệu phải được bảo toàn các mối liên kết dù cho tiến trình thao tác thành công hay thất bại.

Consistency
Consistency

Data trong cơ sở dữ liệu phải luôn được đặt trong trạng thái hợp lệ ở bất kỳ thời điểm nào, trước và sau khi thực hiện mỗi hành động Transaction. Điều này có nghĩa là nếu hành động đầu tiên của tiến trình gặp lỗi thì hoặc là rollback lại, hoặc là tiến trình tiếp theo sẽ không được thực hiện.

3. Isolation

Isolation là thuộc tính nói về tính độc lập của các Transaction khi thực thi đồng thời trên hệ thống. Nếu cùng một lúc, có nhiều tiến trình cùng diễn ra thì cần một cơ chế đưa ra để bảo đảm rằng các tiến trình này có thể hoạt động song song mà không ảnh hưởng đến nhau. 

Ví dụ, trong trường hợp một khách hàng chuyển tiền vào ngân hàng và một nhân viên kế toán rút tiền ra từ ngân hàng cùng diễn ra một lúc. Lúc này, cơ sở dữ liệu sẽ thực hiện đồng thời hai hành động là cộng thêm vào số dư của khách hàng, đồng thời trừ đi số tiền kế toán rút ra. Sẽ có cơ chế để cả hai hành động này được diễn ra thành công song song mà không ảnh hưởng đến việc xử lý database.

4. Durability

Thuộc tính này đưa ra để đảm bảo rằng khi các Transaction diễn ra thành công thì tác dụng nó tạo ra với cơ sở dữ liệu phải bền vững. Dù hệ thống có xảy ra bất kỳ lỗi gì thì dữ liệu luôn được khôi phục lại nguyên trạng.

Ví dụ, đối với các tiến trình giao dịch tiền qua ngân hàng. Khi các Transaction hoàn tất, dữ liệu sẽ được ghi lại dưới dạng đĩa cứng, các giao dịch cũng được ghi chép lại. Nếu có bất kỳ sự cố nào xảy ra đều có thể dễ dàng backup lại data.

Các phiên bản của ACID

ACID thường được sử dụng để kiểm tra các trình duyệt web về việc đảm bảo các tiêu chuẩn web do W3C (World Wide Web Consortium) phát triển. Có một số trình duyệt web không tuân thủ các tiêu chuẩn như hiển thị HTML, CSS khác với các tiêu chuẩn đề ra. Điều này thường gây ra các lỗi khi hiển thị, gây khó khăn khi truy cập cũng như không tương thích với trình duyệt được cài sẵn.

Các phiên bản của ACID
Các phiên bản của ACID

Có bốn phiên bản của ACID được đưa ra để kiểm tra khả năng tương thích trình duyệt với tiêu chuẩn web được đưa ra đó là:

  • ACID 1 về tuân thủ HTML 4 và CSS 1: Ban đầu nó được gọi là Box Acid Test, là cách kiểm tra khả năng tương tác giữa các trình duyệt web, nhất là với Cascading Style Sheets 1.0. Đến năm 2008, hầu hết các trình duyệt đều đạt được tiêu chuẩn ACID1 này. Đây là cơ sở để phát triển các phiên bản ACID 2, ACID 3.
  • ACID 2 về tuân thủ CSS 1, CSS 2: Dùng để kiểm tra các vấn đề về đánh dấu HTML, kiểu dáng CSS 1, CSS 2, tiêu chuẩn hình ảnh PNG và URI. Có nhiều trình duyệt vượt qua được ACID 2 như Safari, Opera, FireFox,…
  • ACID 3 về tuân thủ CSS 2.1, DOM: Được dùng để kiểm tra các trình duyệt web đã tuân thủ các tiêu chuẩn web hay chưa, nhất là yếu tố DOM và JavaScript. ACID 3 tập trung vào các công nghệ sử dụng trên website tương tác cao như ECMAScript và DOM 2.
  • ACID 4 về tuân thủ CSS 3: Tiêu chuẩn này dùng để đánh giá các trình duyệt có tuân thủ các yếu tố về thiết lập CSS 3 cho website hay chưa.

Mối liên hệ giữa ACID và Transaction

Thực chất, Transaction và ACID là hai khái niệm có mối liên hệ mật thiết với nhau khi thao tác trên database. 

Transaction là một tiến trình xử lý có điểm đầu và điểm cuối được thao tác trên database, nó được cấu thành từ các phép thực thi nhỏ khác (operation). Các operation sẽ thực thi tuần tự và độc lập, nếu tất cả các operation thực thi thành công thì Transaction được thực hiện. Nếu có bất kỳ operation nào bị lỗi thì đồng nghĩa với Transaction bị hủy và phải rollback lại dữ liệu.

Mối liên hệ giữa ACID và Transaction
Mối liên hệ giữa ACID và Transaction

Mỗi Transaction thực thi đòi hỏi phải đảm bảo các thuộc tính ACID. Có nghĩa là ACID sẽ bảo đảm cho Transaction được thực hiện hợp lệ. Chúng có mối tương quan vô cùng mật thiết khi thực thi các tiến trình trong một hệ thống. 

Ví dụ, Công ty A mở một tài khoản ngân hàng MBbank và nạp vào 500 triệu đồng. Cuối tháng, nhân viên kế toán rút 30 triệu đồng để thưởng cho anh B vì thành tích xuất sắc. Anh B cũng mở một tài khoản MBbank và chị nhân viên kế toán chuyển 30 triệu đồng này vào tài khoản MBbank cho anh B.

Phân tích hành vi, từ góc nhìn dữ liệu ta sẽ thấy có hai hành động được thực hiện:

  • Trừ 30 triệu đồng từ tài khoản công ty A.
  • Cộng 30 triệu đồng vào tài khoản anh B.

Hai hành động này hoạt động riêng lẻ nhưng nó sẽ cấu thành nên một Transaction, việc cộng và trừ tiền từ tài khoản là các operation. Cả hai hành động đều thực hiện độc lập, nhưng nếu một trong hai cái không thực hiện thành công thì cả tiến trình chuyển và nhận tiền này này coi như không được xác lập. Đồng thời, quá trình thực hiện chuyển – nhận tiền trong ngân hàng MBbank này đều phải đảm bảo các thuộc tính ACID trên cơ sở dữ liệu.

Câu hỏi thường gặp

Tại sao ACID lại quan trọng trong cơ sở dữ liệu?

ACID là từ viết tắt của Atomicity, Consistency, Isolation và Durability. Mỗi thuộc tính trong bốn thuộc tính này đều góp phần vào khả năng của một giao dịch để đảm bảo tính an toàn, tính bền vững và tính trọn vẹn của dữ liệu.

DBMS có hỗ trợ thuộc tính ACID không?

Thuộc tính ACID của DBMS đóng vai trò quan trọng trong việc duy trì tính nhất quán và tính sẵn có của dữ liệu trong cơ sở dữ liệu. Vì vậy, đó là một giới thiệu chính xác về các thuộc tính ACID trong DBMS.

Lời kết

Khái niệm về ACID SQL là kiến thức cần nắm khi thao tác trên cơ sở dữ liệu. Nó có một mối quan hệ ràng buộc với các Transaction. Những kiến thức được tổng hợp trên đây, hy vọng sẽ giúp bạn hiểu hơn về các thuộc tính ACID là gì?. Đừng bỏ lỡ những bài viết tiếp theo của Vietnix nhé!

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG