Tính nguyên tử (hệ cơ sở dữ liệu)

Trong hệ cơ sở dữ liệu, tính nguyên tử (tiếng Anh: atomicity, tiếng Hy Lạp cổ: ἄτομος) là một trong các tính chất ACID của giao dịch cơ sở dữ liệu. Giao dịch nguyên tử là dãy thao tác trên cơ sở dữ liệu, có tính không thể phân chiakhông thể rút gọn, sao cho hoặc tất cả các bước đều xảy ra, hoặc là không gì xảy ra cả.[1] Tính nguyên tử đảm bảo tránh được trường hợp việc cập nhật vào cơ sở dữ liệu chỉ xảy ra được có một phần, trong trường hợp này, thải bỏ hẳn cả quá trình thao tác thì sẽ đỡ vấn đề hơn là để mặc trạng thái cơ sở dữ liệu như vậy. Hệ quả là không có client cơ sở dữ liệu nào khác có thể quan sát được giao dịch như vậy khi nó đang trong giai đoạn lưng chừng. Chỉ có thể quan sát tại thời điểm khi nó chưa diễn ra, và tại thời điểm khi nó đã diễn ra toàn bộ (hoặc không thấy gì diễn ra cả nếu giao dịch bị hủy bỏ giữa chừng).

Ví dụ cho giao dịch nguyên tử đó là chuyển tiền từ tài khoản A sang tài khoản B. Việc này gồm hai thao tác: rút tiền từ tài khoản A, rồi cất tiền đó vào tài khoản B. Thực thi các thao tác này bên trong giao dịch nguyên tử như thế đảm bảo rằng cơ sở dữ liệu giữ được trạng thái nhất quán, tức là tiền không bị mất đi hay sinh ra thêm ngay cả khi một trong hai thao tác kia bị hỏng.[2]

Tách bạch với các tính chất khác

[sửa | sửa mã nguồn]

Tính nguyên tử có hành trạng không hoàn toàn tách bạch[a] đối với các tính chất ACID khác của giao dịch. Ví dụ, tính cô lập thì lại cậy vào tính nguyên tử để tua ngược[b] lại thay đổi để phòng trường hợp vòng cô lập gặp sự cố chẳng hạn như deadlock; tính nhất quán thì cũng cậy vào tính năng tua ngược để phòng trường hợp giao dịch trái phép nào đó vi phạm tính nhất quán. Cuối cùng, đến tính nguyên tử bản thân nó cũng phải cậy vào tính bền bỉ để bảo toàn tính nguyên tử của giao dịch ngay cả khi gặp hỏng hóc từ bên ngoài.

Do vậy, việc không phát hiện ra được lỗi để mà tua ngược lại giao dịch thì có thể khiến cho tính cô lập và tính nhất quán không còn giữ được nữa.

Thực hiện

[sửa | sửa mã nguồn]

Thường thì các hệ thống thực hiện tính nguyên tử bằng các cách như là trang bị một số cơ chế để cho ta biết được giao dịch nào đã bắt đầu và giao dịch nào đã kết thúc; hoặc giữ lại bản sao của dữ liệu trước khi bất kỳ sự thay đổi (đọc-chép-sửa) nào xảy ra. Vài hệ thống file đã phát triển được phương pháp giúp tránh khỏi việc phải lưu giữ nhiều bản sao dữ liệu, đó là bằng cách sử dụng nhật chí.[c] Cơ sở dữ liệu thường thực hiện tính chất này bằng cách sử dụng một số hình thức ghi lại 'nhật chí' / 'nhật trình' để theo dõi sự thay đổi. Hệ thống sẽ đồng bộ hóa vào nhật trình (thường hay là metadata) khi cần thiết sau khi thay đổi đã diễn ra thành công. Về sau, khi khôi phục crash thì sẽ bỏ qua những mục nào còn chưa hoàn thành. Mặc dù bản thực hiện thực tế có đổi khác đi tùy vào các yếu tố như vấn đề tác vụ tịnh hành[d] chẳng hạn, thì nguyên lý của tính nguyên tử (ví dụ: đã xong là phải xong hẳn, đã hỏng là phải hỏng hẳn) vẫn được giữ nguyên.

Sau cùng thì bất kỳ bản thực hiện ở cấp độ ứng dụng nào thì cũng đều phải dựa vào chức năng của hệ điều hành cả. Ở cấp độ hệ thống file, các hệ thống tuân theo POSIX có cung cấp các lệnh gọi hệ thống như open(2)flock(2) cho phép ứng dụng mở hoặc khóa file theo kiểu 'nguyên tử'. Ở cấp độ tiến trình, POSIX Thread có cung cấp đầy đủ các công cụ nguyên sơ cho việc đồng bộ hóa.

Cấp độ phần cứng thì có thể dựa vào các thao tác nguyên tử như Test-and-set, Fetch-and-add, Compare-and-swap hoặc Load-Link/Store-Conditional, cùng với cả hàng rào bộ nhớ.[e]

Ghi chú thuật ngữ

[sửa | sửa mã nguồn]
  1. ^ Orthogonal
  2. ^ Roll back
  3. ^ Tức "Journaling file system", hệ thống tập tin có nhật chí
  4. ^ Concurrency issue
  5. ^ Memory barrier

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ “atomic operation”. Webopedia. 25 tháng 11 năm 2003. Truy cập ngày 23 tháng 3 năm 2011. An operation during which a processor can simultaneously read a location and write it in the same bus operation. This prevents any other processor or I/O device from writing or reading memory until the operation is complete.
  2. ^ Amsterdam, Jonathan. “Atomic File Transactions, Part 1”. O'Reilly. Bản gốc lưu trữ ngày 3 tháng 3 năm 2016. Truy cập ngày 28 tháng 2 năm 2016.
Chúng tôi bán
Bài viết liên quan
Tổng quan về bang Tokyo Manji trong Tokyo Revengers
Tổng quan về bang Tokyo Manji trong Tokyo Revengers
Tokyo Manji Gang (東京卍會, Tōkyō Manji-Kai?), thường được viết tắt là Toman (東卍, Tōman?), là một băng đảng mô tô có trụ sở tại Shibuya, Tokyo
3 chiếc túi hiệu thú vị được lòng giới thời trang, nàng công sở cá tính hẳn cũng mê mệt
3 chiếc túi hiệu thú vị được lòng giới thời trang, nàng công sở cá tính hẳn cũng mê mệt
Nếu để chọn ra nững mẫu túi hiệu thú vị đáp ứng được các tiêu chí về hình khối, phom dáng, chất liệu, mức độ hữu dụng cũng như tính kinh điển thì bạn sẽ chọn lựa những mẫu túi nào?
Polumnia Omnia - Lời oán than của kẻ ngu muội
Polumnia Omnia - Lời oán than của kẻ ngu muội
Đây là bản dịch lời của bài [Polumnia Omnia], cũng là bản nhạc nền chủ đạo cho giai đoạn 2 của Boss "Shouki no Kami, Kẻ Hoang Đàng".
Quân đội Israel - Nguồn Gốc và Sức Mạnh
Quân đội Israel - Nguồn Gốc và Sức Mạnh
Đây là lời tuyên chiến đầu tiên của Israel kể từ năm 1973, tỏ rõ ý định muốn chơi tới cùng với Hamas và chắc chắn sẽ giành được chiến thắng chung cuộc.