DBMS phân tán - Giao thức cam kết
Trong hệ thống cơ sở dữ liệu cục bộ, để thực hiện một giao dịch, người quản lý giao dịch chỉ phải truyền đạt quyết định cam kết cho người quản lý khôi phục. Tuy nhiên, trong một hệ thống phân tán, người quản lý giao dịch nên truyền đạt quyết định cam kết tới tất cả các máy chủ ở các trang web khác nhau nơi giao dịch đang được thực hiện và thực thi thống nhất quyết định. Khi quá trình xử lý hoàn tất tại mỗi trang web, nó đạt đến trạng thái giao dịch đã cam kết một phần và đợi tất cả các giao dịch khác đạt đến trạng thái đã cam kết một phần. Khi nó nhận được thông báo rằng tất cả các trang đã sẵn sàng để cam kết, nó sẽ bắt đầu cam kết. Trong một hệ thống phân tán, tất cả các trang web đều cam kết hoặc không có trang nào thực hiện.
Các giao thức cam kết phân tán khác nhau là:
- Cam kết một giai đoạn
- Cam kết hai giai đoạn
- Cam kết ba giai đoạn
Cam kết một giai đoạn được phân phối
Cam kết một pha phân tán là giao thức cam kết đơn giản nhất. Hãy để chúng tôi xem xét rằng có một trang web kiểm soát và một số trang web nô lệ nơi giao dịch đang được thực hiện. Các bước trong cam kết phân tán là:
Sau khi mỗi nô lệ đã hoàn thành giao dịch cục bộ, nó sẽ gửi một thông báo “XONG” đến trang web kiểm soát.
Các nô lệ chờ thông báo "Cam kết" hoặc "Hủy bỏ" từ trang web kiểm soát. Thời gian chờ này được gọi làwindow of vulnerability.
Khi trang web kiểm soát nhận được thông báo “XONG” từ mỗi nô lệ, nó sẽ đưa ra quyết định cam kết hoặc hủy bỏ. Đây được gọi là điểm cam kết. Sau đó, nó gửi thông điệp này đến tất cả nô lệ.
Khi nhận được thông báo này, nô lệ hoặc cam kết hoặc hủy bỏ và sau đó gửi một thông báo xác nhận đến trang web kiểm soát.
Cam kết hai giai đoạn được phân phối
Cam kết hai pha phân tán làm giảm tính dễ bị tổn thương của các giao thức cam kết một pha. Các bước thực hiện trong hai giai đoạn như sau:
Phase 1: Prepare Phase
Sau khi mỗi nô lệ đã hoàn thành giao dịch cục bộ, nó sẽ gửi một thông báo “XONG” đến trang web kiểm soát. Khi trang web kiểm soát đã nhận được thông báo “XONG” từ tất cả các nô lệ, nó sẽ gửi một thông báo “Chuẩn bị” cho các nô lệ.
Các nô lệ bỏ phiếu xem họ có muốn cam kết hay không. Nếu nô lệ muốn cam kết, nó sẽ gửi một thông báo "Sẵn sàng".
Một nô lệ không muốn cam kết sẽ gửi thông báo "Chưa sẵn sàng". Điều này có thể xảy ra khi nô lệ có các giao dịch đồng thời xung đột hoặc có thời gian chờ.
Phase 2: Commit/Abort Phase
Sau khi trang web kiểm soát nhận được thông báo "Sẵn sàng" từ tất cả nô lệ -
Trang web kiểm soát sẽ gửi một thông báo "Cam kết toàn cầu" đến các nô lệ.
Các nô lệ áp dụng giao dịch và gửi thông báo "Cam kết ACK" đến trang web kiểm soát.
Khi trang web kiểm soát nhận được thông báo “Cam kết ACK” từ tất cả các nô lệ, nó sẽ coi giao dịch như đã cam kết.
Sau khi trang web kiểm soát nhận được thông báo “Chưa sẵn sàng” đầu tiên từ bất kỳ nô lệ nào -
Trang web kiểm soát sẽ gửi một thông báo "Hủy bỏ toàn cầu" đến các nô lệ.
Các nô lệ hủy bỏ giao dịch và gửi một thông báo "Hủy bỏ ACK" đến trang web kiểm soát.
Khi trang web kiểm soát nhận được thông báo “Hủy ACK” từ tất cả các nô lệ, nó sẽ coi giao dịch như đã bị hủy bỏ.
Cam kết ba pha được phân phối
Các bước trong cam kết ba giai đoạn phân tán như sau:
Phase 1: Prepare Phase
Các bước tương tự như trong cam kết hai pha phân tán.
Phase 2: Prepare to Commit Phase
- Trang web kiểm soát đưa ra thông báo phát sóng “Vào trạng thái chuẩn bị”.
- Các trang web nô lệ bỏ phiếu "OK" để phản hồi.
Phase 3: Commit / Abort Phase
Các bước tương tự như cam kết hai giai đoạn ngoại trừ thông báo “Cam kết ACK” / “Bỏ ACK” là không bắt buộc.