DANH MỤC CÁC CỤM TỪ VIẾT TẮT, NGHĨA TIẾNG VIỆT TT Từ viết tắt 1 CM Centralized Merging Trộn tập trung 3 DBM Database management Quản trị cơ sở dữ liệu 4 DC Data Communication Truyền thôn
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN VĂN CƯỜNG
CÁC THUẬT TOÁN TÔ MÀU TỐI ƯU CHO MỘT CÂY TRUY VẤN VÀ ỨNG DỤNG
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60.48.01.04
LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS LÊ HUY THẬP
Hà Nội – 2015
Trang 3LỜI CẢM ƠN
Trước hết, Tôi xin bày tỏ lòng biết ơn sâu sắc PGS.TS Lê Huy Thập, Thầy đã định hướng đề tài, hướng dẫn thực hiện, cung cấp cho tôi những kiến thức, kinh nghiệm vô cùng quý báu giúp tôi hoàn thành luận văn này
Tôi xin gửi lời cảm ơn chân thành tới Ban Giám hiệu, Phòng Đào tạo sau đại học và các Phòng Ban của trường Đại học Công nghệ - Đại học Quốc gia Hà Nội, cùng các Thầy, Cô giáo trong Khoa Công nghệ thông tin - trường Đại học Công nghệ, đã truyền dạy, cung cấp cho tôi những kiễn thức cơ bản và chuyên sâu về công nghệ thông tin, giúp định hướng phương pháp nghiên cứu khoa học, đồng thời tạo điều kiện tốt nhất trong suốt quá trình học tập và thực hiện luận văn tốt nghiệp
Tôi xin gửi lời cảm ơn đến người thân, bạn bè, đồng nghiệp những người luôn sát cánh, động viên, khuyến khích tôi trong học tập cũng như thực hiện luận văn này
Học viên
Nguyễn Văn Cường
Trang 4
LỜI CAM ĐOAN
Tôi xin cam đoan nội dung trình bày trong luận văn này là do tôi tự nghiên cứu, tìm hiểu và được sự hướng dẫn trực tiếp của PGS.TS Lê Huy Thập Các nội dung trình bày và kết quả nghiên cứu hoàn toàn trung thực
Luận văn của tôi chưa từng được ai công bố trong bất cứ công trình nào Trong quá trình thực hiện luận văn, tôi đã tham khảo tài liệu của các tác giả được tôi trích dẫn, tham chiếu rõ ràng trong “DANH MỤC TÀI LIỆU THAM KHẢO” ở cuối luận văn
Học viên
Nguyễn Văn Cường
Trang 5
MỤC LỤC
LỜI CẢM ƠN 3
LỜI CAM ĐOAN 4
MỤC LỤC 5
DANH MỤC CÁC CỤM TỪ VIẾT TẮT, NGHĨA TIẾNG VIỆT 7
DANH MỤC SƠ ĐỒ, HÌNH VẼ, BẢNG 8
MỞ ĐẦU 10
Chương 1 : TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN, GIAO TÁC PHÂN TÁN VÀ XỬ LÝ SONG SONG 11
1.1 Giới thiệu cơ sở dữ liệu phân tán 11
1.1.1 Khái niệm 11
1.1.2 Quản trị cơ sở dữ liệu phân tán 12
1.1.3 Kiến trúc của cơ sở dữ liệu phân tán 13
1.1.4 Đặc trưng của cơ sở dữ liệu phân tán 15
1.1.5 Các cơ chế truy xuất CSDL phân tán 16
1.2 Giao tác phân tán 17
1.2.1 Quản lý khóa trong giao tác 17
1.2.2 Xử lý giao tác khi xảy ra sự cố 18
1.3 Xử lý song song 19
1.3.1 Một số thuật toán xử lý dữ liệu song song 19
1.3.2 Các phương pháp xử lý song song 21
1.3.3 Các phép toán song song 25
1.4 Kết chương 32
Chương 2 : TỐI ƯU HÓA TRUY VẤN VÀ CÁC THUẬT TOÁN TÔ MÀU TỐI ƯU CÂY TRUY VẤN 33
2.1 Tối ưu hóa truy vấn 33
2.1.1 Tổng quan 33
Trang 62.1.2 Mô hình tối ưu hoá truy vấn hai pha JOQR 34
2.1.3 Chi phí song song và mô hình chi phí trên bộ tối ưu hoá truy vấn 37
2.1.4 Cực tiểu hoá chi phí phân mảnh lại 39
2.2 Các thuật toán tô màu tối ưu cây truy vấn 40
2.2.1 Thuật toán tách màu 43
2.2.2 Mở rộng thuật toán tách màu, cách sử dụng tập màu 45
2.3 Tô màu tối ưu cây truy vấn với tính chất vật lý 47
2.3.1 Chi phí của cây truy vấn tiền xử lý 50
2.3.2 Thuật toán tách màu mở rộng 51
2.4 Kết chương 53
Chương 3 : ỨNG DỤNG THUẬT TOÁN TÔ MÀU TỐI ƯU CÂY TRUY VẤN VÀO BÀI TOÁN QUẢN LÝ PHẠM NHÂN 54
3.1 Công tác quản lý phạm nhân 54
3.2 Cơ sở dữ liệu Phần mềm quản lý phạm nhân 54
3.3 Ứng dụng thuật toán tô màu tối ưu cho một số truy vấn vào bài toán quản lý phạm nhân 55
3.3.1 Ví dụ 1 56
3.3.2 Ví dụ 2 57
3.3.3 Ví dụ 3 58
3.3.4 Hình ảnh Demo 61
3.4 Kết chương 62
KẾT LUẬN 64
DANH MỤC TÀI LIỆU THAM KHẢO 65
Trang 7DANH MỤC CÁC CỤM TỪ VIẾT TẮT, NGHĨA TIẾNG VIỆT
TT Từ viết
tắt
1 CM Centralized Merging Trộn tập trung
3 DBM Database management Quản trị cơ sở dữ liệu
4 DC Data Communication Truyền thông dữ liệu
6 DDB Distributed Database Cơ sở dữ liệu phân tán
7 DM Distributed Merging Trộn tập trung
9 JOQR Join Ordering and Query
Rewriting
Sắp xếp thứ tự các phép nối và viết lại câu truy vấn
10 MPP Massively Parallel
Processor Bộ xƣ̉ lý Song song lớn
11 PAJ Paralel Associative Join Nối kết hợp song song
12 PHJ Parallel Hash Join Nối băm song song
13 PNL Parallel Nested Loop Vòng lặp lồng song song
14 PVM Parallel Virtual Machine Máy tính ảo song song
15 QEP Query Excution Plan kế hoạch thực hiện truy vấn
Trang 8DANH MỤC SƠ ĐỒ, HÌNH VẼ, BẢNG
Hình 1.1: Tổng quan CSDL phân tán 11
Hình 1.2: Mô hình CSDL phân tán trên mạng 12
Hình 1.3: Hệ thống đa xử lý 12
Hình 1.4: Các thành phần của một DDBMS 13
Hình 1.5: Kiến trúc cơ bản của CSDL phân tán 14
Hình 1.6: Các đoạn và hình ảnh vật lý của một quan hệ tổng thể 14
Hình 1.7: Cơ chế truy xuất từ xa 16
Hình 1.8: Cơ chế truy xuất thông qua chương trình phụ trợ 17
Hình 1.9: Thuật toán vòng lặp lồng song song song 20
Hình 1.10: Thuật toán nối kết hợp song song 20
Hình 1.11: Thuật toán nối băm song song 21
Hình 1.12: Quan hệ PROJ 23
Hình 1.13: Các mảnh dọc của quan hệ PROJ 23
Hình 1.14: Quan hệ ASG 26
Hình 1.15: Kết quả trộn tập trung 27
Hình 1.16: Số phạm nhân phạm các tội giam giữ tại các trại giam 28
Hình 1.17: Gộp nhóm theo phương pháp trộn phân tán 28
Hình 1.18: Gộp nhóm theo thuật toán ReF 29
Hình 1.19: Quan hệ EMP và PAY 30
Hình 1.20: Kết quả nối bằng 30
Hình 1.21: Kết quả nối nửa 31
Hình 2.1: Quá trình tối ưu hoá truy vấn 33
Hình 2.2: Cây truy vấn tiền xử lý 34
Hình 2.3: Cây toán tử tương đương cây hình 2.5 36
Trang 9Hình 2.4: Các cây truy vấn khác nhau về phân hoạch dữ liệu 40
Hình 2.5: Chi phí các phương án tô màu (i) Cây ban đầu, (ii) Chi phí 7, (iii) chi phí 6 42
Hình 2.6: Phân rã bài toán sau khi tô màu nút i 43
Hình 2.7: Cây truy vấn với thuộc tính phân mảnh khác nhau 46
Hình 2.8: Điều kiện nối là thuộc tính: TP 49
Hình 3.1: Cơ sở dữ liệu quản lý phạm nhân 55
Hình 3.2: Cây truy vấn ban đầu 56
Hình 3.3: Cây truy vấn sau khi sắp xếp lại thứ tự phép nối 56
Hình 3.4: Phân mảnh quan hệ tại hai nút 57
Hình 3.5: Cây truy vấn ban đầu và các phương án tô màu 58
Hình 3.6: Phân bố dữ liệu và cây truy vấn tối ưu 59
Hình 3.7: Cây truy vấn khác nhau về phân hoạch dữ liệu 59
Hình 3.8: Cây truy vấn sau khi tách nút TP_GD 60
Hình 3.9: Cây truy vấn tối ưu với chi phí 6 60
Hình 3.10: Kết quả truy vấn sau khi sắp xếp lại thứ tự phép nối 61
Hình 3.11: Kết quả chọn các màu để tô và chi phí phân mảnh lại 62
Hình 3.12: Tính toán giá trị Optc theo bổ đề 2.1 62
Hình 3.13: Một số Modul khác của phần Demo 62
Trang 10MỞ ĐẦU
Xử lý song song phân tán và lập trình song song đã và đang được các công
ty phần mềm trong nước và thế giới nghiên cứu ứng dụng bởi tính hiệu quả vô cùng lớn của nó Khả năng xử lý và lập trình song song ứng dụng giải quyết được các vấn đề lớn và phức tạp như dự báo động đất, sóng thần, thời tiết, xử lý ảnh, khai phá dữ liệu,… giúp giảm đáng kể chi phí, đồng thời khắc phục những hạn chế khi dùng các phương pháp tuần tự Ngoài ra, sử dụng các thuật toán xử
lý song song phân tán để đưa ra phương án tốt nhất xử lý, truyền và lưu thông tin tại các vị trí trên mạng
Trong đề tài này, tác giả tập trung nghiên cứu các thuật toán nhằm tối ưu hóa chi phí truy vấn cơ sở dữ liệu phân tán, tìm phương án thực thi song song và được phát biểu thành bài toán tô màu tối ưu cho một cây truy vấn Thông qua nghiên cứu các thuật toán để tô màu tối ưu một cây truy vấn như thuật toán tách màu, thuật toán trộn,… tác giả có so sánh, đánh giá và đề xuất phương án có chi phí tốt nhất với điều kiện cụ thể, rút ra kết luận
Nhằm hiện thực hóa các thuật toán tô màu tối ưu cây truy vấn, tác giả nghiên cứu, xây dựng cơ sở dữ liệu của ứng dụng Quản lý phạm nhân tại các trại giam của Bộ Công an, với một số câu truy vấn đặc trưng, thường dùng để mô phỏng các thuật toán, đánh giá kết quả thực nghiệm
Để có kiến thức nền tảng thực hiện nội dung đề tài này, tác giả tập trung nghiên cứu, tìm hiểu lý thuyết về CSDL phân tán, thiết kế CSDL phân tán-song song, truy vấn phân tán và vấn đề tối ưu, tính toán song song, các thuật toán thực thi song song, đặc biệt là nghiên cứu các thuật toán tối ưu truy vấn, tăng khả năng xử lý song song, phát biểu thành bài toán tô màu tối ưu một cây truy vấn
Về cấu trúc luận văn, ngoài phần mở đầu, kết luận và các danh mục, luận văn được tổ chức thành 3 chương Chương 1, tác giả trình bày các vấn đề liên quan đến CSDL phân tán, quản lý giao tác phân tán, xử lý song song Chương 2, tác giả nghiên cứu các phương pháp tối ưu hóa truy vấn và các thuật toán tô màu tối ưu cho một cây truy vấn Chương 3, nghiên cứu ứng dụng thuật toán đối với một số câu truy vấn đặc thù của cơ sở dữ liệu “Phần mềm quản lý phạm nhân”
Trang 11Chương 1 : TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN, GIAO TÁC
PHÂN TÁN VÀ XỬ LÝ SONG SONG 1.1 Giới thiệu cơ sở dữ liệu phân tán
1.1.1 Khái niệm
Cơ sở dữ liệu (CSDL) phân tán[5] là một tập hợp dữ liệu, mà về mặt logic tập hợp này thuộc cùng một hệ thống, nhưng về mặt vật lý dữ liệu đó được phân tán trên các vị trí khác nhau của một mạng máy tính
Theo định nghĩa, dữ liệu được phân tán ở nhiều nơi Tại mỗi vị trí, dữ liệu được xây dựng theo một cấu trúc chung, được sử dụng chung để cùng giải quyết một vấn đề Xem Hình 1.2
Có hai điểm quan trọng trong định nghĩa đó là phân tán và tương quan logic Về phân tán, dữ liệu không chỉ được đặt tại một vị trí mà được phân bố rộng khắp trên nhiều máy tính đặt tại nhiều vị trí khác nhau Về tương quan logic, nhìn tổng thể, dữ liệu thuộc cùng một hệ thống, người dùng không thấy được sự phân tán dữ liệu, nhưng thực tế nó được phân tán tại các nút mạng và có thuộc tính ràng buộc chúng với nhau Đó là điểm phân biệt một cơ sở dữ liệu phân tán với một cơ sở dữ liệu tập trung Hệ quản trị CSDL chịu trách nhiệm quản lý và phân quyền truy nhập dữ liệu tới các nút trong môi trường mạng Xem Hình 1.1, Hình 1.2 và Hình 1.3
Hình 1.1: Tổng quan CSDL phân tán
Trang 12Hình 1.2: Mô hình CSDL phân tán trên mạng
Hình 1.3: Hệ thống đa xử lý
1.1.2 Quản trị cơ sở dữ liệu phân tán
Hệ quản trị CSDL phân tán là một hệ thống phần mềm cho phép quản lý các hệ CSDL phân tán và làm cho việc phân tán trở nên trong suốt đối với người
sử dụng
Các thành phần của hệ quản trị CSDL phân tán (Hình 1.4):
- Phần quản trị dữ liệu: DBM;
Trang 13- Phần truyền thông dữ liệu: DC;
- Phần từ điển dữ liệu: DD, dùng để mô tả thông tin về sự phân tán của dữ liệu trên mạng
- CSDL phân tán: DDB
Hình 1.4: Các thành phần của một DDBMS
1.1.3 Kiến trúc của cơ sở dữ liệu phân tán
Kiến trúc cơ bản, các thành phần của một cơ sở dữ liệu phân tán được thể hiện như sơ đồ Hình 1.5
1.1.3.1 Sơ đồ tổng thể
Xác định tất cả các dữ liệu sẽ được lưu trữ trong cơ sở dữ liệu phân tán cũng như các dữ liệu không được phân tán ở các trạm trong hệ thống Sơ đồ tổng thể được định nghĩa giống như trong CSDL tập trung Trong mô hình quan hệ, sơ đồ tổng thể bao gồm định nghĩa của tập các quan hệ tổng thể (Xem hình 1.5)
1.1.3.2 Sơ đồ phân mảnh
Mỗi quan hệ tổng thể có thể chia thành một các phần không giao nhau gọi là phân mảnh (Fragmentation) Sơ đồ phân mảnh mô tả các ánh xạ giữa quan hệ tổng thể và các mảnh Các mảnh được mô tả bằng tên của quan hệ tổng thể cùng
với chỉ mục của mảnh Chẳng hạn, R j được hiểu là mảnh thứ j của quan hệ R
Trang 14hoặc Rij đƣợc hiểu là mảnh thứ j của quan hệ R đƣợc đặt tại trạm i Xem hình 1.6
Hình 1.5: Kiến trúc cơ bản của CSDL phân tán
Hình 1.6: Các đoạn và hình ảnh vật lý của một quan hệ tổng thể
Trang 151.1.3.3 Sơ đồ định vị
Sơ đồ định vị xác định đoạn dữ liệu R j được định vị tại trạm thứ i trên mạng Tất cả các đoạn được liên kết với cùng một quan hệ tổng thể R và được định vị tại cùng một trạm i cấu thành ảnh vật lý quan hệ tổng thể R tại trạm i Do đó, ta
có thể ánh xạ 1-1 giữa một ảnh vật lý và một cặp (quan hệ tổng thể, trạm) Các ảnh vật lý có thể chỉ ra bằng tên của một quan hệ tổng thể và một chỉ mục của
trạm Mảnh thứ j của quan hệ R tại trạm i được ký hiệu là Rij Xem hình 1.6
1.1.3.4 Sơ đồ ánh xạ cục bộ
Thực hiện ánh xạ các ảnh vật lý lên các đối tượng được thực hiện bởi hệ quản trị cơ sở dữ liệu cục bộ Tất cả các đoạn của một quan hệ tổng thể trên cùng một trạm tạo ra ảnh vật lý
1.1.4 Đặc trưng của cơ sở dữ liệu phân tán
Một cơ sở dữ liệu phân tán có các đặc trưng cơ bản sau[5]:
1.1.4.1 Chia sẻ tài nguyên
Mỗi tài nguyên được quản lý bởi một chương trình có giao diện truyền thông Các tài nguyên phải được truy nhập, cập nhật một cách tin cậy và nhất quán Quản lý tài nguyên là quản lý việc lập kế hoạch dự phòng, đặt tên cho các lớp tài nguyên, thiết lập các cơ chế truy nhập từ một nút hay ánh xạ tên tài nguyên vào địa chỉ truyền thông
1.1.4.2 Tính mở
Hệ thống phân tán dễ dàng mở rộng phần cứng, phần mềm Hệ thống cho phép mở rộng với các loại phần cứng khác nhau và sử dụng phần mềm của các nhà cung cấp khác nhau Tính mở của hệ phân tán dựa trên việc cung cấp cơ chế truyền thông giữa các tiến trình và công khai các giao diện dùng để truy nhập các tài nguyên dùng chung
1.1.4.3 Khả năng song song
Hệ phân tán hoạt động trên một mạng truyền thông có nhiều máy tính, mỗi máy có một hay nhiều CPU, nhiều tiến trình thực hiện một thời điểm Các tiến trình thực hiện theo cơ chế phân chia thời gian (một hay nhiều CPU) Khả năng làm việc song song trong hệ phân tán được thể hiện qua hai tình huống: (1) có nhiều người sử dụng đồng thời đưa ra các lệnh hay các tương tác với các chương trình ứng dụng (2) nhiều tiến trình Server chạy đồng thời, mỗi tiến trình phải đáp ứng yêu cầu từ các Clients
Trang 161.1.4.4 Khả năng mở rộng
Khi hệ được mở rộng không thay đổi phần mềm hệ thống và phần mềm ứng dụng Có thể mở rộng phần cứng, mạng và thiết kế hệ phân tán
1.1.4.5 Khả năng chịu lỗi
Khả năng chịu lỗi của hệ thống phân tán dựa trên hai giải pháp là dùng cơ chế thay thế hoặc dùng chương trình hồi phục khi sự cố xảy ra
1.1.4.6 Tin cậy và nhất quán
Hệ thống yêu cầu độ tin cậy như bảo mật dữ liệu, có các chức năng sao lưu, khôi phục khi xảy ra lỗi, hỏng dữ liệu Ngoài ra, hệ thống phải đảm bảo nhất quán nội dung cơ sở dữ liệu Dữ liệu tại các nút là như nhau
1.1.4.7 Tính trong suốt
Tính trong suốt của một hệ phân tán là việc che đi các thành phần riêng biệt
của hệ đối với người sử dụng và những người lập trình ứng dụng Các loại trong suốt có thể là Trong suốt phân mảnh (Fragmentation Transparency), trong suốt
về vị trí (Location Transparency) và trong suốt ánh xạ cục bộ (Local Mapping Transparency)
1.1.5 Các cơ chế truy xuất CSDL phân tán
1.1.5.1 Truy xuất từ xa không qua chương trình phụ trợ
Ứng dụng phát ra một yêu cầu truy xuất CSDL tại vị trí bất kỳ Hệ quản trị CSDL phân tán gửi yêu cầu truy xuất đến vị trí chứa dữ liệu Hệ quản trị cơ
sở dữ liệu cục bộ (nơi có dữ liệu cần truy xuất) thực hiện truy vấn và trả kết quả
về nơi yêu cầu (Xem hình 1.7)
Hình 1.7: Cơ chế truy xuất từ xa
Trang 171.2.5.2 Truy xuất từ xa thông qua chương trình phụ trợ
Một ứng dụng yêu cầu thực hiện một chương trình phụ trợ đặt tại vị trí từ
xa Chương trình phụ trợ này sẽ truy xuất CSDL từ xa và trả lại kết quả cho ứng dụng đang yêu cầu (Xem hình 1.8)
Hình 1.8: Cơ chế truy xuất thông qua chương trình phụ trợ
1.2 Giao tác phân tán
Giao tác là một lần thực hiện một chương trình Chương trình có thể là một câu truy vấn, một chương trình ngôn ngữ chủ với các lời gọi được gắn vào một ngôn ngữ vấn tin
Quản lý giao tác phân tán là quản lý một số vấn đề trong quá trình truyền thông của hệ phân tán như độ tin cậy, điều khiển tương tranh, hiệu quả sử dụng các tài nguyên của hệ thống
1.2.1 Quản lý khóa trong giao tác
Trong điều khiển đồng thời phân tán, CSDL phải được phân nhỏ thành các mục dữ liệu Phương pháp thông dụng nhất để điều khiển việc truy xuất các mục
dữ liệu là sử dụng khóa chốt (lock)
Khóa chốt là một đặc quyền truy xuất trên một mục dữ liệu mà bộ quản lý khóa chốt (Lock Manager) uỷ quyền cho một giao tác nào đó hoặc thu hồi lại
Bộ quản lý khóa chốt là một thành phần cơ bản của DDBMS, chịu trách nhiệm theo dõi xem một mục dữ liệu nào đó hiện đang chịu sự đọc/ghi của một hoặc nhiều giao tác
Ví dụ: cho hai giao tác T1, T2 cùng muốn truy cập đến vùng dữ liệu x Khóa chốt thực hiện như sau:
Trang 18- Trước khi T1 đọc x phải khóa x lại (lock x), ngăn không cho giao tác T2 truy xuất x cho đến khi T1 hoàn thành
- T1 hoàn thành thì giải phóng khóa Unlock(x) để các giao tác T2 vào
- T2 cũng thực hiện như giao tác T1
1.2.2 Xử lý giao tác khi xảy ra sự cố
Giả sử có một giao tác T khởi hoạt tại một vị trí và sinh ra nhiều giao tác tại các vị trí khác Thành phần của giao tác T thực hiện tại vị trí gốc được gọi là điều phối viên (coordinator), các giao tác thực hiện tại các vị trí khác được gọi là các thành viên (participants) Điều phối viên chịu trách nhiệm cuối cùng về quyết định ủy thác hoặc hủy bỏ Nếu một thành viên không thể ủy thác cục bộ giao tác con của nó thì tất cả các thành viên khác phải hủy bỏ cục bộ
1.2.2.1 Sự cố về vị trí
- Một thành viên gặp sự cố trước khi ghi mẫu tin “ready” vào nhật ký
Nếu thời gian quá hạn của điều phối viên đã hết, điều phối viên quyết định hủy
bỏ giao tác, tất cả các thành viên trực thuộc hủy bỏ những giao tác con của nó Thành viên bị sự cố được phục hồi, quy trình sẽ bắt đầu lại mà không cần phải tập hợp thông tin từ những vị trí khác
- Một thành viên gặp sự cố sau khi ghi mẫu tin “ready” vào nhật ký
Những vị trí đúng sẽ kết thúc giao tác (commit hoặc abort) Vị trí có sự cố phục hồi bằng cách: (i)Truy cập thông tin phục hồi từ xa ; (ii) Điều phối viên và tất cả những thành viên trực thuộc khác sẽ thực hiện như khi trước khi ghi mẫu tin
“ready”, thành viên bị sự cố sẽ thực hiện bắt đầu lại như đã mô tả
- Điều phối viên gặp sự cố sau khi ghi mẫu tin “prepare” nhưng trước khi ghi mẫu tin “global_commit” hoặc “global_abort” vào nhật ký
Các thành viên đã trả lời READY phải chờ sự phục hồi của điều phối viên Quy trình bắt đầu lại của điều phối viên thừa nhận giao thức ủy thác từ lúc khởi đầu
- Điều phối viên gặp sự cố sau khi ghi mẫu tin “global_commit” hoặc
“global_abort” nhưng trước khi ghi mẫu tin “complete” vào nhật ký
Điều phối viên phải gửi lại cho tất cả các thành viên những quyết định Tất cả những thành viên không nhận được lệnh phải chờ cho đến khi điều phối viên phục hồi
- Điều phối viên gặp sự cố sau khi ghi mẫu tin “complete” vào nhật ký Trong trường hợp này, giao tác đã kết thúc và không có hành động cần thiết để thực hiện lại
Trang 19- Một thông điệp ACK bị mất Điều phối viên vẫn không rõ thành viên đã nhận được thông điệp lệnh hay chưa Giải quyết vấn đề này bằng cách xem thời gian quá hạn trong log của điều phối viên Nếu không có thông điệp ACK được nhận sau khoảng thời gian quá hạn từ lúc phát lệnh thì điều phối viên sẽ gửi lại lệnh đó Phương án tốt nhất để xử lý trường hợp này là gửi lại thông điệp ACK tại vị trí thành viên bị mất
1.3 Xử lý song song
Hiện nay, hầu hết các chương trình viết bằng ngôn ngữ SQL dùng để xử
lý CSDL đều có thể đưa vào các máy đa xử lý để thực hiện song song SQL là một ngôn ngữ truy vấn chuẩn có thể áp dụng trong việc xử lý song song Phần mềm SQL viết cho các hệ thống đơn xử lý có thể đưa vào các máy tính song song mà không phải thay đổi mã Chúng ta sẽ dùng ngôn ngữ SQL để mô tả quá trình thực hiện câu truy vấn trong các máy tính song song
Sau đây, chúng ta lần lượt nghiên cứu các thuật toán xử lý dữ liệu, các phương pháp xử lý song song và các phép toán song song
1.3.1 Một số thuật toán xử lý dữ liệu song song
Cơ sở cho việc thực hiện truy vấn song song là việc phân mảnh dữ liệu và sắp đặt dữ liệu Việc sắp đặt các mảnh dữ liệu có vai trò quan trọng trong việc thiết kế các thuật toán song song và điều khiển xử lý dữ liệu hiệu quả thông qua các toán tử đại số quan hệ Thực hiện truy vấn song song nhiều toán tử cần phải đảm bảo sự cân bằng giữa tính toán song song và chi phí cho quá trình trao đổi thông tin
Giả sử quan hệ R được phân thành m mảnh và sắp đặt trên m vị trí Quan hệ S được phân thành n mảnh và sắp đặt trên n vị trí Giả thiết m node và n node tách
Trang 20rời nhau Các node chứa các mảnh của quan hệ R được ký hiệu R-node, tương tự cho S là S-node
Có ba thuật toán kết nối song song cho việc xử lý dữ liệu[5]: Thuật toán vòng lặp lồng song song, thuật toán nối kết hợp song song và thuật toán nối băm song song
1.3.1.1 Thuật toán vòng lặp lồng song song
Thuật toán vòng lặp lồng song song[5] thay thế toán tử
Ví dụ 1.1: Với m=n=2 ta có kết quả như Hình 1.9:
Hình 1.9: Thuật toán vòng lặp lồng song song song
1.3.1.2 Thuật toán nối kết hợp song song
Thuật toán nối kết hợp song song[5] thay thế toán tử
Ví dụ 1.2 : với m=n=2 ta có kết quả như Hình 1.10:
Hình 1.10: Thuật toán nối kết hợp song song
Trang 211.3.1.3 Thuật toán nối băm song song
Thuật toán nối băm song song[5] là sự tổng quát hóa của thuật toán nối kết hợp song song, được áp dụng trong trường hợp kết nối bằng nhau không cần
sự phân mảnh cụ thể nào của quan hệ toán hạng Ý tưởng cơ bản của thuật toán
là phân mảnh các quan hệ R và S thành p mảnh R1, R2,…,Rp và S1, S2, …,Sp sao cho:
Ví dụ 1.3 : với m=n=2 ta có kết quả như Hình 1.11:
Hình 1.11: Thuật toán nối băm song song
1.3.2 Các phương pháp xử lý song song
Các phép truy vấn trong mô hình quan hệ rất thích hợp cho việc thực hiện song song Truy vấn quan hệ thực chất là các phép toán quan hệ thực hiện trên các dòng dữ liệu có cùng cấu trúc Hơn nữa, kết quả của mỗi phép toán là một quan hệ nên ta có thể kết hợp các phép toán thành các dòng dữ liệu song song
Có hai loại dòng dữ liệu song song: song song đường ống và song song phân mảnh Có thể sử dụng các thủ tục tuần tự sẵn có để thực hiện các phép toán đã
có một cách song song mà không phải xây dựng các phép toán song song mới
Có 3 cơ chế xử lý song song cơ bản:
- Song song liên truy vấn (inter - query parallelism)
- Song song nội truy vấn (intra - query parallelism)
- Song song nội toán tử (intra- operator parallelism)
1.3.2.1 Song song liên truy vấn
Song song liên truy vấn là thực hiện nhiều truy vấn cùng một lúc bằng cách lập lịch thực hiện cho các toán tử của các truy vấn đó Để đáp ứng có hiệu quả đối với nhiều loại truy vấn khác nhau, bộ tối ưu truy vấn cần phải tạo ra ít nhất
Trang 22một tiến trình cho mỗi loại toán tử CSDL nguyên thuỷ trong mỗi bộ xử lý Các
toán tử này được gọi là các toán tử phục vụ Khi một toán tử phục vụ hoàn thành
công việc đối với một truy vấn, thì nó được trả về vùng chờ và đợi các yêu cầu
phục vụ khác (nếu còn có) đến từ các truy vấn tiếp theo Như vậy, bằng cách chia sẻ các toán tử phục vụ cho nhiều truy vấn, chúng ta có thể tránh được sự quá tải gắn liền với việc khởi tạo các tiến trình Có hai phương pháp lập lịch
được sử dụng phổ biến: lập lịch cạnh tranh và lập lịch theo phương án
i Lập lịch cạnh tranh
Lập lịch trên cơ sở cạnh tranh hoạt động như sau:
- Khi khởi động hệ thống, một tập các tiến trình điều phối được tạo ra
- Trình phân phối (dipatcher process) chỉ định một tiến trình điều phối cho
một truy vấn theo kiểu hàng đợi
- Khi một bộ điều phối được chỉ định cho một truy vấn thì tự nó lập lịch cho các phép toán trong câu truy vấn tương ứng dựa vào cây toán tử
- Bộ điều phối tương ứng của cây toán tử phải "cạnh tranh" với các bộ điều phối khác để giành được các toán tử phục vụ nhằm thực hiện toán tử trên cây toán tử đó
Sau khi giành được các toán tử phục vụ cần thiết cho công việc, nó tiến hành phối hợp với các toán tử này để thực hiện các phép toán một cách đồng thời Ưu điểm đối với phương pháp này là đơn giản và "công bằng" theo nghĩa mỗi truy vấn đều có cùng cơ hội để cạnh tranh các tài nguyên tính toán Tuy nhiên khả năng sử dụng hệ thống của phương pháp này chưa cao
ii Lập lịch theo phương án
- Một bộ lập lịch chung cho tất cả các truy vấn
- Bộ lập lịch biết nhu cầu tài nguyên của tất cả các truy vấn hoạt động nên
nó có thể lập lịch cho các phép toán của các cây toán tử này, dựa vào việc các yêu cầu này có phù hợp với điều kiện của hệ thống song song đang có hay không
- Chiến lược chọn "tốt nhất" được áp dụng để chọn ra một phép toán từ nhiều phép toán đang đợi
- Sử dụng toán tử phục vụ tốt hơn để thực hiện trước
Phương pháp này có khả năng sử dụng hệ thống tốt hơn nhưng không "công bằng" như phương pháp lập lịch trên cơ sở cạnh tranh Bởi vì, các truy vấn liên quan đến tính phức tạp của chúng (chẳng hạn xử lý tên các quan hệ rất nhỏ hoặc rất lớn) có thể rơi vào tình trạng chờ đợi mãi mãi, vì không thể thực hiện do
Trang 23không giành được tài nguyên Ngoài ra, bộ lập lịch cũng có thể đưa đến hiện tượng "điểm nóng" khi mà nhu cầu tài nguyên của nhiều truy vấn tối ưu đối với
hệ thống, thì việc chọn ra một truy vấn để thực hiện trước là một vấn đề khó Các hệ Oracle 7 và Oracle RDB là các ví dụ về các hệ CSDL song song dùng chung vùng và có hỗ trợ cơ chế song song liên truy vấn
1.3.2.2 Song song nội truy vấn
Song song nội truy vấn là dạng song song hoá thi hành song song một truy vấn đơn trên nhiều bộ xử lý Nghĩa là, nó thực hiện từng truy vấn một và cho phép thực hiện đồng thời các phép toán trên truy vấn đó Có hai cơ chế song song nội truy vấn
i Song song độc lập
Ký hiệu Opi là một phép toán nào đó, Opi và Opj với i j được gọi là song song độc lập với nhau, nếu chúng được thực hiện song song và USE(Opi) DEF(Opj) = USE(Opj) DEF(Opi) = Nghĩa là toán tử này không sử dụng kết quả đầu ra của phép toán kia và ngược lại Cơ chế song song này gọi là song
song độc lập (independent parallelism)
Ví dụ 1.4: Quan hệ PROJ (hình 1.12) phân thành các mảnh dọc (hình 1.13)
P1 P2 P3 P4
Instrumentation Database Develop CAD/CAM
PNO PNAME
P1 P2 P3 P4
Instrumentation Database Develop CAD/CAM Maintenance
a PROJ 1
PNO BUD
P1 P2 P3 P4
Montereal NewYork NewYork Paris
c PROJ 3
Hình 1.13: Các mảnh dọc của quan hệ PROJ
Có thể thực hiện phép nối bằng cơ chế song song độc lập như sau:
Trang 24ii Song song đường ống
Xử lý tuần tự kiểu đường ống là một kỹ thuật quan trọng để xử lý câu truy vấn Đó là một dãy các thao tác được sắp đặt sao cho đầu ra của thao tác này là đầu vào của thao tác kế tiếp Ưu điểm chính của kỹ thuật này là không cần lưu trữ kết quả tạm thời trong quá trình xử lý mà thực hiện tính toán ngay Như vậy,
sẽ hạn chế các thao tác đọc ghi các kết quả trung gian Trong hệ thống song song, kỹ thuật đường ống chủ yếu được sử dụng với cùng mục đích như trong hệ thống xử lý tuần tự Tuy nhiên, nó được dùng như một biện pháp song song hoá một phần Nghĩa là, hai phép toán khác nhau có thể thực hiện đồng thời bằng cách lấy kết quả của phép toán này làm dữ liệu vào cho phép toán kia Cơ chế này gọi là song song đường ống
PROJ' PROJ PROJ3 3 (5) (5)
Song song hoá đường ống rất tốt đối với hệ thống có ít bộ xử lý, nhưng với các hệ thống có nhiều bộ xử lý thì ít thích hợp Bởi vì, chuỗi các thao tác đường ống không đủ dài để cho phép thực hiện song song hoá ở mức độ cao Ngoài ra, không thể sắp vào đường ống các phép toán quan hệ (chẳng hạn phép trừ, phép
Trang 25gộp nhóm, sắp xếp) do đây là các phép toán không thể tạo ra kết quả khi tất cả các đầu vào của nó chƣa đƣợc duyệt
1.3.2.3 Song song nội toán tử
Song song nội toán tử thực hiện một phép toán quan hệ bằng cách dùng nhiều bộ xử lý Điều này có thể thực hiện bằng cách phân chia các toán hạng cho các bộ xử lý Một phép toán quan hệ đƣợc tách thành các phép toán độc lập, mỗi phép toán này thực hiện một phần dữ liệu bằng một bộ xử lý riêng biệt Cơ chế song song nội toán tử còn đƣợc gọi là song song phân mảnh, nó dựa trên sự phân mảnh và bản sao dữ liệu để thực hiện các toán tử
1.3.3 Các phép toán song song
Nhận thấy rằng, việc phân mảnh ngang, phân mảnh ngang nguyên thuỷ, phân mảnh dọc hoặc phân mảnh hỗn hợp đều cho chúng ta các quan hệ Vì vậy, mảnh ở đây có thể đồng nhất với quan hệ Khi tái thiết các mảnh, hay ghép, nối các mảnh (tức là cục bộ hoá dữ liệu) chúng ta dùng các phép toán nhƣ phép Hợp hoặc Ghép, Nối
Ngoài việc xây dựng các phép toán song song, chúng ta còn có thể sử dụng các phép toán quan hệ truyền thống với các dòng dữ liệu song song Mỗi phép toán quan hệ có một tập các cổng vào chứa các mẫu tin và một cổng ra chứa dòng dữ liệu kết quả Dòng dữ liệu song song thực hiện bằng cách tách và ghép các dòng dữ liệu thành các cổng tuần tự Có hai phép toán song song cơ bản:
phép ghép (merge operator) và phép tách (splitting operator)
Ngoài ra, phép ghép cũng có thể xem là phép kết hợp nhiều dòng dữ liệu song song độc lập thành một dòng dữ liệu đơn (tuần tự) Một dòng dữ liệu đơn (tuần tự) đƣợc tách thành nhiều dòng dữ liệu song song độc lập đƣợc gọi là phép tách Một phép tách đƣợc dùng để phân mảnh hoặc lặp lại dòng kết quả ra của một phép toán quan hệ
Trang 26GROUP BY <GroupedFields>
HAVING <Conditions>
Số mẫu tin kết quả phụ thuộc vào các thuộc tính nhóm sau mệnh đề GROUP
BY
Ví dụ 1.6: Xét truy vấn "Hãy cho biết số dự án có ngân sách > 250000 đang
đƣợc triển khai tại các địa điểm
SELECT LOC, Count(*)
1.3.3.1 Thuật toán trộn tập trung
Ví dụ 1.7 Cho quan hệ ASG nhƣ hình 1.14
E1 E2 E2 E3 E3 E4 E5 E6 E7 E8
…
P1 P1 P2 P3 P4 P2 P2 P4 P3 P3
…
Manager Analyst Analyst Consultant Engineer Programmer Manager Manager Engineer Manager
Ưu điểm: Thực hiện tốt khi số mẫu tin kết quả là nhỏ
Nhược điểm: Giai đoạn trộn kết quả thực hiện tuần tự nên dễ xảy ra hiện
tƣợng "nút cổ chai" khi số mẫu tin kết quả lớn
Trang 27Giả sử quan hệ ASG trên hình 1.14 được lưu tại các vị trí Montereal, New York và Paris Hãy tìm tổng nhân viên làm việc tại các dự án Như vậy tại từng
vị trí tính tổng nhân viên, sau đó gửi đến một vị trí đã định để tính tổng toàn bộ (hình 1.15)
Hình 1.15: Kết quả trộn tập trung
1.3.3.2 Thuật toán trộn phân tán
Gồm hai bước:
Bước 1: Mỗi nút thực hiện gộp nhóm các mẫu tin trên vùng của nó
Bước 2: Các giá trị gộp nhóm riêng được phân mảnh theo hàm băm trên thuộc tính nhóm GROUP BY và các nút thực hiện trộn các giá trị gộp nhóm cục
bộ này một cách đồng thời
Ưu điểm: Các nút thực hiện trộn các giá trị gộp nhóm thành phần một cách
đồng thời nên giai đoạn trộn không còn là vấn đề bế tắc nữa
Nhược điểm: Do một giá trị nhóm được tích luỹ trên tất cả các nút nên đòi
hỏi bộ nhớ phải lớn
Ví dụ 1.8: Giả sử Tổng Cục quản lý Trại Giam - Bộ Công an giam giữ phạm nhân tại 3 nơi: Trại giam Phú Sơn - Thái Nguyên; Trại Giam Thanh Xuân - Hà Nội và Trại giam Ninh Khánh - Ninh Bình Tại các trại giam này giam giữ phạm nhân phạm các tội:
1 XPAN (Xâm phạm an ninh Quốc gia)
2 GN (Giết người)
3 CUOP (Cướp)
4 CHONG (Chống người thi hành công vụ)
5 HIEP (Hiếp dâm)
Trang 288 THAM (Tham nhũng)
Kết quả thống kê phạm nhân đến tháng 10 năm 2015 tại các trại giam như Hình 1.16
Hình 1.16: Số phạm nhân phạm các tội giam giữ tại các trại giam
Kết quả gộp nhóm theo phương pháp trộn phân tán được trình bày trên hình 1.17
Hình 1.17: Gộp nhóm theo phương pháp trộn phân tán
Trại Phú Sơn, Thái Nguyên
STT Mod 3 STT Mod 3 STT Mod 3
STT Loại Phạm nhân PN Số
1 XPAN 65
4 CHONG 900
7 BBMT 345 STT Mod 3 = 1
STT Loại Phạm nhân PN Số
2 GN 230
5 HIEP 146
8 THAM 50 STT Mod 3 = 2
Trang 291.3.3.3 Thuật toán phân mảnh lại
Thuật toán phân mảnh lại (ReF) thực hiện qua hai bước:
1 Khác với hai thuật toán trên, các nút không thực hiện gộp nhóm trực tiếp các phần dữ liệu trên địa chỉ lưu trữ của nó, mà trước tiên phân mảnh lại quan hệ trên thuộc tính nhóm GROUP BY
2 Các vị trí thực hiện gộp nhóm các thành phần dữ liệu sau khi đã phân mảnh lại
Ví dụ: Kết quả dữ liệu ở hình 1.16, sau khi ứng dụng thuật toán ReF thể hiện như hình 1.18
Hình 1.18: Gộp nhóm theo thuật toán ReF
Trại Phú Sơn, Thái Nguyên
STT Mod 3=0 STT Mod 3=1 STT Mod 3=2
Trang 301.3.3.4 Thuật toán thực hiện phép kết nối
Nhắc lại các phép nối:
Nối là một dẫn xuất của tích Descartes Cho hai quan hệ R và S nối của R và
S được ký hiệu T = R FS là một quan hệ giao của R và S với F là vị từ nối (phép toán giao hoán) được định nghĩa như sau:
T = R FS = F(RF)
Nối bằng:
Nếu F chứa các thuộc tính chung của hai quan hệ, phép so sánh giữa các thuộc tính của hai quan hệ là “=” (dấu bằng) và nếu chúng ta chiếu bỏ để đảm bảo rằng các thuộc tính này không xuất hiện hai lần trong kết quả, thì phép nối được gọi là nối bằng
Ví dụ: Cho hai quan hệ:
EMP(ENO, ENAME, TITLE): Nhân công, PAY(TITLE, SAL): Chi trả lương
Hình 1.19: Quan hệ EMP và PAY Kết quả nối bằng của quan hệ EMP và PAY với điều kiện nối:
EMP.TITLE = PAY.TITLE như Hình 1.20
EMP EMP.TITLE=PAY.TITLE PAY
E1 E2 E3 E4 E5 E6 E7 E8
J Doe
J Smith
A Lee J.Miller B.Casey L.Chu R.David J.Jones
Elect Eng
Syst Anal
Mech Eng
Programmer Syst Anal
PAY
TITLE SAL Elect Eng
Syst Anal
Mech.Eng Progammer
Elect Eng Syst Anal Mech.Eng Programmer Syst.Anal Elect.Eng Mech.Eng Syst Anal
Trang 31Nối tự nhiên:
Nối tự nhiên là một nối bằng của hai quan hệ trên một thuộc tính cụ thể, đặc biệt là trên trên các thuộc tính có cùng miền biến thiên Tuy nhiên, có điều rất khác biệt các thuộc tính được dùng để nối tự nhiên chỉ xuất hiện một lần trong kết quả Nối tự nhiên được ghi như nối không có công thức:
R AS, trong đó A là thuộc tính chung cho cả R và S
Chú ý rằng thuộc tính nối tự nhiên có thể có tên khác nhau trong hai quan hệ; điều bắt buộc là chúng có cùng miền giá trị
RA BS, trong đó A và B là thuộc tính tương ứng của R và S
Nối nửa (Không giao hoán)
Nối nửa của quan hệ R được định nghĩa trên tập thuộc tính A, với quan hệ S được định nghĩa trên tập thuộc tính B, là tập con các bộ của R có tham gia vào nối của R và S Nối nửa được ký hiệu: R FS (trong đó F là vị từ) có thể thu được như sau:
R F S = A (RFS) = A(R) F AB(S) = R F AB(S)
Ưu điểm: của nối nửa là làm giảm số lượng các bộ cần phải xử lý để thực
hiện nối Kết quả nối nửa EMP với PAY trên vị từ EMP.TITLE = PAY.TITLE được thể hiện trên hình 1.21
EMP EMP.TITLE = PAY.TITLE PAY
A = {ENO, ENAME, TITLE}
B = {TITLE, SAL }
A B = {TITLE}
E1 E2 E3 E4 E5 E6 E7 E8
J Doe
J Smith
A Lee J.Miller B.Casey L.Chu R.David J.Jones
Elect Eng
Syst Anal
Mech Eng
Programmer Syst Anal
Trang 32Kiểu nối sắp trộn, được thực hiện với hai quan hệ mà thuộc tính chung (kết nối) đã được sắp xếp, vấn đề còn lại là so sánh các bộ có các giá trị bằng nhau trên thuộc tính chung sẽ được nối với nhau
Kiểu nối băm, được thực hiện với hai quan hệ R (quan hệ kết nối) và S (quan hệ được nối) đã được phân mảnh theo hàm băm trên thuộc tính chung (kết nối) Sau đó một mảnh của R được đưa vào bộ nhớ làm thường trực và duyệt các mảnh ngang của S và mỗi bộ được so sánh với mảnh của R đang thường trực, nếu có các giá trị bằng nhau trên thuộc tính chung sẽ được nối với nhau
Kiểu nối lặp - lồng, được thực hiện với hai quan hệ R và S có thuộc tính chung Ứng với mỗi bộ của mảnh của R (vòng lặp ngoài), chương trình sẽ tìm kiếm các bộ của S (vòng lặp trong) có các giá trị bằng với nó theo thuộc tính nối
sẽ được nối với nhau
1.4 Kết chương
Trong chương 1, tác giả hệ thống hóa lý thuyết về cơ sở dữ liệu phân tán với các đặc trưng, mô hình, phương pháp phân mảnh, bố trí dữ liệu, các cơ chế quản lý, truy xuất cơ sở dữ liệu, phương pháp xử lý khi có sự cố
Phần cuối chương, tác giả nghiên cứu, trình bày các thuật toán xử lý, sắp đặt dữ liệu, xây dựng cây truy vấn có chú giải phục vụ thực hiện song song truy vấn Các thuật toán trộn tập trung, trộn phân tán, là các kỹ thuật cơ bản của xử
lý dữ liệu phân tán và nền tảng để thực hiện các truy vấn song song, tối ưu hóa chi phí