Giải thích Optimistic Concurrency Control (OCC) là...
Giải thích Optimistic Concurrency Control (OCC) là...
Optimistic Concurrency Control (OCC) là một phương pháp kiểm soát đồng thời không sử dụng khóa, được áp dụng trong các hệ thống giao dịch như hệ thống quản lý cơ sở dữ liệu quan hệ. OCC giả định rằng nhiều giao dịch có thể hoàn thành mà không can thiệp lẫn nhau. Trong khi thực hiện, các giao dịch sử dụng dữ liệu mà không cần phải khóa chúng. Trước khi cam kết, mỗi giao dịch sẽ kiểm tra xem có giao dịch nào khác đã sửa đổi dữ liệu mà nó đã đọc hay không. Nếu phát hiện có sự sửa đổi xung đột, giao dịch đang cam kết sẽ bị lùi lại và có thể được khởi động lại[3].
Trong Azure Cosmos DB, OCC được hỗ trợ thông qua các thẻ thực thể HTTP, hay còn gọi là ETags. Mỗi tài nguyên SQL API trong Cosmos DB đều có một ETag, và giá trị ETag này được thiết lập trên máy chủ mỗi khi một mục được cập nhật. ETag hoạt động như một dấu hiệu để kiểm tra phiên bản của một mục, giúp đảm bảo rằng một giao dịch chỉ có thể cập nhật một mục nếu nó đang làm việc trên phiên bản mới nhất của mục đó. Khi một giao dịch muốn cam kết các thay đổi của mình, nó sẽ kiểm tra xem có giao dịch nào khác đã cập nhật các mục dữ liệu tương tự kể từ khi nó đọc chúng hay không. Nếu không, cam kết thành công và số phiên bản hoặc dấu thời gian được tăng lên. Nếu có, cam kết thất bại và giao dịch phải bị hủy bỏ và thử lại[10][13].
Cosmos DB sử dụng ETags cùng với tiêu đề If-Match trong các yêu cầu HTTP để thực hiện OCC. Khi một ứng dụng cập nhật một mục, nó sẽ bao gồm ETag của mục đó trong tiêu đề If-Match của yêu cầu. Nếu ETag trên máy chủ khớp với ETag trong yêu cầu,...
expert
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào