HỌ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
Luậ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
1
MỞ ĐẦ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.
2
CHƢƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Tổng quan về CSDL phân tán
Hệ cơ sở dữ liệu phân tán (Distributed Database System – DDBS) là một tập
hợp dữ liệu có liên đới logic và đƣợc phân bố trên các nút của một mạng máy tính.
Cơ sở dữ liệu phân tán (CSDLPT) có các đặc điểm: Tính phân tán và tính
tƣơng quan logic.
1.2 Các kỹ thuật phân mảnh dữ liệu trong CSDL
Quy tắc phân mảnh đúng đắn
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.
3
1.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ộ
R
1
, R
2
, … R
k
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 = R
1
U R
2
U … U R
k
.
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 = { n
0
, n
1, …,
n
p-1,
n
p
}
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
4
mả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:
Y = {t(A)}
For i = 0 to N-1
For each element In Y
If element mod N = i
Save bản ghi tƣơng ứng với element vào vùng i
Y - = element
End if
Next element; End for
Ta thấy:
- Khi truy xuất đến các mẫu tin phải dựa vào giá trị thuộc tính đã dùng để
phân mảnh.
- Dữ liệu sẽ đƣợc phân mảnh đều cho các vùng và thuận tiện cho việc tìm
kiếm kết hợp.
- Giảm sự quá tải khi phải khởi động truy vấn trên tất cả các vùng. Thông
thƣờng các dữ liệu liên quan đƣợc nhóm lại với nhau và lƣu trữ trên cùng
một trang vật lý.
- 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:
5
Vùng 0
Select *
From <Tên quan hệ>
Where <Condition
0
>
Vùng 1
Select *
From <Tên quan hệ>
Where <Condition
1
>
…
Vùng n
Select *
From <Tên quan hệ>
Where <Condition
n
>
Chú ý rằng các Condition
i
, Condition
j
, với i # j là các khoảng loại trừ nhau.
1.2.1.4 Phân mảnh ngang dẫn xuất
Phân mảnh ngang dẫn xuất đƣợc định nghĩa trên một quan hệ thành viên của
một đƣờng nối dựa theo phép toán chọn trên quan hệ chủ nhân của đƣờng nối
đó.Chúng ta cần lƣu ý 2 điểm.Một là đƣờng nối giữa quan hệ chủ nhân và thành
viên đƣợc định nghĩa là một đƣờng nối bằng.Thứ hai, nối bằng có thể đƣợc cài đặt
nhờ các nối nửa. Điều này rất quan trọng với mục đích của chúng ta vì chúng ta
muốn phân hoạch quan hệ thành viên theo phân mảnh của chủ nhân nhƣng cũng
muốn mảnh thu đƣợc chỉ định nghĩa trên các thuộc tính của quan hệ thành viên.
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).
6
R
i
= R S
i
, 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à S
i
=
FI
(S)vớiF
i
là công thức định nghĩa mảnh ngang nguyên thủy S
i
.
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 R
1
, R
2
, …, R
r
. 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ể n-bộ R là tách R thành các quan hệ con n-
bộ R
1
, R
2
, … R
k
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;
7
m=30,(m) = 10
23
, …. 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 F
R
= {R
1
, R
2
, R
3
, … R
m
} chúng ta có:
R = R
i
; R
i
F
R
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 F
R
= {R
1
, R
2
, R
3
, … R
r
} và các thuộc
tính khóa K
R =
K
R
i
, R
i
F
R
Do vậy nếu điều kiện mỗi R
i
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 R
i
phải chứa các thuộc tính khóa của R.
8
1.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
……
Hình 1.12Sơ đồ lập lịch cạnh tranh
1.3.1.2 Lập lịch theo phƣơng án
Phƣơng pháp lập lịch 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 các truy
9
vấ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
là một vấn đề.
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 .
Bộ lập lịch
Toán tử phục
vụ
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 Op
i
là một phép toán nào đó, Op
i
và Op
j
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(Op
i
)
10
DEF(Op
j
) = USE(Op
i
) DEF(Op
j
) = . 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:
PROJ
1 PNO
PROJ
2 PNO
PROJ
3
(1)
Chọn bộ xử lý p
1
để thực hiện phép nối cho quan hệ trung gian PROJ‟:
PROJ‟
=
PROJ
1 PNO
PROJ
2
(2)
Chọn bộ xử lý p
2
để thực hiện phép nối
PROJ‟‟
=
PROJ
2 PNO
PROJ
3
(3)
Khi các tính toán này đã hoàn tất, chúng ta có thể thực hiện
PROJ‟
PNO
PROJ‟‟(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.
11
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ý.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.
12
CHƢƠ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:
13
Parbegin
Hoặc
Cobegin
S1;
S1;
S2;
S2;
Sn;
Sn;
Parend
Coend
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:
forall (i = 0; i < n; i++) {
S1;
S2;
Sn;
}
Hoặc for (i = 0; i < n; i++) do In Parallel
S1;
S2;
Sn;
} In Parallel
Cấu trúc lệnh Par
Nhiều ngôn ngữ song song có khả năng thực hiện những câu lệnh đồng thời,
nhƣ trong cấu trúc Par sau:
Par {
<câu lệnh 1>
<câu lệnh k>}
14
Từ 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 Gộp nhómGộp nhóm
Hình 2.5 Gộp nhóm theo thuật toán Ref
15
2.1.2. Đề xuất và thể hiện thuật toán phân mảnh lại
Thuật toán phân mảnh lại là ứng dụng cần thiết khi sử dụng CSDL phân
tán.Thuật toán này giúp ta chia dữ liệu thành từng mảnh với các tiêu chí khác nhau
phù hợp với yêu cầu sử dụng dữ liệu.Kết quả của việc phân mảnh lại giúp cho việc
thực hiện tra cứu dữ liệu nhanh và chính xác bên cạnh đó nó còn phục vụ hữu ích
cho quá trình nhân bản dữ liệu trong trƣờng hợp nhân bản 1 phần, khi đó việc phân
mảnh đã tạo ra đƣợc các mảnh theo tiêu chí và chỉ cần nhân bản 1 mảnh nào đó thay
vì phải nhân mảnh toàn bộ dữ liệu hoặc phải mất thời gian xử lý trƣớc khi nhân bản
dữ liệu.
2.2. Giải pháp trộn tập trung CM
2.2.1. Tổng quan giải pháp
Thuật toán thực hiện qua haibƣớc:
- Bƣớc 1: Mỗi nút thực hiện gộp nhóm các mẫu tin trên địa chỉ của nó.
- Bƣớc 2: Các giá trị gộp nhóm của mỗi nút đƣợc trộnlại ở một bộ điều
phối trung tâm đƣợc xác định trƣớc.
Ƣ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 mẫu tin kết quả lớn.
Ví dụ 2.2: Cho quan hệ Nhanvien nhƣ bảng 2.6. Thực hiện giải pháp trộn tập
trung ta có kết quả nhƣ hình 2.7.
Bảng 2.6Danh sáchnhân viên công ty
16
Hình 2.7 Kết quả trộn tập trung
2.2.2. Đề xuất và thể hiện thuật toán trộn tập trung
Thuật toán trộn tập trung có ƣu điểm thực hiện tốt với số mẫu tin nhỏ nên áp
dụng thuật toán với CSDL nhỏ để có thể tận dụng tối đa ƣu điểm. Tránh tình trạng
17
CSDL lớn sẽ có thể xảy ra hiện tƣợng “thắt cổ chai” làm tăng thời gian xử lý và
giảm tốc độ xử lý dữ liệu.
2.3. Giải pháp trộn phân tán DM
2.3.1. Tổng quan giải pháp
Giải pháp trộn này gồm 2 bƣớc sau:
- 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: Sau đó, các giá trị gộp nhóm riêng đƣợc phân mảnh theo hà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 thành 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 lũy trên tất cả các nút nên đòi
hỏi bộ nhớ phải lớn.
Ví dụ 2.3:Giả sử công ty TNHH Hoàng Hà có 3 trụ sở tại Hà Nội, Sài Gòn
và Đà Nẵng. Tại các chi nhánh công ty có danh sách nhân viên nhƣ bảng2.1.
Hãy đếm số lƣợng nhân viên trong công ty lần lƣợt theo bậc lƣơng: TS, KS,
CD.
Bảng 2.1 Danh sách nhân viên của công ty tại các chi nhánh
Ta có 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 2.6
18
Bacluong = TS
Bacluong = KS
Bacluong = CD
Hình 2.8 Gộp nhóm theo phƣơng pháp trộn phân tán
2.3.2. Đề xuất và thể hiện thuật toán trộn phân tán
Thuật toán trộn phân tán có thể áp dụng với CSDL lớn mà không sợ xảy ra
hiện tƣợng bế tắc và giảm thời gian xử lý vì tại mỗi vị trí luôn thực hiện gộp nhóm
dữ liệu theo 1 tiêu chí nào đó. Sau đó các nhóm đƣợc trộn một cách đồng thời. Tuy
nhiên cần phải có dung lƣợng bộ nhớ lớn khi áp dụng thuật toán này.
2.4 Kết luận chƣơng
Trong chƣơng 2 tôi đã trình bày đƣợc các thuật toán tách gộp song song trên
cơ sở dữ liệu phân tán thông qua các giải pháp: Giải pháp phân mảnh lại, giải pháp
trộn tập trung, giải pháp trộn phân tán.Với mỗi giải pháp tôi đã trình bày về tổng
quan giải pháp và đƣa ra ví dụ minh họa cụ thể.Qua mỗi phần trình bày lý thuyết
của các thuật toán giúp chúng ta hiểu thêm hơn thuật toán cũng nhƣ qua đó có thể
vận dụng linh hoạt hơn các thuật toán vào từng trƣờng hợp cụ thể mang lại hiệu quả
và lợi ích tốt nhất.
19
CHƢƠNG 3: ỨNG DỤNG TẠI CÔNG TY TNHH HOÀNG HÀ
3.1 Giới thiệu CSDL của công ty
Hệ thống CSDL của công ty dùng để quản lý các mảng dữ liệu công ty nhƣ:
nhân viên, dự án, lƣơng, …
Công ty TNHH Hoàng Hà có các chi nhánh tại Hà Nội, Đà Nẵng, Sài Gòn.
Do mỗi chi nhánh đặt tại 1 địa điểm khác nhau nên tại mỗi chi nhánh có lƣu
trữ dữ liệu tác nghiệp của chi nhánh đó. Ta có sơ đồ lƣu trữ đã phân tán và phân
mảnh giả định nhƣ hình 3.1.
Hà Nội Sài Gòn
Đà Nẵng
Môi trường mạng
CSDL2
CSDL1
CSDL3
Hình 3.1 Sơ đồ lƣu trữ dữ liệu phân tán
3.2 Tạo CSDL phân tán
- Sử dụng mô hình client/server
20
- Thực hiện nhân bản dữ liệu đầy đủ: Toàn bộ cơ sở dữ liệu sẽ đƣợc tạo trên
tất cảmỗi trạm.
Ƣu điểm: Điều này sẽ cải thiện tính sẵn sàng cao nhất vì nếu sự cố trên trạm
này thì vẫn có dữ liệu trên trạm khác và cải thiện hiệu nănglấy dữ liệu trên mạng
cho các truy vấn toàn bộvì dữ liệu sẽ đƣợc lấy từ các trạm cục bộ. Nhƣợc điểm: Các
thao tác cập nhập dữ liệu rất chậm vì phải copy, đồng bộ dữ liệu cho mọi trạm. Kỹ
thuật điểu khiển tƣơng tranh và phục hồi sẽ phức tạp hơn.
Dữ liệu tại HCM
Dữ liệu tại Đà Nẵng
Dữ liệu tại Hà Nội
Nhập dữ
liệu
Nhập dữ
liệu
Nhập dữ
liệu
Dữ liệu tại Hà Nội
(Server)
Tra cứu
Xem báo cáo
Tại HN
Tất cảTại ĐNTại HCM
Tại HCM
Tất cả
Dữ liệu tra
cứu
Dữ liệu báo
cáo
Hình 3.2 Sơ đồ xử lý dữ liệu
3.3 Demo giải pháp trộn phân tán
Triển khai chƣơng trình quản trị CSDL phân tán tại 3 chi nhánh của công ty:
Hà Nội, Đà Nẵng, Sài Gòn. Tại 3 chi nhánh đều cài đặt các ứng dụng giống nhau và
mỗi vị trí truy cập trực tiếp vào CSDL tại chi nhánh đó và kết nối đến các chi nhánh
khác.
3.3.1 Càiđặt chương trình demo
3.3.1.1 Các bảng Cơ sở dữ liệu demo
Bảng 3.1: Danh mục nhân viên Hà Nội (DANHMUC_HAN)
MaNV
TenNV
Luong
MaCN
Tham_nien
Chuc_vu
21
HANE1
Nguyen Huong Lan
CN
HAN
3
PGD
HANE2
Le Van Minh
TS
HAN
5
GD
HANE3
Le Quang Luong
KS
HAN
2
TP
HANE4
Nguyen Van Anh
CD
HAN
4
KT
HANE5
Mai Thi Lan
CN
HAN
3
TEST
HANE6
Duong Quang Dung
KS
HAN
1
LT
HANE7
Pham Thi Hong
TS
HAN
1
QL
HANE8
Vu Quang Vinh
KS
HAN
2
LT
HANE9
Hoang Minh Son
CD
HAN
2
LT
HANE10
Vu Trong Cuong
KS
HAN
3
LT
HANE11
Bui Tien Doan
KS
HAN
4
TEST
HANE12
Vu Trong Hoang
TS
HAN
4
KT
HANE13
Vu Quang Vinh
KS
HAN
5
QL
HANE14
Mai Thi Lan
TC
HAN
2
TEST
HANE15
Le Van Tuan
TC
HAN
2
HT
Bảng 3.2: Danh mục nhân viên Đà Nẵng (DANHMUC_DAN)
MaNV
TenNV
Ma_Luong
MaCN
Tham_nien
Chuc_vu
DANE1
Nguyen Thi Huong
CN
DAN
2
KT
DANE2
Le Quang Hieu
KS
DAN
4
TP
DANE3
Pham Van Son
TS
DAN
5
GD
22
DANE4
Duong Thi Mai
TS
DAN
4
PGD
DANE5
Do Van Anh
CN
DAN
4
QL
DANE6
Vu Thi Lien
CD
DAN
3
TEST
DANE7
Pham Thi Tram
TC
DAN
2
HT
DANE8
Le Huyen Trang
KS
DAN
3
LT
DANE9
Doan Tien Hung
KS
DAN
3
LT
Bảng 3.3: Danh mục nhân viên Sài Gòn (DANHMUC_HCM)
MaNV
TenNV
Ma_Luong
MaCN
Tham_nien
Chuc_vu
HCME1
Nguyen Huong Lan
CN
HCM
5
KT
HCME2
Pham Huong Lien
KS
HCM
2
TEST
HCME3
Le Van An
CN
HCM
3
LT
HCME4
Vu Van Minh
TS
HCM
5
GD
HCME5
Hoang Minh Son
KS
HCM
4
PGD
HCME6
Nguyen Tien Manh
CN
HCM
2
LT
HCME7
Ha Thi Le
CD
HCM
2
TEST
HCME8
Do The Thanh
TC
HCM
1
HT
HCME9
Pham Van Anh
CD
HCM
3
QL
Bảng 3.4: Danh mục Lƣơng (DANHMUC_LUONG)
STT
Bac luong
Luong
Ghu chu
1
TS
10000000
Lƣơng cơ bản cho bằng thạc sỹ
2
KS
7000000
Lƣơng cơ bản cho bằng kỹ sƣ
3
CN
5000000
Lƣơng cơ bản cho bằng cử nhân
4
CD
4000000
Lƣơng cơ bản cho bằng cao đẳng
5
TC
3000000
Lƣơng cơ bản cho bằng trung cấp
3.3.1.2 Màn hình giao diện chƣơng trình demo
23
a. Đầu tiên đăng nhập hệ thống
b. Màn hình trang chủ
Chƣơng trình giúp ngƣời quản trị CSDL và NSD thao tác trực tiếp tại chi
nhánh trên hệ thống thực hiện các thao tác thông qua màn hình giao diện nhƣ
sau:
Hình 3.4 Màn hình chính
c. Màn hình danh mục Nhân viên
Hình 3.5 Màn hình Danh mục nhân viên