HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG ---o0o--- NGUYỄN VIẾT THÀNH MỘT SỐ THUẬT TOÁN ĐIỀU KHIỂN TƯƠNG TRANH TRONG GIAO DỊCH ĐỒNG THỜI Chuyên ngành: Truyền dữ liệu và mạng máy tính
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-o0o -
NGUYỄN VIẾT THÀNH
MỘT SỐ THUẬT TOÁN ĐIỀU KHIỂN TƯƠNG TRANH
TRONG GIAO DỊCH ĐỒNG THỜI
Chuyên ngành: Truyền dữ liệu và mạng máy tính
Mã số: 60.48.15
TÓM TẮT LUẬN VĂN THẠC SỸ
Người hướng dẫn khoa học:
TS PHẠM VIỆT HÀ
Trang 2LỜI MỞ ĐẦU
Cơ sở dữ liệu là một lĩnh vực lớn và là chuyên ngành được sự quan tâm nhiều nhất trong Công nghệ thông tin Từ khi có mô hình cơ sở dữ liệu đầu tiên vào những năm 60 thì đến nay đã trải qua nhiều hệ cơ sở dữ liệu và có nhiều ứng dụng trong khoa học và thương mại Đặc biệt là trong thế kỷ 21, sự phát triển của internet bùng nổ một cách mạnh
mẽ thì cơ sở dữ liệu phân tán cũng trở thành một lĩnh vực quan trọng và phát triển nhanh chóng Bên cạnh đó, với sự phát triển của internet thì việc lưu trữ và xử lý dữ liệu tại nhiều vị trí khác nhau của các công ty, các tổ chức đặc biệt là các công ty và tổ chức thương mại cần được đáp ứng đầy đủ và các dữ liệu này cần phải được đảm bảo sự nhất quán và toàn vẹn Nhưng vấn đề được đặt ra ở đây là dựa vào nền tảng của cơ sở dữ liệu tập trung để mở rộng cho cơ sở dữ liệu phân tán thì việc giải quyết trở nên phức tạp Và việc thiết kế cơ sở dữ liệu phân tán đã được T.Ozsu và P.Valduriez chứng minh là một bài toán khó giải (NP-Hard) Một vấn đề khác cũng được đặt ra ở đây và cũng là vấn để mà nhiều nhà nghiên cứu vẫn đang tìm hiểu và giải quyết đó là điều khiển tương tranh của các giao tác (Transaction) trong cơ sở dữ liêu phân tán Trong đó, yêu cầu quan trọng nhất trong điểu khiển tương tranh là phải đảm bảo tính nhất quán, tính toàn vẹn của dữ liệu Điểu này đối với cơ sở dữ liệu phân tán trở nên phức tạp bởi vì trong môi trường phân tán
có nhiều lý do để dữ liệu bị xung đột và tương tranh tài nguyên khi nhiều giao dịch xảy ra đồng thời
Ngày nay, song song với việc internet phát triển thì thương mại điện tử cũng trở thành một lĩnh vực lớn Khi đó, các site thương mại ngày càng được mở rộng và mô hình giao dịch trực tuyến trở nên phổ biến Nhưng khi các site thương mại này càng lớn thì nhu cầu lưu trữ dữ liệu càng trở nên thiết yếu và dữ liệu được đặt ở nhiều vị trí khác nhau Với lượng dữ liệu lớn, khối lượng truy cập lớn và độ tương tranh khi nhiều giao dịch xảy ra đồng thời cao thì làm thế nào để đảm bảo dữ liệu không bị xung đột với nhau và dữ liệu không bị mất?
Với những yêu cầu cấp thiết như vậy, các DBMS phải đưa ra những giao thức và những thuật toán để giải quyết các vấn đề trên
Trang 3Với mục tiêu là tìm hiểu, đánh giá các thuật toán điều khiển tương tranh để đưa ra ứng
dụng điều khiển, luận văn: “Một số thuật toán điều khiển tương tranh trong giao dịch đồng thời” được thực hiện gồm các phần chính sau:
Chương 1 của luận văn mô tả tổng quan về các yếu tố dẫn đến tương tranh dữ liệu và yêu cầu phải giải quyết xung đột dữ liệu bằng điều khiển tương tranh
Chương 2 của luân văn nêu rõ chi tiết của các thuật toán trong điều khiển tương tranh
và chỉ ra một số vấn đề còn tồn tại của thuât toán
Chương 3 của luận văn sẽ đánh giá, phân tích ưu nhược điểm của thuật toán để lựa chọn thuật toán trong ứng dụng điều khiển tương tranh trong môt số giao dịch đồng thời
và đưa ra kết quả ứng dụng
Trang 4CHƯƠNG 1: TỔNG QUAN VỀ QUẢN LÝ GIAO TÁC VÀ ĐIỀU
KHIỂN TƯƠNG TRANH
1.1 Giao tác và xung đột dữ liệu
1.1.1 Giao tác (Transaction):
Giao tác được xem như một dãy các thao tác đọc và ghi trên cơ sở dữ liệu cùng với các bước tính toán cần thiết Với ý nghĩa đó, một giao tác có thể được nghĩ như là một chương trình nhúng các câu truy vấn truy cập CSDL Định nghĩa khác của giao tác là một
sự thực thi đơn giản một chương trình Một câu truy vấn đơn giản cũng được xem là một chương trình mà thực hiện như một giao tác
1.1.1.1 Đặc điểm của giao tác
Chúng ta nhận thấy rằng các giao tác đều đọc và ghi một số dữ liệu Điều này được dùng làm cơ sở nhận biết một giao tác Các mục dữ liệu được giao tác đọc cấu tạo nên tập đọc RS (read set) của nó Tương tự, các mục dữ liệu được một giao tác ghi được gọi là tập ghi WS(write set) Lưu ý rằng tập đọc và tập ghi của một giao tác không nhất thiết phải tách biệt Cuối cùng hợp của tập đọc và tập ghi của một giao tác tạo ra tập cơ sở BS (base set), nghĩa là BS = RS ∩ WS
1.1.1.2 Các tính chất của giao tác
Tính nguyên tử
Tính nguyên tử là một giao tác được xử lý như một đơn vị thao tác Chính vì thế
mà các hành động của giao tác, hoặc tất cả đều hoàn tất hoặc không một hành động nào hoàn tất
Tính nhất quán
Tính nhất quán (consistency) của một giao tác chỉ đơn giản là tính đúng đắn của
nó Nói cách khác, một giao tác là một chương trình đúng đắn, ánh xạ cơ sở dữ liệu từ trạng thái nhất quán này sang một trạng thái nhất quán khác
Trang 5 Tính cô lập
Cô lập là tính chất của các giao tác, đòi hỏi mỗi giao tác phải luôn nhìn thấy cơ sở
dữ liệu nhất quán Nói cách khác, một giao tác đang thực thi không thể làm lộ ra các kết quả của nó cho những giao tác khác đang cùng hoạt động trước khi nó ủy thác Bảo đảm tính cô lập bằng cách không cho phép các giao tác khác nhìn thấy các kết quả chưa hoàn tất
Ba hiện tượng được đặc tả cho những tình huống có thể xảy ra nếu sự cô lập thíchhợp không được duy trì là: đọc bẩn, đọc không lặp, đọc ảo
ở đó mọi hành động đã ủy thác đều được phản ánh
b) Đọc không lặp (non-repeatable read)
Trang 6Đọc không lặp cũng khá giống với đọc bẩn nhưng có thêm nhiều điều kiện giới hạn khác Đọc không lặp xuất hiện khi một chương trình thực hiện một giao tác đọc một dữ liệu 2 lần Nhưng lần đọc thứ 2 thì kết quả được truy xuất ra bị thay đổi so với kết quả truy xuất ban đầu do đã bị cập nhật bới một chương trình khác trong lúc chạy c) Đọc ảo (Phantom read)
Đọc ảo cũng gần giống với đọc không lặp nhưng đọc ảo xuất hiện khi một chương trình đọc một tập các dữ liệu 2 lần Trong đó số phần tử truy xuất được trong lần thứ nhất khác với số phần tử đọc trong lần thứ 2 vì sau khi chạy lần thứ nhất và trước khi chạy lần thứ 2 thì có một chương trình khác đã thực hiện thêm mới hoặc xóa một sô bản ghi trong tập dữ liệu được truy xuất
1.2 Quản lý giao tác và giải quyết xung đột bằng điều khiển tương tranh
Như phần 1.1 và 1.2 chúng ta tìm hiểu xung quanh khái niệm giao tác và các trường hợp có thể xảy ra xung đột/tương tranh giữa chúng Phần 1.3 sẽ trình bày một cách trừu tượng về thực hiện một vài giao tác xen kẽ, được gọi là lịch trình và một vài vấn đề có thể phát sinh ra do việc thực thi xen lẫn gây ra Từ vấn đề phát sinh do việc thực thi xen
kẽ, chúng ta sẽ tìm hiểu tổng quan về điều khiển tương tranh nhằm giải quyết xung đột Cuối cùng chúng ta sẽ tìm hiểu tổng quan về cách một hệ cơ sở dữ liệu khôi phục sự cố và những bước phải làm trong suốt quá trình hỗ trợ khôi phục sự cố
1.3 Kết luận chương
Trong chương 1 của luận văn, chúng ta đã tìm hiểu một cách tổng quan về các khái niệm và nguyên nhân gây ra tương tranh Qua đó chỉ ra các trường hợp gây ra dị thường xung đột dữ liệu như: đọc bẩn, đọc không thể lặp, đọc ảo Từ các dị thương xung đột này, chúng ta tìm hiểu tổng quan về phương pháp mà DBMS thực hiện điều khiển tương tranh
Trang 7CHƯƠNG 2: MỘT SỐ THUẬT TOÁN ĐIỀU KHIỂN TƯƠNG
TRANH 2.1 Lý thuyết khả tuần tự
Từ các định nghĩa về lịch và lịch đầy đủ Phần này chúng ta đưa ra các ví dụ để làm rõ tính khả tuần tự của lịch Và các vấn đề liên quan đến việc lập lịch
2.2 Các thuật toán điều khiển tương tranh
2.2.1 Phân loại các cơ chế điều khiển tương tranh
Chúng ta sẽ xếp các cơ thể điều khiển đồng thời thành hai nhóm lớn: các phương pháp điều khiển đồng thời lạc quan và các phương pháp điều khiển đồng thời bi quan Các thuật toán bi quan đồng bộ hóa việc thực hiện đồng thời của các giao tác trước khi thực hiện chúng, trong khi đó các thuật toán lạc quan để việc đồng bộ hóa các giao tác cho đến khi chúng kết thúc Sự phân loại này được trình bày trong hình 2.4
Hình 2 1: Phân loại các thuật toán điều khiển tương tranh
Thuật toán điều khiển tương tranh
Trang 82.2.2 Các thuật toán điều khiển tương tranh dựa trên khoá
Ý tưởng chính của việc điều khiển tương tranh bằng khóa là bảo đảm dữ liệu dùng chung cho các thao tác tương tranh chỉ được truy xuất mỗi lần một giao tác Điều này được thực hiện bằng cách liên kết một khóa chốt (lock) với mỗi đơn vị khóa Khóa này được giao tác đặt ra trước khi nó truy xuất và được điều chỉnh lại vào lúc nó hết sử dụng Hiển nhiên là một đơn vị khóa không thể truy xuất được nếu đã bị khóa bởi một giao tác khác Vì vậy yêu cầu khóa của một giao tác chỉ được trao nếu khóa đi kèm hiện không bị một giao tác khác giữ
Phần này nêu ra và phân tích các thuật toán cơ bản liên quan đến khoá Qua các thuật toán đã phân tích, chúng ta có thể đưa ra các biểu đồ thuật toán như sau:
Hình 2 2: Biểu đồ khoá 2 pha (2PL)
Hình 2 3: Biểu đồ khoá 2 pha nghiêm ngặt
Nhận khoá Giải phóng khoá
ĐIỂM KHOÁ
BẮT ĐẦU Thời gian sử dụng KẾT THÚC
mục dữ liệu
Nhận khoá Giải phóng khoá
Trang 92.2.2.1 Thuật toán khoá 2 pha tập trung (Centralized 2PL)
Hình 2 4: Cấu trúc giao tiếp của khoá 2 pha trung tâm
2.2.2.2 Thuật toán khoá 2 pha phân tán (D2PL)
Hình 2 5: Cấu trúc liên lạc của khoá 2 pha phân tán
Bộ xử lý dữ liệu tại
các site tham gia TM điều phối TM site trung tâm
Yêu cầu khoá (1) Cấp khoá (2) Thao tác
(3) Kết thúc thao tác
Kết thúc thao tác
(3)
Giải phóng khoá
(4)
Trang 102.2.3 Thuật toán điều khiển tương tranh dựa trên timestamp
Không giống như các thuật toán dựa trên khoá, các thuật toán điều khiển tương tranh dựa trên timestamp không cố gắng duy trì khả năng khả tuần tự bằng việc loại trừ lẫn nhau Thay vì như vậy, chúng lựa chọn theo một độ ưu tiên một thứ tự khả tuần tự và thực thi các giao tác thích hợp Để thiết lập thứ tự này, bộ quản lý giao tác gán cho mỗi giao tác Ti một timestamp duy nhất ts(T i ) tại mỗi lần nó khởi chạy
2.2.3.1 Thuật toán thứ tự timestamp cơ bản
Thuật toán TO cơ bản thực hiện minh bạch quy tắc TO Bộ quản lý giao tác cộng tác gán timestamp cho mỗi giao tác, xác định các site nào lưu trữ mục dữ liệu nào và gửi một vài thao tác đến các site nào
2.2.3.2 Thuật toán thứ tự timestamp bảo lưu
Thuật toán TO cơ bản không bao giờ gây ra các thao tác chờ mà thay vào đó là tái khởi động chúng Chúng ta cũng chỉ ra rằng nó là ưu điểm cho các deadlock tự phát nhưng nó cũng là nhược điểm bởi vì số lần tái khởi động sẽ giảm hiệu năng thực hiện Thuật toán TO bảo lưu cố gắng làm giảm sự quá tải của hệ thống bằng việc giảm số lần tái khởi động của giao tác
2.2.3.3 Thuật toán thứ tự timestamp đa phiên bản
TO đa phiên bản là việc cố gắng loại bỏ giá trị quá tải tái khởi động của các giao tác Hầu như TO đa phiên bản chỉ liên quan đến các CSDL tập trung, vì vậy chúng ta sẽ đề cập đến nó ít hơn Tuy nhiên, chúng ta nên chỉ ra rằng thuật toán TO đa phiên bản là một
cơ chế điều khiển tương tranh phù hợp cho các hệ quản lý CSDL mà được thiết kế để hỗ trợ các ứng dụng có sử dụng các phiên bản của các đối tượng CSDL
2.3Các thuật toán điều khiển tương tranh lạc quan
Đối với các thuật toán bi quan việc thực thi bất cứ các thao tác nào của một giao tác theo các pha tuần tự sau: xác nhận (V), đọc (R), tính toán (C), ghi (W) (hình 2.13) Nói chung, thứ tự này là đúng đối với giao tác cập nhật cũng như đối với các thao tác của nó
Trang 11Hình 2 6: Các pha thực thi giao tác bi quan
Các thuật toán lạc quan làm trễ pha xác nhận đến trước pha ghi (hình 2.14) Do đó, một thao tác chấp thận một bộ lập lịch lạc quan sẽ không bao giờ bị trễ
Hình 2 7: Các pha thực thi giao tác lạc quan
Một ưu điểm của các thuật toán điều khiển tương tranh lạc quan là khả năng của nó cho phép một cấp độ tương tranh cao hơn Nó chỉ ra là các xung đột giao tác là rất hiếm khi xảy ra, cơ chế lạc quan thực hiện tốt hơn cơ chế khoá Vấn đề chính với các thuật toán lạc quan là yêu cầu khả năng lưu trữ cao hơn Để xác nhận một giao tác, cơ chế lạc quan phải lưu tập thao tác ghi và tập thao tác đọc cả một vài giao tác đã kết thúc khác Đặc biệt, các tập thao tác ghi và thao tác đọc của các giao tác đã kết thúc đã được thực hiện khi giao tác Tij đến site j mà cần được lưu để xác thực Tij Hiển nhiên, điều này tăng chi phí lưu trữ
2.4Quản lý Deadlock
Như được chỉ ra trước đó, bất kỳ thuật toán điều khiển tương tranh dựa trên khoá nào
có thể gây ra deadlock khi có sự loại trừ lẫn nhau trong việc truy cập tài nguyên dùng chung (dữ liệu) và các giao tác phải đợi trên các tài nguyên bị khoá Hơn nữa, như chúng
ta đã tìm hiểu, một vài thuật toán dựa trên thứ tự timestamp cũng yêu cầu các giao tác đợi cũng có thể gây ra deadlock Do đó, các hệ quản trị CSDL phân tán yêu cầu các thủ tục để điều khiển chúng
Có 3 phương thức để điều khiển deadlock là: ngăn ngừa deadlock, phòng tránh deadlock, phát hiện và giải quyết deadlock
Trang 122.4.1 Ngăn ngừa deadlock
Các phương pháp ngăn ngừa deadlock đảm bảo rằng các deadlock không thể xuất hiện tại nơi đầu tiên Do đó, bộ quản lý giao tác kiểm tra một giao tác tại lúc nó bắt đầu khởi tạo và không cho phép nó thực thi nếu nó có thể gây ra deadlock Để thực hiện việc kiểm tra này, nó yêu cầu tất cả các mục dữ liệu mà giao tác có thể được truy cập được khai báo trước Bộ quản lý giao tác sẽ cho phép giao tác thực thi nếu tất cả các mục dữ liệu mà nó truy cập là sẵn có
2.4.2 Phòng tránh deadlock
2.4.3 Phát hiện và giải quyết deadlock
Phát hiện và giải quyết deadlock là phương phức phổ biến và tốt nhất được biết đến Phát hiện được thực hiện bằng việc đưa ra các vòng trong đồ thị đợi toàn cục
Có 3 phương pháp phát hiện các deadlock phân tán: phát hiện tập trung, phát hiện phân tán và phát hiện deadlock kế thừa
2.4.3.1 Phát hiện deadlock tập trung
Phương pháp này đơn giản và là lựa chọn tự nhiên nếu thuật toán điều khiển tương tranh là thuật toán 2 pha tập trung Tuy nhiên vấn đề về điểm yếu và quá tải liên lạc vao cũng cần đề cập đến
2.4.2.2 Phát hiện deadlock kế thừa
Một lựa chọn cho việc phát hiện deadlock tập trung là xây dựng một gia phả của các
bộ phát hiện deadlock (hình 2.18)
Trang 13Hình 2 8: Phát hiện deadlock kế thừa
2.4.2.3 Phát hiện deadlock phân tán
Các thuật toán phát hiện deadlock phân tán uỷ thác trách nhiệm phát hiện các deadlock cho các site thành phần Do đó, giống như phát hiện deadlock kế thừa, có các bộ phát hiện deadlock cục bộ tại mỗi site mà thông tin các đồ thị đợi cục bộ của chúng đến site khác (trong thực tế, chỉ có các vòng deadlock vô tận là được gửi)
1.5 Kết luận chương
Chương 2 của luận án này trình bày chi tiết một số thuật toán điều khiển tương tranh được cài đặt trong các DBMS và trên các site thương mại hiện nay Từ nội dung của chương 2 này, luận án đã chỉ rõ nguyên nhân gây ra deadlock và phương pháp hạn chế và giả quyết các deadlock có thể xảy ra Và từ chi tiết các thuật toán đã trình bày trong chương này, làm cơ sở để thực hiện đánh giá và cài đặt trong chương 3