NGHIÊN CỨU CÁC KỸ THUẬT TÁCHGỘP SONG SONG TRÊN CƠ SỞ DỮ LIỆU PHÂN TÁN VÀ ỨNG DỤNG Như chúng ta đã biết quá trình xử lý thông tin trong các hệ thống lớn hoạt động trên hệ thống mạng, để tăng tốc độ xử lý thì không những xây dựng hạ tầng mạng có đƣờng truyền lớn, mà chúng ta cần phải nghĩ đến việc phân tán dữ liệu nhƣ thế nào trong hệ thống bởi vì nó quyết định rất lớn đến kết quả xử lý thông tin.
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-
Dương Thị Nguyệt
NGHIÊN CỨU CÁC KỸ THUẬT TÁCH-GỘP SONG SONG TRÊN
CƠ SỞ DỮ LIỆU PHÂN TÁN VÀ ỨNG DỤNG
Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01
TÓM TẮT LUẬN VĂN THẠC SĨ
HÀ NỘI - 2014
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: PGS NCVC TS Lê Huy Thập
Phản biện 1: TS Nguyễn Trọng Đường
Phản biện 2: TS Hà Hải Nam
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: 10h giờ 15 ngày 15 tháng 02 năm 2014
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
Trang 3MỞ ĐẦU
Trong những năm gần đây công nghệ thông tin ngày càng phát triển và ngày càng được ứng dụng linh hoạt và phổ biến hơn vào thực tế.Nhưng vấn đề quan trọng ở đây là làm thế nào để có thể áp dụng công nghệ vào thực tế một cách khoa học và có ý nghĩa cũng như hiệu quả cao nhất có thể.Đó là bài toán khá khó đối với ngành công nghệ thông tin hiện tại Có thể xét 1 khía cạnh nào đó của thực tế đó
là yêu cầu đối với các hệ thống có quy mô lớn cần quan tâm nhất đó là vấn đề xử
lý thông tin nhanh nhất và trả ra kết quả chính xác nhất với chi phí là tối ưu nhất
có thể
Như chúng ta đã biết quá trình xử lý thông tin trong các hệ thống lớn hoạt động trên hệ thống mạng, để tăng tốc độ xử lý thì không những xây dựng hạ tầng mạng có đường truyền lớn, mà chúng ta cần phải nghĩ đến việc phân tán dữ liệu như thế nào trong hệ thống bởi vì nó quyết định rất lớn đến kết quả xử lý thông tin
Trong thời gian qua tôi đã tìm hiểu về hệ thống cơ sở dữ liệu phân tán và
thấy rằng để giải quyết vấn đề ách tắc vào ra thường gặp trong các hệ CSDL song
song, ngoài việc áp dụng một kiến trúc phần cứng thích hợp, người ta tiến hành phân mảnh dữ liệu một cách hợp lý cho các bộ xử lý và thực hiện câu vấn tin đã cho một cách đồng thời trên các mảnh Hiện nay 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 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 để thực hiện song song thông qua chương trình dịch của ngôn ngữ lập trình song song
Do đó tôi đã chọn đề tài luận văn là: “Nghiên cứu các kỹ thuật tách – gộp song song trên CSDL phân tán và ứng dụng”, nội dung luận văn này sẽ nghiên
cứu và đề xuất các giải pháp tách-gộpsong song và cho thấy được kết quả các thuật toán này sẽ làm tăng rất nhiều về hiệu năng xử lý dữ liệu và truyền dữ liệu so với cơ
sở dữ liệu tập trung
Trang 4CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
Phải tuân thủ ba quy tắc trong khi phân mảnh mà chúng bảo đảm rằng CSDL
sẽ không có thay đổi nào về ngữ nghĩa khi phân mảnh:Tính đầy đủ, tính tái thiết được, tính tách biệt
Các yêu cầu thông tin
Một điều cần lưu ý trong việc thiết kế phân tán là quá nhiều yếu tố có ảnh hưởng đến một thiết kế tối ưu Tổ chức logic của CSDL, vị trí các ứng dụng, đặc tính truy xuất của các ứng dụng đến CSDL, và các đặc tính của hệ thống máy tính tại mỗi vị trí đều có ảnh hưởng đến các quyết định phân tán Điều này khiến cho việc diễn đạt bài toán phân tán trở nên phức tạp
Như chúng ta đã biết phép chiếu một quan hệ nếu cho kết quả là một quan hệ thì các bộ trùng lặp phải được loại bỏ (chỉ giữ lại 1 trong những bộ giống nhau) Phép chiếu mở rộng một quan hệ có thể chấp nhận các bộ giống nhau, trường hợp này kết quả thu được là một bảng Thuật ngữ bảng là để chỉ một quan hệ và ngược lại
Trang 51.2.1 Phân mảnh ngang
Phân mảnh ngang 1 quan hệ tổng thể n-bộ R là tách R thành các quan hệ con n-bộ
R1, R2, … Rk sao cho quan hệ R có thể được khôi phục lại từ các quan hệ con này bằng phép hợp R = R1 U R2 U … U Rk
1.2.1.1 Phân mảnh ngang (Vòng tròn Robin)
Phần giả mã được viết như sau:
Ký hiệu Y = { n0, n1, …, np-1, np}
For i = 0 to N-1 For Each element In Y
If element mod N = i
Save element vào vùng i
Y - = element End if
Next element End For
Cách phân mảnh này dễ cài đặt và không xảy ra tình trạng thiếu cân đối về
dữ liệu vì các vùng chỉ hơn kém nhau tối đa một bộ
Kỹ thuật phân mảnh này dựa trên thứ tự các bộ nên nó không phụ thuộc vào bất cứ một thuộc tính nào của quan hệ được phân mảnh
Phân mảnh Robin không thích hợp với các truy vấn khoảng vì phải tiến hành tìm kiếm trên tất cả các vùng có lưu quan hệ đang xét
2.2.1.2 Phân mảnh ngang theo hàm băm
Phân mảnh theo hàm băm là trường hợp tổng quát của Robin Giả sử cần
phân mảnh quan hệ R cho N vùng được đánh số 0, 1, …, N-1 với thuộc tính phân
Trang 6mảnh là A Bộ t thuộc R được đưa vào vùng k nếu k = t(A) mod N, trong đó t(A) là giá trị trên thuộc tính A của bộ t
Giả mã được viết như sau:
- Nhưng phân mảnh theo hàm băm thì các mẫu tin được phân mảnh ngẫu nhiên vào các vùng chứ không được nhóm lại với nhau nên không thích hợp với các truy vấn khoảng
1.2.1.3 Phân mảnh ngang theo khoảng
Gộp những bộ mà giá trị thuộc tính nào đó của các bộ của chúng thuộc miền nào đó Thông thường dùng câu lệnh SQL để phân ra nhiều mảng, có dạng như sau:
Trang 7Vùng 0
Select * From <Tên quan hệ>
Where <Condition0>
Vùng 1
Select * From <Tên quan hệ>
Where <Condition1>
…
Vùng n
Select * From <Tên quan hệ>
Như thế nếu cho trước một đường nối L, trong đó owner(L) = S và member(L) = R, các mảnh ngang dẫn xuất của R được định nghĩa là (hình1.8)
Trang 8Ri = R Si, 1<= i <=
Hình 1.2 Phân mảnh ngang dẫn xuất quan hệ R theo các mảnh của quan hệ S
Trong đó là số lƣợng các mảnh đƣợc định nghĩa trên R, và Si = FI(S)vớiFi
là công thức định nghĩa mảnh ngang nguyên thủy Si
Quyết định cách phân mảnh nào cần dựa trên hai tiêu chuẩn sau:
- Phân mảnh có đặc tính nối tốt hơn
- Phân mảnh đƣợc sử dụng trong nhiều ứng dụng hơn
1.2.2 Phân mảnh dọc
Phân mảnh dọc chia mộtquan hệ R ra các mảnh R1, R2, …, Rr Mỗi mảnh chứa một tập con các thuộc tính cùng với khóa của quan hệ R Mục đích của phân mảnh dọc là phân mảnh một quan hệ thành một tập các quan hệ nhỏ hơn, để có nhiều ứng dụng chỉ cần chạy trên một mảnh Nhƣ vậy một cách phân mảnh tối ƣu là phân mảnh sinh ra một lƣợc đồ phân mảnh cho phép giảm tối đa thời gian thực thi các ứng dụng chạy trên các mảnh đó
Phân mảnh dọc 1 quan hệ tổng thể bộ R là tách R thành các quan hệ con
n-bộ R1, R2, … Rk sao cho quan hệ R có thể đƣợc khôi phục lại từ các quan hệ con này bằng phép nối R = R1 R2 … Rk
Phân mảnh là phức tạp hơn phân mảnh ngang, vì số lựa chọn có thể có của phân mảnh dọc là rất lớn Trong phân mảnh ngang, nếu tổng các vị từ đơn giảncủa tập Pr là n thì số mảnh ngang có thể có tối đa là 2n (vì có 2n vị từ hội s = cấp) chƣa nói trong số chúng có một số sẽ mâu thuẫn với các phép kéo theo do đó sẽ làm giảm
số mảnh phải xem xét Còn trong phân mảnh dọc nếu một quan hệ có m thuộc tính không phải là khóa thì số mảnh dọc có thể có sẽ là số Bell thứ m B(m) Với m đủ lớn thì số Bell B(m) mm, ví dụ m=10, B(m) =115.000; m=9, B(m) = 109;
Trang 9m=30,(m) = 1023, … Qua những ví dụ này ta thấy để tìm các phân mảnh dọc tối ưu
là bài toán Heuricstic
1.2.3 Phân mảnh hỗn hợp
Trong đa số các trường hợp, phân mảnh ngang hoặc phân mảnh dọc đơn giản cho một lược đồ CSDL không đủ đáp ứng các yêu cầu từ các ứng dụng.Trong trường hợp đó, phân mảnh dọc có thể được thực hiện sau 1 phân mảnh ngang hoặc ngược lại, sinh ra một lối phân mảnh có cấu trúc cây.Bởi vì, hai loại chiến lược phân mảnh này được áp dụng lần lượt, chọn lựa này được gọi là phân mảnh hỗn hợp (hybrid fragmentation)
Tính đúng đắn và các điều kiện cho phân mảnh hỗn hợp là chúng tuân theo những yêu cầu của phân mảnh ngang và phân mảnh dọc
1.2.4 Tái cấu trúc quan hệ
1.2.4.1 Tái thiết quan hệ với Phân mảnh ngang
Tái thiết một quan hệ toàn cục từ các mảnh được thực hiện bằng toán tử hợp trong cả phân mảnh ngang nguyên thủy lẫn dẫn xuất, vì thế một quan hệ R với phân mảnh FR = {R1, R2, R3, … Rm} chúng ta có:
R = Ri; Ri FR
1.2.4.2 Tái thiết quan hệ với Phân dọc
Đối với quan hệ R có phân mảnh dọc FR = {R1, R2, R3, … Rr} và các thuộc tính khóa K
R = KRi, Ri FR
Do vậy nếu điều kiện mỗi Ri là đầy đủ phép toán nối sẽ tái thiết lại đúng R Một điểm quan trọng là mỗi mảnh Ri phải chứa các thuộc tính khóa của R
Trang 101.3 Các phương pháp xử lí song song
1.3.1 Song song liên truy vấn
1.3.1.1 Lập lịch cạnh tranh
Lập lịch cạnh tranh là lập lịch trên cơ sở cạnh tranh
Ư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
Tạo ra tập các tiến trình điều phối
Hàng đợi của các
câu truy vấn Bộ điều phối xử lý
Câu truy vấn 1 Tiến trình điều phối 1 Câu truy vấn n
Tạo các toán tử phục vụ
Tiến trình điều phối n
Trang 11vấn liên quan đến tính phức tạp của chúng (ví dụ như 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 có thể thực hiện
do khô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 đều tối ưu đối với hệ thống, thì việc chọn ra một truy vấn trong số đó để thực hiện trước cũng
Toán tử phục vụ
Tập các toán tử và
bộ điều phối
Hàng đợi của các
câu truy vấn
Hình 1.13 Sơ đồ lập lịch theo phương án
1.3.2 Song song nội truy vấn
Song song nội truy vấn là dạng song song hóa thi hành song song một truy vấn đơn trên nhiều bộ xử lý Điều đó 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
1.3.2.1 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 ngược thực hiện song song và USE(Opi)
Trang 12DEF(Opj) = USE(Opi) DEF(Opj) = 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 paralleism)
Có thể thực hiện phép nối bằng cơ chế song song độc lập như sau:
PROJ1 PNOPROJ2 PNOPROJ3 (1)
Chọn bộ xử lý p1 để thực hiện phép nối cho quan hệ trung gian PROJ‟:
PROJ‟= PROJ1 PNOPROJ2(2)
Chọn bộ xử lý p2 để thực hiện phép nối
PROJ‟‟= PROJ2 PNOPROJ3(3)
Khi các tính toán này đã hoàn tất, chúng ta có thể thực hiện
PROJ‟ PNOPROJ‟‟(4)
Muốn đạt được song song hóa cao hơn ta có thể sắp đặt sao cho khi mới hình thành các bộ trong PROJ‟, PROJ‟‟ thì chúng sẽ được thực hiện nối ngay mà không chờ cho đến khi kết thúc các phép nối này
1.3.2.2 Song song đường ống
Cách 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.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 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.Do đó sẽ hạn chế các thao tác đọc ghi các kết quả trung gian Trong hệ thống song song, các kỹ thuật đường ốngchủ yếu được sử dụng với cùng mục đích như hệ thống tuần tự.Tuy nhiên, nó được dùng như một biện pháp song song hóa một phần Nghĩa là 2 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 Đó là cơ chế song song đường ống
Trang 131.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ý.Phép toán này thực hiện bằng cách phân chia các toán hạng cho nhiều 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 thực hiện một phần dữ liệu và sử dụng một bộ xử lý riêng.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.4 Kết luận chương
CSDLPT ngày càng được mở rộng, phát triển và ứng dụng rộng rãi trong công nghệ thông tin vì có các ưu điểm nổi bật: cơ cấu tổ chức và vấn đề kinh tế, sự tăng trưởng, giảm chi phí truyền thông, hiệu năng, độ tin cậy và sự sẵn dùng
Tuy nhiên bên cạnh những ưu điểm của CSDLPT cũng không tránh được những hạn chế làm cho sự phát triển của CSDLPT chưa thực sự lớn mạnh mà mới chỉ như bắt đầu là: sự phát triển gần đây của các máy tính nhỏ với giá thành hạ và cung cấp nhiều khả năng mà trước đây chỉ có các máy tính lớn mới có đã cung cấp phần cứng cần thiết cho sự phát triển của các hệ phân tán
Kết thúc chương 1 tôi đã trình bày được các vấn đề liên quan đến tổng quan
dữ liệu phân tán, các kỹ thuật phân mảnh và các phương pháp xử lý song song Thông qua tìm hiểu lý thuyết giúp chúng ta hiểu thêm về cơ sở dữ liệu phân tán, ưu
và nhược điểm của loại cơ sở dữ liệu này
Trang 14CHƯƠNG 2: CÁC THUẬT TOÁN TÁCH GỘP SONG SONG
Qua tìm hiểu tại chương 1 ta thấy việc phân mảnh đề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 chúng ta dùng các thuật ngữ đồng nghĩa như Hợp hoặc Ghép và 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 (spliting 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ự) được tách thành nhiều dòng
dữ liệu song song độc lập.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ệ
Cấu trúc các câu lệnh song song:
Cấu trúc Parbegin và Parend, Cobegin và Coend
Trong chương trình, những tiến trình không sử dụng dữ liệu chung hay độc lập với nhau thì thực hiện được đồng thời Giả thiết các lệnh S1, S2, , Sn được thực hiện song song trên n tiến trình (hay n bộ xử lí) riêng biệt Khi đó chúng ta có thể viết thành khối song song như sau:
Trang 15Parbegin Hoặc Cobegin
Cấu trúc forall và inPar
Nhiều khi một số tiến trình (câu lệnh) tương tự nhau cần phải bắt đầu thực hiện và cùng lặp lại một số lần Điều này có thể thực hiện được bằng cấu trúc forall:
Trang 16Từ khóa Par chỉ ra rằng những câu lệnh trong phần thân được thực hiện một cách đồng thời Đây là song song mức dòng lệnh
2.1 Giải pháp phân mảnh lại ReF
2.1.1 Tổng quan giải pháp
Thuật toán thực hiện qua 2 bước:
Bước 1: 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
Bước 2: Các vị trí thực hiện gộp nhóm thành phần dữ liệu sau khi đã phân mảnh lại
Xét Ví dụ 2.2: Giả sử cho bảng thống kê nhân viên năm 2011 tại các chi nhánhnhư hình 2.5.Thực hiện phân mảnh lại cho cơ sở dữ liệu của công ty
Ví dụ trên sau khi ứng dụng thuật toán Ref ta có:
Dữ liệu tại Hà Nội Dữ liệu tại Đà Nẵng Dữ liệu tại Hồ Chí Minh
Bacluong = TS Bacluong = KS Bacluong = CD
Gộp nhóm
Hình 2.5 Gộp nhóm theo thuật toán Ref