Khảo sát, đánh giá một số thuật toán xử lý tương tranh cập nhật dữ liệu trong các hệ phân tán

Trong môi trường phân tán, khi nhiều giao dịch thực hiện cập nhật trên một mục dữ liệu tại cùng một thời điểm, thì ứng dụng cần xử lý tương tranh cập nhật trên mục dữ liệu đó nhằm đảm bảo nhất quán dữ liệu (tính chính xác của dữ liệu), đồng thời nhiều nhất các giao dịch được thực hiện. Đã có nhiều thuật toán được đề xuất để giải quyết yêu cầu trên. Tuy nhiên những thuật toán đó vẫn còn bộc lộ những hạn chế như tình trạng khóa chết (deadlock) hay phải khôi phục lại (restart) nhiều lần làm ảnh hưởng đến hiệu suất cũng như hoạt động ổn định của ứng dụng. Do đó, yêu cầu cải tiến hoặc đề xuất thuật toán mới nhằm đạt được hiệu quả tốt hơn là hết sức cần thiết. Đóng góp của tác giả trong bài viết là thực hiện nghiên cứu, đánh giá và so sánh các thuật toán đã được sử dụng, từ đó làm cơ sở tiếp tục nghiên cứu nhằm đề xuất cải tiến hoặc thuật toán mới.

pdf7 trang | Chia sẻ: thanhle95 | Lượt xem: 480 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Khảo sát, đánh giá một số thuật toán xử lý tương tranh cập nhật dữ liệu trong các hệ phân tán, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TAÏP CHÍ KHOA HOÏC ÑAÏI HOÏC SAØI GOØN Soá 10 (35) - Thaùng 12/2015 15 c p dữ ệ c c ệ p â Algorithms for concurrent data processing in distributed systems PGS.TS. Lê Văn Sơn Trường Đại học Đà Nẵng ThS. Nguyễn Hồng Minh Trường Đại học An ninh nhân dân Assoc.Prof.,Ph.D. Le Van Son The University of Da Nang M.Sc. Nguyen Hong Minh University of People Security Trong môi trường phân tán, khi nhiều giao dịch thực hiện cập nhật trên một mục dữ liệu tại cùng một thời điểm, thì ứng dụng cần xử lý tương tranh cập nhật trên mục dữ liệu đó nhằm đảm bảo nhất quán dữ liệu (tính chính xác của dữ liệu), đồng thời nhiều nhất các giao dịch được thực hiện. Đã có nhiều thuật toán được đề xuất để giải quyết yêu cầu trên. Tuy nhiên những thuật toán đó vẫn còn bộc lộ những hạn chế như tình trạng khóa chết (deadlock) hay phải khôi phục lại (restart) nhiều lần làm ảnh hưởng đến hiệu suất cũng như hoạt động ổn định của ứng dụng. Do đó, yêu cầu cải tiến hoặc đề xuất thuật toán mới nhằm đạt được hiệu quả tốt hơn là hết sức cần thiết. Đóng góp của tác giả trong bài viết là thực hiện nghiên cứu, đánh giá và so sánh các thuật toán đã được sử dụng, từ đó làm cơ sở tiếp tục nghiên cứu nhằm đề xuất cải tiến hoặc thuật toán mới. Từ khóa: thuật toán, điều khiển tương tranh, nhân bản, hệ phân tán, nhất quán Abstract In distributed environments, when many transactions are performed on a data item at the same time, the application needs to handle access concurrently on this data item for both ensuring data consistency (the accuracy of the data) and executing maximum transactions. There have been many proposed algorithms to meet this requirement. However, they still reveal several limitations such as deadlock state or multiple restarts of the application, which affect its stability and performance. Therefore, it is essential of the requirement for improving or proposing a new algorithm in order to get better efficiency. Therefore, it is essential that improvements on the old algorithms or proposal of new ones be made. The authors’ contributions on this paper is to conduct study, evaluation and comparison of used algorithms, which will then serve as a basis for further study to suggest improvements or new algorithms. Keywords: algorithm, concurrency control, replication, distributed system, consistency 1. Giới hiệu Ngày nay, nhiều ứng dụng phân tán, làm việc cộng tác đang được quan tâm phát triển vì nhiều ưu điểm như: chi phí, hiệu năng, khả năng mở rộng, độ tin cậy và tính phân tán cố hữu [5][6][8][9]. Trong đó, kỹ 16 thuật nhân bản dữ liệu là giải pháp hiệu quả để giải quyết bài toán chia sẻ dữ liệu dùng chung, giúp nâng cao khả năng sẵn sàng, độ tin cậy và khả năng chịu lỗi của hệ thống Nhiều bản sao của một đối tượng dữ liệu được nhân bản tới các bộ nhớ cục bộ. Các tiến trình thực hiện trên bản sao hoàn toàn độc lập; không đồng nhất về khả năng xử lý, bộ nhớ, băng thông, tần số vào/ra hệ thống Vì vậy, nhiều tiến trình có thể yêu cầu thực hiện cập nhật (thao tác ghi) đồng thời trên cùng một đối tượng dữ liệu dẫn đến tương tranh cập nhật giữa nhiều. Điều này có thể dẫn đến không nhất quán hoặc không sẵn sàng đáp ứng dữ liệu, thậm chí nghiêm trọng hơn như bế tắc. Do đó, giải quyết bài toán tương tranh cập nhật dữ liệu là một trong những khó khăn, thách thức chủ yếu [10]. Chẳng hạn ta có ví dụ sau: Hai tiến trình T1 và T2 đồng thời yêu cầu thực hiện chuỗi thao tác đọc, ghi hoàn toàn độc lập trên đối tượng dữ liệu X. Mỗi tiến trình có thể cho kết quả khác nhau hoặc xẩy ra tương tranh cập nhật dữ liệu nếu như ứng dụng không có cơ chế quản lý, điều khiển phù hợp. Do đó cần thiết thực hiện đồng bộ hóa các giao dịch nhằm xử lý tương tranh cập nhật dữ liệu giữa các giao dịch đồng thời trên cùng đối tượng dữ liệu nhằm đạt được hai mục đích: đảm bảo tính nhất quán dữ liệu và nhiều nhất các giao dịch đồng thời được thực hiện [13]. Có nhiều nghiên cứu được đề xuất [1][4][5][6][8][9][14] để giải quyết bài toán tương tranh cập nhật dữ liệu. Tuy nhiên vẫn còn những hạn chế sau: Khóa chết: khi các tiến trình đợi đến lượt được cấp phát tài nguyên (dữ liệu). Tuy nhiên tài nguyên luôn luôn bị chiếm giữ bởi một tiến trình khác mà không thể giải phóng. Khôi phục lại: các giao dịch cần được xếp lịch để thực hiện. Nhưng do độ trễ trong truyền thông, sự không thuần nhất của hệ phân tán, cho nên các giao dịch đến có thể không theo trật tự chính xác. Do đó hệ thống cần khôi phục lại nhiều lần để đảm bảo mọi giao dịch đều được xếp lịch một cách chính xác. Trong phạm vi bước đầu của nhiệm vụ nghiên cứu nhằm đề xuất thuật toán cải tiến, tác giả thực hiện phân loại, so sánh, đánh giá các kỹ thuật, các phương pháp tiếp cận và giải thuật. Phần còn lại của bài báo được trình bày như sau: Phần 2 trình bày kỹ thuật và phương pháp tiếp cận; phần 3 thực hiện phân loại, so sánh, đánh giá các thuật toán; kết luận và hướng nghiên cứu, phát triển tiếp theo được chỉ ra trong phần 4. 2. Kỹ thuật và Phương pháp tiếp cận 2.1. Kỹ thuật Hiện nay có hai kỹ thuật chủ yếu đang được sử dụng để xử lý tương tranh cập nhật dữ liệu gồm: sử dụng khóa (Locking) và nhãn thời gian (Timestamp Ordering). 2.1.1 Sử dụng khóa Khóa là cơ chế kiểm soát nhiều cập nhật đồng thời vào một mục dữ liệu tại cùng một thời điểm. Mục dữ liệu có thể bị khóa ở một trong hai chế độ: exclusive(X) – mục dữ liệu có thể được đọc hoặc ghi; shared(S) – mục dữ liệu chỉ có thể được đọc. Các khóa được lưu trữ và quản lý bởi một bảng khóa. Thuật ngữ khóa tương thích để chỉ hai giao dịch có hai khóa mà chúng có thể thực hiện đồng thời trên một mục dữ liệu. Giao dịch chỉ được thực hiện trên mục dữ liệu khi được cấp khóa phù T1: Read(X) T2: Read(X) XX+1 XX+1 Write(X) Write(X) Commit Commit 17 hợp trên mục dữ liệu đó. S X S True False X False False Hình 1: Ma rận ương hích kh a 2.1.2 Nhãn thời gian Mỗi giao dịch khi tham gia vào hệ thống sẽ được gán một nhãn thời gian duy nhất. Đó chính là thời điểm bắt đầu của giao dịch. Giá trị của nhãn thời gian có thể thiết lập bằng phép đếm logic hoặc đồng hồ hệ thống toàn cục và đơn điệu tăng. Do đó, các nhãn thời gian được gán trước khi giao dịch được thực hiện và theo quy tắc: nếu giao dịch Ti có nhãn thời gian là TS(Ti), giao dịch mới Tj có nhãn thời gian TS(Tj) thì TS(Ti)<TS(Tj). Giao dịch được thực hiện theo thứ tự nhãn thời gian. 2.2. Phương pháp tiếp cận Có hai phương pháp tiếp cận với bài toán xử lý tương tranh cập nhật dữ liệu của các giao dịch đồng thời gồm: Optimistic (Lạc quan) và Pessimistic (Bi quan). Sự khác nhau cơ bản là thời điểm quyết định xử lý tương tranh giữa các giao dịch. 2.2.1 Phương pháp tiếp cận Optimistic Phương pháp tiếp cận Optimistic cho rằng có ít giao dịch xảy ra tương tranh. Do đó, mọi giao dịch đều được xử lý, nhưng trì hoãn yêu cầu xác thực cho đến trước giai đoạn thực hiện thao tác ghi trên mục dữ liệu. Vì vậy, giao dịch có thể bị hủy bỏ khi hệ thống thực hiện đồng bộ hóa tại thời điểm cuối cùng [2][3]. Sơ đồ minh họa: Read Compute Validate Write 2.2.2 Phương pháp tiếp cận Pessimistic Phương pháp tiếp cận Pessimistic cho rằng có nhiều giao dịch xảy ra tương tranh. Vì vậy xử lý tương tranh giữa các giao dịch cần được kiểm tra và thực hiện trước tiên [15]. Sơ đồ minh họa: Validate Read Compute Write 3. Phân loại, so sánh, đánh giá các huậ oán xử lý ương ranh cập nhậ dữ liệu Các thuật toán xử lý tương tranh có thể được phân loại dựa trên kỹ thuật hoặc phương pháp tiếp cận. Trong bài viết này, tác giả thực hiện phân loại dựa trên phương pháp tiếp cận. 3.1. Thuật toán sử dụng phương pháp tiếp cận Optimistic Thuật toán được đề xuất bởi [1] sử dụng khóa và có nguyên lý hết sức đơn giản. Khi giao dịch thực hiện cập nhật một mục dữ liệu thì trước hết phải yêu cầu khóa cho mục dữ liệu đó từ bộ quản lý khóa. Nếu mục dữ liệu này đã được khóa bởi khóa không tương thích (xem bảng tương thích khóa ở trên) với khóa được yêu cầu thì giao dịch phải chờ và được đưa vào hàng đợi để thực hiện. Ngược lại giao dịch sẽ được cấp khóa để thao tác với mục dữ liệu. Khi giao dịch hoàn thành, khóa được giải phóng và giao dịch trong hàng đợi sẽ được thực hiện tiếp theo. Thao tác chỉ có thể được thực hiện khi có sự tương thích về khóa với xác suất chỉ là 25%. Đặc biệt là các thao tác ghi dữ liệu. Do đó, nếu ứng dụng có nhiều giao dịch yêu cầu ghi dữ liệu thì thuật toán sẽ không hiệu quả. Thuật toán chỉ phù hợp khi thao tác đọc dữ liệu là chủ yếu. Ngoài ra thuật toán có thể xảy ra trường hợp khóa chết. Tức là một số giao dịch chờ đợi nhau vô thời hạn và cần có sự can thiệp từ bên ngoài. Thuật toán được đề xuất bởi [4] dựa trên nhãn thời gian để kiểm tra các giao dịch đến theo một thứ tự chính xác, mỗi 18 mục dữ liệu sẽ được gán nhãn thời gian ghi (wts) - là nhãn thời gian lớn nhất của thao tác ghi sau khi thực hiện thành công trên mục dữ liệu X; nhãn thời gian đọc (rts) - là nhãn thời gian lớn nhất của thao tác đọc sau khi thực hiện thành công trên mục dữ liệu X.  Yêu cầu đọc mục dữ liệu X: Ri(X) Nếu TS(Ti) < wts(X): hủy bỏ giao dịch và quay trở lại để gán nhãn thời gian mới cho các giao dịch Ti. Nếu TS(Ti) ≥ wts(X): thực hiện giao dịch và cập nhật lại nhãn thời gian đọc của mục dữ liệu X là rts(X).  Yêu cầu ghi mục dữ liệu X: Wi(X) Nếu TS(Ti) >= wts(X) và TS(Ti) >= rts(X): thực hiện thao tác. Nếu rts(X) < TS(Ti) < wts(X): không thực hiện gì. Nếu TS(Ti) < rts(X): hủy bỏ giao dịch, quay trở lại để gán nhãn thời gian mới cho các giao dịch Ti. Bảng 1 minh họa các giao dịch T1, T2, T3 có nhãn thời gian là 10, 20, 30 thao tác trên dữ liệu X, Y. Thuật toán xếp lịch tuần tự cho các giao dịch để giải quyết yêu cầu tương tranh và tránh được khóa chết. Tuy nhiên hệ thống có thể phải thực hiện khôi phục lại nhiều lần để thực hiện gán nhãn thời gian mới cho các giao dịch. Bảng 1: Minh họa sử dụng nhãn thời gian Ti T1 T2 T3 X Y 10 20 30 rts=0 wts=0 rts=0 wts=0 1 R(X) rts=20 2 R(X) rts=30 3 W(Y) wts=20 4 W(A) 30 5 R(Y) ? Ti bị hủy bỏ và phải quay lại để gán nhãn thời gian mới cho các giao dịch Đánh giá: Mọi thao tác đều được xử lý và chỉ thực hiện đồng bộ khi có yêu cầu ghi nên có thể dẫn sự hủy bỏ các giao dịch do không thỏa mãn. Ứng dụng có thể phải khôi phục lại nhiều lần (chẳng hạn như quay ngược lại để gán nhãn thời gian mới cho các giao dịch...). Do đó, phương pháp tiếp cận Optimistic chỉ đạt hiệu quả cao khi có ít tương trang xảy ra giữa các giao dịch. 3.2. Thuật toán sử dụng phương pháp tiếp cận Pessimistic Hiệu suất của thuật toán dựa trên khóa được trình bày ở trên không cao (25%), không phù hợp với các ứng dụng có nhiều yêu cầu ghi dữ liệu và đặc biệt là có thể dẫn đến sự chiếm dụng khóa không cần thiết, khóa chết. Thuật toán được đề xuất bởi [14] sử dụng khóa 2 pha (2PL) với từng thao tác trong mỗi giao dịch nhằm nâng cao hiệu quả. Hình 2: Sơ đồ kh a 2 pha Pha hứ nhấ (pha ăng rường): giành được khóa. Pha hứ hai (pha hu hẹp): giải phóng khóa. Lock point: thời điểm chuyển từ pha thứ nhất sang pha thứ hai. Thuật toán cho phép các giao dịch có thể thực hiện xen kẽ nhằm nâng cao hiệu suất của việc sử dụng khóa. Tuy nhiên thuật toán cũng có thể dẫn đến trường hợp 19 các giao dịch bị hủy bỏ theo hiệu ứng chuỗi (cuộn nhau). Điều này xảy ra khi một giao dịch bị hủy bỏ sau khi chúng đã giải phóng khóa, dẫn đến các giao dịch khác đã cập nhật tới các mục dữ liệu không bị khóa cũng bị hủy bỏ theo. Để khắc phục trường hợp này thuật toán khóa hai pha nghiêm ngặt cho phép các giao dịch được chiếm giữ các khóa cho đến khi giao dịch kết thúc. Trong ứng dụng, thuật toán có thể triển khai theo các phương thức sau: a. Sử dụng bộ quản lý khóa trung tâm Chỉ duy nhất một site trung tâm chịu trách nhiệm quản lý khóa. Mọi giao dịch có yêu cầu khóa phải liên lạc với nó để được cấp khóa. Phương pháp này có ưu điểm là dễ dàng triển khai, tuy nhiên nhược điểm là dễ xảy ra tắc nghẽn và độ tin cậy thấp khi có nhiều yêu cầu tới site trung tâm hay site trung tâm gặp lỗi. b. Sử dụng bản sao chính và bộ quản lý khóa phân tán Một bản được lựa chọn là bản sao chính (primary copy) thông qua thuật toán Voting [7]. Các bản sao khác gọi là bản phụ thuộc. Chỉ khi bản sao chính thực hiện ghi thì mới sử dụng khóa và thực hiện lan truyền tới các bản sao khác. Nhiều bộ quản lý khóa được sử dụng và đặt tại các vị trí khác nhau. Mỗi bộ quản lý khóa chịu trách nhiệm một tập các mục dữ liệu. Thuật toán giảm chí phí truyền thông và hiệu suất tốt hơn so với thuật toán sử dụng bộ quản lý khóa trung tâm. Tuy nhiên xử lý các trường hợp khóa chết sẽ rất khó khăn. c. Sử dụng bộ quản lý khóa phân tán Mọi site đều có bộ quản lý khóa chịu trách nhiệm cấp khóa cho site đó. Nếu site không có yêu cầu cập nhật dữ liệu thì thuật toán thực hiện tương tự như với sử dụng bản sao chính và bộ quản lý khóa phân tán. Ngược lại, giao thức điều khiển nhân bản Read - one - Write - All (ROWA) [7] được thực hiện. Đó là, mọi bản sao của mục dữ liệu phải được khóa trước khi thực hiện cập nhật; thao tác đọc được thực hiện tại bất kỳ bản sao nào nếu dành được khóa của bản sao đó. Thuật toán được đề xuất bởi [11] sử dụng nhiều phiên bản của mục dữ liệu. Do đó, các thao tác ghi không làm thay đổi dữ liệu trên mục dữ liệu mà sẽ tạo ra một phiên bản mới. Thuật toán thực hiện gán nhãn thời gian cho các phiên bản mới được tạo ra. Chẳng hạn, mục dữ liệu X có thể có nhiều phiên bản X1, X2,Xn.  Yêu cầu đọc mục dữ liệu X Ri(X) Thao tác luôn thực hiện được với giá trị trả về là phiên bản Xv thỏa mãn: wts(Xv) là giá trị lớn nhất và nhỏ hơn TS(Ti).  Yêu cầu ghi mục dữ liệu X Wi(X) Thao tác ghi sinh ra một phiên bản mới của mục dữ liệu X gọi là Xv có TS(Xv) = TS(Ti) khi trong lịch chưa có yêu cầu đọc Rj(Xr) trên phiên bản Xr mà TS(Ti) < rts(Xr), ngược lại thao tác ghi bị từ chối. Thuật toán dựa trên nhãn thời gian được đề xuất bởi [12] thực hiện sinh lịch tuần tự các giao dịch theo nhãn thời gian. Tất cả các thao tác của mỗi giao dịch đều được thực hiện liên tiếp nhau. Trong lịch tuần tự mỗi giao dịch thực hiện toàn bộ các thao tác của nó và không có tương tranh. Do đó các giao dịch không phải đợi nhưng có thể bị từ chối thực hiện do lịch tuần tự xuất hiện tình trạng khóa chết. Khi đó chi phí là số lần cần thiết phải khôi phục lại các giao dịch. Để khắc phục tình trạng phải khôi phục lại nhiều lần, thuật toán cải tiến yêu cầu các thao tác của mỗi giao dịch phải được lưu trữ trong bộ đệm cho đến khi 20 hoàn thành việc sắp xếp theo đúng thứ tự nhãn thời gian. Như vậy sẽ không có các giao dịch có nhãn thời gian nhỏ hơn đến nữa. Do đó không xẩy ra trường hợp bị từ chối hay hệ thống phải khôi phục lại lại. Tuy nhiên ứng dụng có thể xẩy ra trường hợp khóa chết, do giao dịch có nhãn thời gian nhỏ không bao giờ đến được bộ đệm. Đánh giá: Trong trường hợp có nhiều giao dịch xẩy ra tương tranh thì phương pháp tiếp cận Pessimistic có hiệu quả cao hơn so với phương pháp tiếp cận Optimistic. Chẳng hạn chi phí cần thiết để khôi phục lại hay trường hợp khóa chết. Phương pháp này nếu sử dụng nhãn thời gian thì thứ tự sắp xếp của các giao dịch được quyết định tĩnh, nếu sử dụng khóa thì thứ tự được quyết định động. Thuật toán sử dụng nhãn thời gian sẽ có hiệu quả hơn nếu ứng dụng có thao tác đọc là chủ yếu. Các giao dịch bị hủy bỏ sẽ được quyết định ngay lập tức. Thuật toán sử dụng khóa sẽ có hiệu quả hơn khi ứng dụng có thao tác ghi là chủ yếu. Tuy nhiên có thể dẫn đến sự chiếm dụng khóa không hiệu quả, yêu cầu các giao dịch khác phải đợi hoặc thậm chí dẫn đến khóa chết. 4. luận hướng nghi n cứu Các thuật toán dựa trên kỹ thuật khóa và nhãn thời gian vẫn tồn tại những vấn đề về khóa chết hay đòi hỏi khôi phục lại nhiều lần. Do đó làm giảm độ tin cậy, hiệu năng của thuật toán. Bên cạnh đó thì hai phương pháp tiếp cận Optimistic và Pessimistic cũng có những ưu và nhược điểm riêng và người xây dựng ứng dụng cần đánh giá yêu cầu, đòi hỏi của hệ thống, bài toán đặt ra để từ đó lựa chọn phương pháp tiếp cận hiệu quả nhất. Nghiên cứu đánh giá và so sánh các thuật toán xử lý tương tranh cập nhật dữ liệu là bước đầu tiên hết sức quan trọng và hữu ích nhằm tìm hiểu những nguyên lý, nền tảng tri thức và khai mở vấn đề. Thời gian tới, chúng tôi sẽ tiếp tục nghiên cứu trong lĩnh vực này nhằm đề xuất thuật toán hoặc thực hiện những cải tiến xử lý tương tranh cập nhật dữ liệu trong môi trường phân tán; thực hiện mô phỏng, chứng minh tính tính đúng đắn; so sánh, đánh giá toàn diện phương pháp mới. ÀI LIỆU HAM HẢO 1. Atul, et al. Adya (1995), “Efficient optimistic concurrency control using loosely synchronized clocks”, ACM SIGMOD Record, pp. 23-34, 24.2. 2. Christoph, Rajesh Bordawekar, and Calin Cascaval von Praun (2008), “Modeling optimistic concurrency using quantitative dependence analysis”, Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming, ACM. 3. Dag, et al Nyström (2004), “Pessimistic concurrency control and versioning to support database pointers in real-time databases”, Real- Time Systems, 2004, ECRTS 2004, Proceedings, 16th Euromicro Conference on, IEEE. 4. Ho-Jin, and Byeong-Soo Jeong. Choi (2006), “A timestamp-based optimistic concurrency control for handling mobile transactions”, Computational Science and Its Applications- ICCSA 2006, pp. 796-805. 5. Jiming, et al Chen (2010), “Distributed collaborative control for industrial automation with wireless sensor and actuator networks”, Industrial Electronics, IEEE Transactions, pp. 4219-4230, 57.12. 6. Jun, et al Wang (2006), “Distributed collaborative filtering for peer-to-peer file sharing systems”, Proceedings of the 2006 ACM symposium on Applied computing, ACM. 7. Matthias, et al Wiesmann (2000), “Database replication techniques: A three parameter classification”, in Reliable Distributed Systems, 2000, SRDS-2000, Proceedings The 19th IEEE Symposium on. IEEE. 21 8. Michael E, et al Locasto (2004), Collaborative distributed intrusion detection. 9. Peng, et al. Han (2004), “A scalable P2P recommender system based on distributed collaborative filtering”, Expert systems with applications, pp. 203-210, 27.2. 10. Philip A., and Nathan Goodman Bernstein (1981), Concurrency control in distributed database systems, CSUR. 11. Philip A., and Nathan Goodman Bernstein (1983), “Multiversion concurrency control- theory and algorithms”, ACM Transactions on Database Systems (TODS), pp. 465-483, 8.4. 12. Quazi Ehsanul Kabir, and Hidenori Nakazato Mamun (2005), “Timestamp based optimistic concurrency control”, in TENCON 2005, 2005 IEEE Region 10 Conference. 13. R., Berard, P., and Decitre, P Balter (1982), “Why control of concurrency level in distributed systems is more important than deadlock management”, in Proc. ACM SIGACT-SIGOPS 1st Symp, on the Principles of Distributed Computing, pp. pages 183–193. 14. Samuel Kounev (2001), “Eliminating ECperf persistence bottlenecks when using RDBMS with pessimistic concurrency control”, Technical Report, dvs1. informatik. tu-darmstadt. de/~ skounev, Technical University of Darmstadt, Germany. 15. Timothy R. Learmont (2001), “Fine-grained consistency mechanism for optimistic concurrency control using lock groups”, U.S. Patent, No. 6,240,413, 29 May. Ngày nhận bài: 31/7/2015 Biên tập xong: 15/12/2015 Duyệt