Friday, July 18, 2014

TL;DR - Khái niệm về ACID

ACID là viết tắt của 4 chữ Atomicity, Consistency, Isolation, và Durability. Đó là 4 thuộc tính quan trọng mà mỗi database đều phải đảm bảo nhằm bảo vệ tính toàn vẹn và chính xác của dữ liệu.

À, mà tôi không đề cập đến khái niệm acid trong ngành hoá học đâu nhé.

Vì tiêu chí bài viết là Dài quá không đọc (TLDR - Too long didn't read) nên tôi chỉ điểm qua một nét cơ bản thôi...





Atomicity (Tính nguyên tố): Ghi xuống 1 lô dữ liệu, thì kết quả sẽ hoặc là thành công hết, hoặc là thất bại hết. Không chấp nhận việc ghi xuống một nửa thì được, nửa còn lại bị lỗi. Kiểu như viết "anh yeu em nhieu" mà máy chỉ nhắn đi rằng "anh yeu em nhi", gặp trúng cô người yêu hay ghen thì sẽ bị vặn hỏi "em Nhi là em nào?"

Consistency (Tính nhất quán): Dữ liệu luôn luôn ở trạng thái hợp lệ. Không bao giờ để cho một giao dịch làm mất trạng thái hợp lệ. Hoặc là nó thành công và chuyển sang trạng thái hợp lệ mới, hoặc là trở về với trạng thái hợp lệ cũ.

Isolation (Tính tách biệt): Khi một giao dịch đang thực hiện chưa xong, thì nó cần phải tách biệt với hệ thống hiện tại.

Durability (Tính bền vững): Khi giao dịch hoàn tất, dữ liệu sẽ được đảm bảo ngay cả khi có hỏng hóc hoặc cháy nổ gì đó.

Vậy, chuyện gì sẽ xảy ra nếu...

Tính nguyên tố bị vi phạm? Như đã đề cập, dữ liệu bị thiếu và sẽ rối tung lên cho mà xem.

Tính nhất quán bị vi phạm? Bởi vì dữ liệu không còn hợp lệ nữa tức là đã bị sai, và mọi giao dịch tiếp theo sẽ chồng chất cái sai lên... Không thể tưởng tượng được nó như thế nào nữa...

Tính tách biệt bị vi phạm? Rất dễ xảy ra tình trạng đụng độ khi 2 thao tác khác nhau cùng diễn ra trên 1 dữ liệu. Và còn đau đầu hơn khi một thao tác bị lỗi và cần trả lại trạng thái ban đầu, khi đó, khó mà có thể rollback lại được.

Tính bền vững bị vi phạm? Đồng nghĩa với việc dữ liệu có thể bị mất. What the hell? Nếu thế thì cần database làm gì nữa...

Đó là 4 yếu tố cho sự phát triển của database. Sự khác nhau giữa các loại database chỉ là cách hiện thực và phương án ưu tiên yếu tố nào cao nhất mà thôi... :)

1 comment:

Biểu mẫu liên hệ

Name

Email *

Message *