1. Trang chủ
  2. » Tất cả

Bao cao de tai

29 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 425,5 KB

Nội dung

LỜI MỞ ĐẦU  Sự phát triển nhanh chóng hệ thống Viễn thông – Công Nghệ Thông tin giai đoạn đóng góp nhiều vào trình phát triển xã hội, làm cho sống người ngày tiện nghi, đầy đủ Tuy nhiên với yêu cầu ngày cao công việc sống có số vấn đề mà hệ thống tin học tập trung khơng thể giải Từ đó, hệ tin học phân tán với ưu điểm trở thành phương pháp hiệu để giải vấn đề cấp thiết Tuy nhiên, để giải vấn đề gắn bó liệu cung cấp tài nguyên hệ phân tán vấn đề phức tạp Vấn đề quan trọng chiến lược khai thác sử dụng tài nguyên dùng chung ? Trong phạm vi tiểu luận này, với kiến thức mà học, đọc tự tìm hiểu thêm từ sách báo mạng Internet, tơi xin trình bày ba nội dung theo trình tự sau: Phần I: Điều khiển đồng thời chế then cài Phần II: Bài toán sử dụng quản lý khoá điểm cần cải tiến Phần III: Phần mềm mô tả hoạt động chế then cài ( ngơn ngữ JAVA) Với lĩnh vực cịn mẻ, đa dạng phức tạp việc tìm hiểu tơi cịn nhiều hạn chế Kính mong nhận góp ý, định hướng Thầy giáo Lê Văn Sơn bạn lớp để tơi tiếp tục nghiên cứu đạt kết tốt thời gian tới Xin chân thành cảm ơn ! Tiểu luận môn Hệ tin học phân tán CHƯƠNG I : ĐIỀU KHIỂN ĐỒNG THỜI BẰNG CƠ CHẾ THEN CÀI Tổng quan: Một cách đơn giản, hình dung vấn đề sau để hiểu chế then cài việc Điều khiển đồng thời: Giả sử có phần mềm cần đọc hay ghi tập tin f lưu đĩa C nhiệm vụ phần mềm sau: - Phần mềm ghi chữ “HELLO” - Phần mềm ghi chữ “WORLD” Mục đích cuối ghi chữ “HELLO WORLD” tệp tin f Giả sử chưa có chế điều khiển để phần mềm thực việc truy cập tập tin f kết có tập tin f như: WORLD HELLO ( trật tự bị đảo ngược ) HE WORLD LLO ( thứ tự không theo trật tự) … Và nhiều kết khác Như mục tiêu phần mềm không đáp ứng yêu cầu Do vậy, nói rộng hệ phân tán, để đạt kết đúng, cần sử dụng chế đề điều khiển việc truy cập đồng thời vào tài nguyên định Qua nhiều nghiên cứu, thuật toán điều khiển đồng thời sử dụng rộng rãi then cài Trong ví dụ trên, tiến trình cần đọc hay ghi tập tin trước tiên phải khố (cài then) tập tin Then cài dùng quản lý khoá tập trung, hay với quản lý khoá cục máy để quản lý tập tin cục Trong hai trường hợp, quản lý khoá bao gồm danh sách tập tin bị khoá, từ chối tất cố gắng cài then tập tin mà tập tin thật bị khố tiến trình khác Khoá sinh giải thoát cách tự động hệ thống giao tác, không phụ thuộc vào hành động lập trình viên Cơ chế then cài: − Một giao dịch thực phép then cài đối tượng muốn dành quyền sử dụng đối tượng theo vài kiểu truy cập định Cơ chế then cài gán hay không gán quyền truy cập vào qui tắc tiền định loại trừ tương hỗ, luật đọc – hiệu chỉnh thông tin… − Nếu quyền thừa nhận đối tượng bị cài then giao dịch Nếu khơng, tiến trình thực giao dịch bị khóa đối tượng khơng bị cài then − Cơ chế then cài cho phép giao dịch giải phóng đối tượng mà cài then a Loại trừ tương hỗ: − Một giải pháp đơn giản để đạt trật tự hố gắn bó thể chổ bắt buộc phải sử dụng trật tự hố Để làm việc đó, tồn giao dịch đặt cặp hàm nguyên thuỷ mo_giaodich dong_giaodich Đây đảm bảo cho việc loại trừ tương hỗ giao dịch Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán − Nếu ta biết trước đối tượng xử lý giao dịch đó, ta cài then cơng việc truy cập đến đối tượng Điều cho phép thực song song giao dịch truy cập vào đối tượng rời rạc − Nếu ta muốn nâng cao khả sử dụng song song, cần phải thực cài then mức độ thấp mức giao dịch b Then cài chọn lựa đối tượng: − Các quy tắc truy cập đối tượng ý Đó tính hợp thức việc truy cập Nội dung quy tắc sau: “Một giao dịch thay đổi giá trị đối tượng phải loại trừ tất đối tượng khác muốn truy cập, ngược lại việc truy cập tiến hành theo kiểu tương tranh” − Để đảm bảo điều ln ln thực hiện, người ta cho phép tiến hành cài then đối tượng trước việc sử dụng có hiệu lực − Một giao dịch thực ba hàm nguyên thuỷ đối tượng e: STT Tên hàm v_doc(e) v_viet(e) giai_phong(e) Thuyết minh Sử dụng muốn có quyền đọc e theo kiểu chia Sử dụng muốn có quyền đọc viết vào e theo kiểu loại trừ Giải phóng đối tượng e Giả sử trước cài then giao dịch − Một giao dịch gọi phát triển nếu:  Một phép toán thực đối tượng sau đối tượng cài then giao dịch theo kiểu tương thích với phép tốn  Khơng có giao dịch cài then đối tượng mà trước bị cài then giao dịch đó, ngoại trừ theo kiểu loại trừ trường hợp trước sử dụng kiểu chia  Sau chấm dứt giao dịch, khơng có đối tượng bị cài then − Các then cài sử dụng để hạn chế lớp trật tự hố có khả thực Một trật tự hoá gọi hợp thức nếu:  Đối tượng giao dịch cài then theo kiểu chia không bị then cài theo kiểu loại trừ giao dịch khác  Một đối tượng bị cài then theo kiểu loại trừ khơng bị then cài − Do vậy, cố gắng cài then không phù hợp với điều kiện tương hỗ nêu phải chờ (bị làm chậm lại) mở then − Chú ý: Một giao dịch gọi tốt, sử dụng then cài phù hợp với đặc điểm chúng Một trật tự hoá gọi hợp thức, then cài hoạt động phù hợp với đặc điểm c Giao dịch pha: − Xem xét giao dịch hình thành hợp thức cách kiểm tra hai điều kiện:  Toàn đối tượng bị cài then tình trạng cài then cuối giao dịch Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán  Khơng có then cài diễn then cài khác giao dịch o Điều kiện thể chỗ dãy phép toán then cài phân tích thành hai pha nối tiếp Một pha mà đối tượng bị cài then, cịn pha chúng mở then o Tồn trật tự hoá hợp thức tập hợp giao dịch hình thành tốt hai pha gắn bó, có nghĩa hiệu ứng với trật tự hố o Ngược lại, giao dịch tập hợp khơng phải hình thành tốt hai pha xây dựng trật tự hố hợp thức M khơng gắn bó − Để hiểu rõ hơn, ta xem xét ví dụ sau  Ví dụ 1: Hãy truy cập vào tập hợp đối tượng Giả sử ta muốn đọc giá trị tập hợp đối tượng quy ước giá trị kiểm tra ràng buộc toàn vẹn Lúc này, ta cần phải cài then theo kiểu chia cho đối tượng trước đọc, mở then diễn cuối giao dịch Một phép gọi đọc gắn bó tập hợp đối tượng Như thế, giao dịch thể sau: v_doc(a) v_doc(b) doc(a) doc(b) v_doc(c) doc(c) giai_phong(a) giai_phong(b) giai_phong(c) giao dịch đọc gắn bó tập hợp {a,b,c}  Ví dụ 2: Quản lý tài khoản ngân hàng Mỗi người mở tài khoản ngân hàng lưu trữ ghi cở sở liệu Các trường ghi bao gồm họ tên, địa chỉ, điện thoại khố (mã số) cho người Mã số đóng vai trị trỏ đến sở liệu khác chứa lần thu tiền vào rút tiền từ tài khoản Cuối cùng, phải có sở liệu chứa số dư Số dư số tiền có tài khoản thời điểm xem xét người gửi tiền Trạng thái số dư tài khoản khống chế mức xác định, ví dụ số dư khơng ≤ N cho trước Điều đồng nghĩa với việc đảm bảo tài khoản người sủ dụng giá trị hay giá trị âm Bây nghiên cứu vấn đề quản lý truy cập thông tin tài khoản cho phép đảm bảo tính gắn bó Sau hai kiểu mô tả khác giao dịch T kiểu mơ tả giao dịch U: Giao dịch T1 v_viet(A) Giao dịch T2 v_viet(A) Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Giao dịch U v_viet(A) Tiểu luận môn Hệ tin học phân tán A:= A - P1 giai_phong(A) v_viet(B) B:= B + P1 giai_phong(B) A:= A – P2 v_viet(B) giai_phong(A) B:= B + P2 giai_phong(B) A:= (1+t)*A v_viet(B) B:= (1+t)*B giai_phong(B) giai_phong(A) Ta kiểm tra tất giao dịch hình thành tốt T2 U hai pha T1 khơng có hai pha Sau hai trật tự hoá hợp thức S S2 xuất phát từ việc thực song song T1 U T2 U2 S1(T1,U) T11: v_viet(A) T12: A:= A – P1 T13: giai_phong(A) U1: v_viet(A) U2: A:= (1+t)*A U3: v_viet(B) U4: B:= (1+t)*B U5: giai_phong(B) T14: v_viet(B) T15: B:= B + P1 U6: giai_phong(A) T16: giai_phong(B) S2(T2,U) T21: v_viet(A) T22: A:= A – P2 T23: v_viet(B) T24: giai_phong(A) U1: v_viet(A) U2: A:= (1+t)*A T25: B:= B + P2 T26: giai_phong(B) U3: v_viet(B) U4: B:= (1+t)*B U5: giai_phong(B) U6: giai_phong(A) Như vậy, ta kiểm tra S1 dẫn đến trạng thái khơng gắn bó, U thực giá trị khơng gắn bó B S2 tương đương với trật tự hoá S2(T2,U) Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán CHƯƠNG II: SỬ DỤNG BỘ QUẢN LÝ KHÓA CƠ BẢN VÀ NHỮNG ĐIỂM CẦN CẢI TIẾN Như nói phần trên, điều khiển đồng thời giải tính chất biệt lập quán giao dịch Cơ chế điều khiển đồng thời phân tán hệ quản trị sở liệu phân tán bảo đảm tính quán sở liệu trì mơi trường phân tán nhiều người dùng Nếu giao dịch quán nội (nghĩa không vi phạm ràng buộc qn nào), để đạt mục tiêu này, cách đơn giản thực giao dịch Rõ ràng chọn lựa đáng ý mặt lý thuyết không cài đặt hệ thống thực làm giảm thiểu lưu lượng hệ thống Mức độ đồng thời có lẽ tham số quan trọng hệ phân tán Do vậy, chế điều khiển đồng thời cố gắng tìm phương án thích hợp, vừa trì tính qn sở liệu, vừa trì mức độ đồng thời cao Xử lý giao tác (Transaction Processing): − Giao tác chuỗi lệnh thực đối tượng liệu (các dòng - tuples, cột- fields) hệ sở liệu (CSDL) Các lệnh giao tác bao gồm:  Các lệnh thực hiện: o Read(): Đọc liệu từ CSDL trả giá trị phần tử lưu CSDL o Write(): Lưu giá trị phần tử vào CSDL  Các lệnh giao tác: o Start(): Bắt đầu thực giao tác o Commit(): Kết thúc thành công giao tác o Abort(): Hủy bỏ giao tác Các phận quản lý thực giao dịch Hệ quản trị CSDL: Hình 1: Các phận quản lý thực giao tác Trong đó: Transactions: Các giao tác; Transaction manager (TM): Bộ quản lý giao tác thực thao tác CSDL thay cho ứng dụng; Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán Scheduler (SC): Bộ lập lịch có nhiệm vụ thực thuật tốn kiểm sốt đồng hành nhằm đồng thao tác truy cập vào CSDL Data Manager (DM): Bộ quản lý liệu BEGIN_TRANSACTION, END_TRANSACTION: bắt đầu kết thúc giao tác Timestamp: Dấu thời gian LOCK/Release: Khóa/Giải phóng a Mỗi giao tác liên kết tất tác vụ đọc/ghi với quản lý giao tác (TM) b TM liên kết giao tác đọc ghi với SC c Bộ SC điều khiển chuỗi giao tác, theo DM xử lý lệnh dọc/ghi trì điều khiển đồng thời Khi SC nhận thao tác từ TM, có ba cách chọn lựa: • Ngay lập lịch cho thao tác (bằng cách gửi đến DM); • Trì hỗn thao tác (bằng cách chèn vào hàng đợi đấy); • Từ chối thao tác Bộ DM thực lệnh đọc/ghi nhận Đối với tác vụ đọc, DM duyệt CSDL cục trả giá trị yêu cầu Đối với tác vụ ghi, DM sửa đổi CSDL cục và trả ghi nhận chấp thuận thao tác cho SC Đến lượt, SC trả cho TM TM trả cho giao tác Các phận quản lý thực giao dịch phân tán hệ quản trị CSDL phân tán Hình 2: Các phận quản lý thực giao dịch phân tán Khóa chốt bản: − Việc điều khiển đồng thời khoá chốt chế thường dùng để giải vấn đề liên quan đến việc đồng hoá liệu truy cập dùng chung, đảm bảo liệu dùng chung cho thao tác tương tranh truy xuất lần giao dịch Mỗi phần tử liệu có khố chốt kết hợp với chúng Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán − Điều thực cách liên kết khoá chốt với đơn vị khoá Khoá giao dịch đặt trước truy xuất điều chỉnh lại vào lúc hết sử dụng Hiển nhiên đơn vị khố khơng thể truy xuất bị khố giao dịch khác Vì vậy, yêu cầu khoá giao dịch trao khố kèm khơng bị giao dịch khác giữ − Bộ xếp lịch đảm bảo giao tác giữ khố chốt thời điểm, có giao tác truy xuất liệu thời điểm − Khoá chốt xếp lịch (Schedule manager) dùng để đảm bảo tính khả − Trước giao tác truy cập liệu dùng chung, xếp lịch khảo sát trạng thái khoá chốt liệu  Nếu khơng có giao tác khác giữ chúng xếp lịch phát lệnh thơng báo khố liệu lại sau giao tác thực lệnh liệu  Nếu liệu bị khoá giao tác T2, giao tác phải chờ T2 giải phóng khố − Bởi quan tâm đến việc đồng hóa thao tác tương tranh giao dịch tương tranh nên có hai loại khóa chốt kèm với đơn vị khóa: Khóa đọc (Read Lock - RL), Khóa Ghi (Write Lock - WL)  RLi(x): khoá đọc phần tử liệu x giao tác Ti  WLj(x): khoá ghi phần tử liệu x giao tác Tj Hai khoá pli(x) qlj(y) đụng độ x=y, i≠j, có nghĩa chúng khố phần tử liệu, chúng phát sinh từ hai giao tác khác hai thao tác ghi − Một giao dịch Ti muốn đọc mục liệu chứa đơn vị khóa x nhận khóa đọc x (ký hiệu rl i(x) tương tự với thao tác ghi − Tính tương thích thực thể khóa mơ tả bảng sau: RLi(x) WLi(x) RLi(x) Tương thích Khơng tương thích WLi(x) Khơng tương thích Khơng tương thích − Những quy tắc quản lý sử dụng khoá:  Qui tắc 1: Khi nhận thao tác pi[x] từ quản lý giao tác (Transaction Manager, TM), xếp lịch kiểm tra pli[x] đụng độ với vài qlj[x] đặt trước o Nếu đúng, trì hỗn pi[x] buộc Ti chờ đặt khố cần thiết o Nếu khơng đụng độ, xếp lịch (scheduler) đặt pli[x] gởi pi[x] đến quản lý liệu (Data Manager, DM) Quy tắc nhằm hạn chế hai giao tác truy xuất đồng thời phần tử liệu tình trạng đụng độ  Qui tắc 2: Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán Mỗi xếp lịch đặt khoá cho Ti, pli[x], khơng thể giải phóng khố DM trả lời xử lý thao tác tương ứng khoá, pi[x]  Qui tắc 3: Mỗi xếp lịch giải phóng khố cho giao tác, khơng thể lấy tiếp khố cho giao tác * Quy tắc (3) gọi quy tắc hai giai đoạn, nguồn gốc khoá chốt hai giai đoạn Các phương pháp kiểm soát đồng thời a Thực thi − Một lúc cho phép thực thi giao tác giao tác kết thúc giao tác thực − Thực thi phương pháp đơn giản xác giao tác hoạt động cách riêng biệt khoảng thời gian định − Ví dụ: cho ba giao tác với tập lệnh thực sau: T1: Read(x) T2: Write(x) T3: Read(x) Write(x) Write(y) Read(y) Commit Read(z) Read(z) Commit Commit ta có lịch biểu: H1={W2(x),R1(x),R3(x),W1(x),C1,W2(y),R3(y),R2(z),C2,R3(z),C3} b Thực thi khả − Một thực thi gọi khả có kết xuất tác động lên CSDL thực thi giao tác Vì thực thi thực thi thực thi khả có tác động thực thi nên thực thi khả khả phải − Các thực thi mát thông tin cập nhật phục hồi tranh chấp điển hình thực thi bất khả Ví dụ ta thực hai giao dịch gửi tiền (Deposit) nhận khết khác thực xen kẽ, nghĩa có mát thơng tin Vì thực thi xen kẽ bất khả Tương tự vậy, việc thực thi xem kẽ hai giao tác Chuyển tiền (Transfer) PrintSum sau : //Thủ tục tin tổng số dư hai tài khoản Procedure PrintSum begin Start; input(account1, account2); templ : = Read( Accounts[ accountl]); output(temp1); temp2 : = Read(Accounts[account2]); output(temp2); templ := templ + temp2; output(temp1); Commit end có kết khác giao tác thực thi chúng bất khả Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán − Mặc dù hai thực thi xem kẽ bất khả lại có nhiều thực thi khác khả Ví dụ, cho hai giao tác Transfer PrintSum thực xen kẽ sau: Read,(Accounts[7]) returns the value $200 Write,(Accounts[7], $100) Read,(Accounts[7]) returns the value $100 Read,( Accounts[ 861) returns the value $200 Write,(Accounts[86], $300) Commit, Read,(Accounts[86]) returns the value 5300 Commit, Thực thi có tác động tương tự thực Transfer theo sau PrintSum − Mặc dù thứ tự thực thao tác thực thi khác so với thực thi xen kẽ, kết thao tác lại xác thực thi xen kẽ Vì thực thi xen kẽ gọi khả − Tính khả định nghĩa tính xác cho điều khiển đồng hành DBS * Lịch biểu khả tuần tự: − Lịch biểu giao dịch chuỗi lệnh thực hệ thống theo thứ tự thời gian Một lịch biểu tập giao dịch phải bao gồm tất lệnh tất giao dịch này, phải bảo toàn thứ tự mà lệnh xuất giao dịch cá thể theo thứ tự Lịch biểu tạo mối liên hệ ràng buộc giao dịch với − Một lịch biểu S gọi khả tương đương tương tranh với lịch biểu Tính khả định nghĩa gọi khả theo tương tranh định nghĩa theo tương đương tương tranh Từ đó, chức phận điều khiển đồng thời tạo lịch biểu khả để thực giao tác chờ Ví dụ lịch biểu khả tuần tự: Có giao dịch T1, T2, T3 T1 T2 T3 BEGIN_TRANSACTION BEGIN_TRANSACTION BEGIN_TRANSACTION x = 0; x = 0; x = 0; x = x + 1; x = x + 2; x = x + 3; END_TRANSACTION END_TRANSACTION END_TRANSACTION Lịch biểu cho giao dịch trên: Schedule x = 0; x = x + 1; x = 0; x = x + 2; x = 0; x = x + Schedule x = 0; x = 0; x = x + 1; x = x + 2; x = 0; x = x + 3; Schedule x = 0; x = 0; x = x + 1; x = 0; x = x + 2; x = x + 3; Hợp lệ Hợp lệ Bất hợp lệ Sử dụng quản lý khóa bản: − Trong hệ thống dùng khố, xếp lịch (scheduler) quản lý khoá (lock manager, LM) Bộ quản lý giao dịch chuyển cho quản lý khoá Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận mơn Hệ tin học phân tán − Điểm khố (lock point) thời điểm giao dịch nhận tất khố chưa bắt đầu giải phóng khóa Vì điểm khóa xác định cuối giai đoạn tăng trưởng đầu giai đoạn thu hồi giao tác − 2PL thiết kế cho hệ thống CSDL tập trung: giao tác nhận khóa chốt pha tăng trưởng theo thứ tự Trong hệ phân tán, việc xác định điểm khóa khó khăn ta khơng thể biết thời điểm pha tăng trưởng kết thúc → Trong 2PL, SC gán tất khóa pha tăng trưởng(Growing Phase) giải phóng khóa pha thu hồi (Shrinking Phase) → Các quy tắc quản lý sử dụng khóa: Quy ước: oper(T,x) thao tác mục liệu x giao tácT * Quy tắc 1: nhận thao tác oper(T,x) từ TM, SC tiến hành kiểm tra đụng độ với thao tác khác mục liệu x mà cấp khóa trước - Nếu đúng, trì hỗn oper(T,x) buộc giao tác T chờ đặt khóa cần thiết - Nếu khơng, SC cấp khóa cho x chuyển thao tác cho DM Quy tắc nhằm hạn chế hai giao tác truy xuất đồng thời mục liệu tình trạng đụng độ Sự đụng độ khóa biểu diễn ma trận sau: * Quy tắc 2: Bộ SC khơng giải phóng khóa cho x DM báo thực thao tác tương ứng x * Quy tắc 3: Mỗi SC giải phóng khóa cho giao tác T, khơng thể cấp tiếp khóa khác cho T Vì giao tác T khơng giải phóng khóa chưa biết có cần thêm khóa khác khơng Đây quy tắc giai đoạn (2PL: Growing Phase / Shrinking Phase) nguồn gốc 2PL * Ngoài ra, 2PL cịn có số ý sau: ♦ Mỗi giao tác phải đoạt khóa chốt S trước đọc khóa chốt X trước ghi ♦ Nếu có khóa X cấp cho mục liệu x khơng có khóa khác (X S) gán cho x thời điểm ♦ Nếu có khóa S cấp cho mục liệu x khơng có khóa loại X gán cho x thời điểm ♦ Một giao tác khơng u cầu loại khóa đến lần thứ hai ♦ Một giao tác không cần thiết yêu cầu phải cấp khóa S mục liệu giữ khóa X ♦ Một giao tác T chứa khóa mục liệu Nếu T có khóa S yêu cầu khóa X khóa S cập nhật thành khóa X Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán ♦ Các khóa quản lý bảng khóa – Lock Table Bảng khố: bảng khố có đầu vào cho đối tượng bị khố có cấu trúc sau: ♦ Con trỏ trỏ đến hàng đợi khoá chốt gán (hay đơn giản số lượng giao tác giữ khoá) ♦ Kiểu khoá chốt (dành riêng hay chia xẻ) ♦ Con trỏ trỏ đến hàng đợi yêu cầu cấp khoá (các giao tác yêu cầu khoá ) − Trong bảng khoá, yêu cầu (đối với mục liệu) thêm vào cuối hàng đợi yêu cầu gán khố phù hợp với tất khố trước giao tác bị bỏ qua, yêu cầu gán đợi giao tác bị xố − Để đạt hiệu tốt cho thuật toán nên dùng danh sách chứa khoá nắm giữ giao tác − Thuật toán chung dựa khóa: Khi cần truy cập vào mục liệu, cần đến khóa cần dùng đến khóa giải phóng Ví dụ, có hai giao tác T1 T2 , T1 ghi vào mục liệu x trước T2 T2 lại ghi vào mục liệu y trước T1 Như khơng có đảm bảo tính Vì lẽ cần phải cân nhắc việc giữ khoá để khơng có vấn đề xảy Đây ý tưởng thuật tốn khóa hai pha − Trong 2PL, pha tăng trưởng, giao tác u cầu khóa cho mà khơng có giải phóng khóa Các khóa khơng giải phóng tất khóa gán hết Sau tất khóa gán, giao tác phép chuyển sang pha thu hồi Tại đây, khóa phép giải phóng vào thời điểm cần thiết − Tuy nhiên việc cài đặt Khóa 2PL gặp nhiều khó khăn quản lý khoá phải biết giao dịch nhận đủ tất khố khơng cịn cần khoá mục Bộ quản lý khoá phải biết giao dịch khơng cịn cần truy xuất mục liệu nữa, khố giải phóng Cuối cùng, giao dịch bị huỷ bỏ sau giải phóng khố, làm huỷ bỏ giao dịch truy xuất mục mở khoá Hiện tượng gọi huỷ bỏ dây chuyền (cascading abort) Vì khó khăn đó, phần lớn xếp lịch 2PL cài đặt dạng khắc khe có tên khoá chốt hai pha nghiêm ngặt (strict two-phase locking), giải phóng tồn khố vào lúc giao dịch kết thúc (uỷ thác bị huỷ bỏ) b Khoá hai pha nghiêm ngặt (Strict 2PL – S2PL) − 2PL phiên mở rộng nghi thức S2PL Ngoài quy tắc giao tác cần phải yêu cầu cấp khoá đọc/ghi trước truy cập vào mục liệu dùng chung quy tắc khác quy định lại sau: → Tất khoá giao tác giữ lại kết thúc thao tác Biểu đồ khóa loại trình bày sau: Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán Hình 4: Biểu đồ khố hai pha nghiêm ngặt − Tương tự 2PL, S2PL thực thi giao tác hai pha: Pha tăng trưởng và pha lại là pha mà giao tác sử dụng mục liệu bị khoá + Giai đoạn tăng trưởng: giống với giai đoạn đầu kỹ thuật khóa pha + Giai đoạn thu hồi khóa: o Tất khóa giải phóng lúc sau giao tác T kết thúc bị hủy bỏ o Khơng có thao tác đọc/ghi thực khóa giải phóng giao tác Nếu giao tác bị hủy bỏ việc phục hồi lại thay đổi liệu thực trước khóa giải phóng − Bộ quản lý khoá 2PL nghiêm ngặt sửa lại Thuật tốn Thực cần sửa đổi phần xử lý hồi đáp từ xử lý liệu nhằm đảm bảo khố giải phóng thao tác uỷ thác huỷ bỏ Tồn thuật tốn 2PL nghiêm ngặt trình bày Thuật tốn 2, thuật tốn quản lý giao dịch để xếp lịch theo 2PL trình bày Thuật tốn Thuật tốn Thuật toán quản lý khoá phương pháp khoá chốt hai pha nghiêm ngặt (S2PL-LM) declare-var msg : Message dop : Dbop Op : Operaeion x : Dataltem T : TransactionId pm : Dpmsg res : Dataval SOP : Opset begin repeat Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán WAIT(msg) case of msg Dbop: begin Op ← dop.opn x ← dop.da ta T ← dop.tid case of Op Begin-transaction: begin gởi dop đến xử lý liệu end Read or Write {cần khố chốt} begin tìm đơn vị khố lu cho x ⊆ lu if lu chưa bị khố or thể thức khố lu tương thích với Op then begin đặt khố lu thể thức thích hợp gởi dop đến xử lý liệu end else đặt dop vào hàng đợi cho lu end-if end Abort or Commit: begin gởi dop đến xử lý liệu end end-case Dpmsg: Begin Op ← pm.opn res ← pm.result T ← pm.tid If Op = Abort or Op = Commit then begin for đơn vị khố lu bị khố T begin giải phóng khố lu T giữ if khơng cịn khố lu and có thao tác đợi khoá lu hàng đợi then begin SOP ← thao tác hàng đợi Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán SOP ← SOP ∪ { thao tác hàng đợi khố lu thể thức khố tương thích với thao tác hiên hành SOP } đặt khoá lu cho thao tác SOP for tất thao tác SOP gởi thao tác đến xử lý liệu end-for end-if end-for end-if end end-case until forever end {S2PL- LM} Thuật toán Bộ quản lý giao dịch 2PL (2PL-TM) declare-var msg : Message dop : Dbop Op : Operaeion x : Dataltem T : TransactionId O : Dbop res : Dataval SOP : Opset begin repeat WAIT(msg) case of msg Dbop: begin gởi O đến LM end Scmsg: begin Op ← sm.opn res ← sm.result T ← sm.tid Case of Op Read: begin trả res cho ứng dụng người sử dụng (nghĩa giao dịch) end Write: begin Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán thông tin cho ứng dụng việc hoàn tất hành động ghi trả res cho ứng dụng end Commit: begin huỷ vùng làm việc T thông tin cho ứng dụng biết việc hồn tất thành cơng giao dịch T end Abort: begin thơng tin cho ứng dụng biết việc hồn tất huỷ bỏ giao dịch T end end-case end end-case until forever end {2PL-LM} − Chúng ta cần ý thuật tốn 2PL cưỡng chế tính khả tương tranh, khơng cho phép tất lịch biểu có tính khả tương tranh − Trong lý thuyết khả tuần tự, thứ tự hoá thao tác tương tranh quan trọng việc phát tương tranh điều tận dụng định nghĩa thể thức khố Hệ ngồi khố đọc (dùng chung, shared) khố ghi (độc quyền, exclusive), định nghĩa thể thức khoá thứ ba: dùng chung có thứ tự (ordered shared) Khố dùng chung có thứ tự đối tượng x giao dịch Ti Tj mang ý nghĩa sau: cho lịch biểu S có khố dùng chung có thứ tự thao tác o Ti p Tj, Ti thu đựoc khoá o trước Tj thu đựoc khố p o thực thi trước p − Nghi thức khoá cưỡng chế ma trận tương thích có chứa thể thức khố dùng chung có thứ tự hồn tồn giống với 2PL, ngoại trừ giao dịch khơng giải phóng khố khố chúng cịn giữ Bằng không xảy thứ tự hoá luẩn quẩn c Vấn đề bế tắc (deadlock): − Vấn đề bế tắc xảy kỹ thuật dùng chế khóa chốt − Giả sử có giao tác T1 T2 thực lệnh đọc ghi mục liệu x y sau: T1: lock (x); lock(y); read (x); write (y); T2: lock (y); lock(x); read (y); write (x); T1 chiếm giữ khóa x cố gắng khóa y, T2 chiếm giữ khóa y cố gắng khóa x Hiện tượng bế tắc xảy * Để khắc phục tình trạng này: + Thiết lập thời gian Timeout, thời gian thực giao tác vượt thời gian Timeout hủy bỏ giao tác thực thuật tốn kiểm tra bế tắc + Sắp xếp mục liệu truy xuất chúng theo thứ tự định + Giảm bớt việc đồng hành giao tác Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán PHẦN III : PHỤ LỤC PHẦN MỀM KIỂM TRA HOẠT ĐỘNG BĂNG CƠ CHẾ THEN CÀI Ý tưởng thực hiện: Chúng ta xây dựng phần mềm ngôn ngữ JAVA tác động vào Cơ sở liệu (CSDL) MySQL Trong CSDL, xây dựng 03 bảng SERVER1, SERVER2 SERVER3 Đồng thời tạo 03 user: user1 quyền tác động Table SERVER1, user2 quyền tác động Table SERVER2… Chúng ta giả lập user1 thay đổi giá trị Server1 user khác không tác động liệu CSDL bị lock Giao diện phần mềm: Viết chương trình: 2.1 Tạo class mysql1 để kết nối với CSDL MySQL thực lệnh truy vấn CSDL: Package hephantan; import com.mysql.jdbc.ResultSetMetaData; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; public class mysql1 { private Connection connect = null; Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán private Statement statement = null; private PreparedStatement preparedStatement = null; private ResultSet resultSet = null; public void do_connect() throws Exception { try { // This will load the MySQL driver, each DB has its own driver Class.forName("com.mysql.jdbc.Driver").newInstance(); connect = DriverManager.getConnection("jdbc:mysql://172.20.212.7/ipeng?" + "user=root&password=abc333"); // connect = DriverManager.getConnection("jdbc:mysql://localhost/ipeng?" // + "user=root&password=root"); if (connect !=null) System.out.println("Connect cong!"); } catch (Exception e) { throw e; } } public ResultSet do_select(String s) throws Exception { try { // Statements allow to issue SQL queries to the database statement = connect.createStatement(); // Result set get the result of the SQL query resultSet = statement.executeQuery(s); } catch (Exception e) { throw e; } return resultSet; } public void do_update() throws Exception { try { preparedStatement = connect prepareStatement("insert into FEEDBACK.COMMENTS values (default, ?, ?, ?, ? , ?, ?)"); preparedStatement.setString(1, "Test"); preparedStatement.setString(2, "TestEmail"); preparedStatement.setString(3, "TestWebpage"); preparedStatement.setDate(4, new java.sql.Date(2009, 12, 11)); preparedStatement.setString(5, "TestSummary"); preparedStatement.setString(6, "TestComment"); preparedStatement.executeUpdate(); // Remove again the insert comment preparedStatement = connect prepareStatement("delete from FEEDBACK.COMMENTS where myuser= ? ; "); preparedStatement.setString(1, "Test"); preparedStatement.executeUpdate(); } catch (Exception e) { throw e; Học viên: Huỳnh Văn Anh – Lớp KHMT – K25 Tiểu luận môn Hệ tin học phân tán } finally { close(); } } private void writeMetaData(ResultSet resultSet) throws SQLException { System.out.println("The columns in the table are: "); System.out.println("Table: " + resultSet.getMetaData().getTableName(1)); for (int i = 1; i

Ngày đăng: 28/08/2016, 09:34

TỪ KHÓA LIÊN QUAN

w