Bài thu hoạch này, tôi xin giới thiệu về một mô hình đơn giản và toàn diện phản ảnh toàn bộ hành vi giao dịch của hệ thống cơ sở dữ liệu phân tán, và dựa vào mô hình này, trình bày một g
Trang 1LỜI CẢM ƠN
Tôi xin chân thành cảm ơn thầy Phó Giáo sư Tiến sĩ Đỗ Phúc đã tận tình hướng dẫn tôi trong suốt quá trình học tập và thực hiện bài thu hoạch
Trang 2 MỤC LỤC
B PHẦN MỞ ĐẦU 4
C PHẦN NỘI DUNG 5
I MÔ HÌNH PHÂN BỔ CƠ SỞ DỮ LIỆU PHÂN TÁN 5
1 Bài toán phân bổ phân mảnh 5
2 Các thông tin yêu cầu 5
3 Công thức tính chi phí 8
II THUẬT GIẢI HEURISTIC 9
1 Giải thuật Heuristic 9
2 Nhận xét 11
III CHƯƠNG TRÌNH PHÂN BỔ PHÂN MẢNH 12
D PHẦN KẾT LUẬN 14
E PHẦN TÀI LIỆU THAM KHẢO 15
Trang 3MỤC LỤC HÌNH
Hình 1: Ma trận RM, UM 6
Hình 2: Ma trận SEL, FREQ 6
Hình 3: Ma trận CTR 7
Hình 4: Chương trình phân bổ phân mảnh của cơ sở dữ liệu phân tán 13
Trang 4B PHẦN MỞ ĐẦU
Việc phân bổ các mảnh trên các site của một mạng WAN là một bài toán phức tạp Nó liên quan tới hiệu suất của toàn bộ hệ thống cơ sở dữ liệu phân mảnh
Bài thu hoạch này, tôi xin giới thiệu về một mô hình đơn giản và toàn diện phản ảnh toàn bộ hành vi giao dịch của hệ thống cơ sở dữ liệu phân tán, và dựa vào mô hình này, trình bày một giải thuật heuristic để tìm ra một phân bổ mảnh gần như tối ưu mà chi phí giao dịch được giảm gần như tối thiểu
Trang 5C PHẦN NỘI DUNG
I MÔ HÌNH PHÂN BỔ CƠ SỞ DỮ LIỆU PHÂN TÁN
1 Bài toán phân bổ phân mảnh
Giả sử mô hình mạng WAN ta có:
Tập site: S = {S1, S2, …, Sm} (biến đếm k)
Tập giao dịch (transaction): T = {T1, T2, , Tq} (biến đếm i)
Tập phân mảnh (fragment): F = {F1, F2, , Fn} (biến đếm j)
Một thiết kế bố trí các phân mảnh Fj lên các site Sk là tối ưu sao cho:
- 1 Giảm tối thiểu chi phí: các chi phí bao gồm chi phí lưu trữ mỗi Fj trên mỗi site Sk, chi phí truy vấn và cập nhật Fj trên Sk trên toàn bộ hệ thống, chi phí truyền thông dữ liệu
- 2 Hiệu suất: giảm thiểu thời gian đáp ứng, và tối đa hóa hệ thống
Mô hình được xây dựng trong bài thu hoạch là mô hình phân bổ nhằm giảm tối thiểu chi phí
Đối với mạng WAN băng thông hạn chế 50 Kbps, thì chi phí hệ thống như thời gian truy cập các thiết bị ngoại vi I/O và thời gian xữ lý của CPU không phải
là yếu tố chính được xem xét Vì vậy, bài toán được đơn giản hóa thành bài toán phân bổ mảnh để giảm tối thiểu chi phí truyền thông
2 Các thông tin yêu cầu
a Thông tin về dữ liệu
Kích thước dữ liệu của các phân mảnh: size(Fj)
Trang 6b Thông tin về các giao dịch
Ma trận RM (Retrieval matrix), UM (Update matrix):
Ma trận RM mô tả hành vi truy vấn (read) và ma trận UM mô tả hành vi cập nhật (update) của giao dịch Mỗi phần tử rij của ma trận phản ánh tần số truy cập của phân mảnh Fj trong giao dịch Ti
Hình 1: Ma trận RM, UM Theo hình thì, giao dịch T3 truy vấn mảnh F3 3 lần và cập nhật mảnh F1 2 lần, F2 1 lần, F4 1 lần cho một lần thực hiện
Ma trận SEL (Selectivity matrix):
Khi một giao dịch truy cập một phân mảnh thì không phải toàn bộ phân mảnh đó được truy vấn hay cập nhật Ma trận SEL thể hiện tỉ lệ phần trăm của mảnh khi được giao dịch truy cập
Ma trận FREQ (Frequency matrix):
Ma trận FREQ thể hiện tần xuất thực hiện của giao dịch Ti trên Sk
Hình 2: Ma trận SEL, FREQ
Trang 7c Thông tin về site
Thông tin về khả năng lưu trữ và xữ lý của mỗi site Để đơn giản thì mô hình
sẽ không xem xét vấn đề này
d Thông tin về mạng
Chi phí truyền thông trên mạng WAN được quyết định bởi 2 yếu tố chính
Cini: chi phí tạo 1 gói dữ liệu có kích thước p_size
Ma trận CTR (Communication cost matrix): với CTRi là chi phí truyền một đơn vị dữ liệu từ site Si tới site Sj
Theo đó, ta có chi phí truyền tin của m_size dữ liệu từ site Si tới site Sj là
Để đơn giản hóa mô hình, ta xem ma trận CTR là đối xứng
Hình 3: Ma trận CTR Trong một mạng WAN, trước khi một giao dịch yêu cầu dữ liệu của phân mảnh từ xa thì nó phải tạo ra ảo mạch (virtual circuit) để kết nối với site chứa phân mảnh đó Trong suốt thời gian giao dịch, ảo mạch được sử dụng để gửi các yêu cầu và nhận trả lời Khi kết thúc giao dịch, ảo mạch sẽ được đóng lại
Chi phí xây dựng ảo mạch là VCini
Trang 8e Thông tin phân bổ
Ma trận FAT phản ảnh sự phân bổ của các phân mảnh trên các site, với
1 nếu Fj ∈ Sk FATj,k =
3 Công thức tính chi phí
Dựa vào những thông tin được cung cấp bởi mục 2, ta sẽ tìm ra một phân bổ tối ưu với tổng chi phí truyền thông là tối thiểu có thể được
Công thức tính tối thiểu tổng chi phí truyền thông là:
Min(CCload + CCproc) (2)
CCload chi phí nạp bản sao của mảnh trước khi giao dịch được xử lý
SI tải các bản sao trên toàn bộ mạng
CCproc chi phí truyền thông cho việc xử lý giao dịch
• TRi: chi phí cho hành vi truy vấn của giao dịch
Do một phân mảnh ở nhiều site khác nhau, nên khi một giao dịch Ti thực hiện ở site Sk truy vấn tới phân mảnh Fj thì sẽ chọn tải Fj từ một site nào đó trong
hệ thống sao cho chi phí truyền thông là tối thiểu
Trang 9• TUi: chi phí cho hành vi cập nhật của giao dịch
Ngược lại với hành vi truy vấn, hành vi cập nhật phân mảnh Fj của một giao dịch Ti phải được cập nhật trên tất cá các site mà có phân mảnh Fj
• VCini: Chi phí xây dựng ảo mạch
II THUẬT GIẢI HEURISTIC
1 Giải thuật Heuristic
Đầo vào:
RM(trans,frag); /* Retrieval matrix nxq*/
UM(trans,frag); /* Update matrix nxq*/
SEL(trans,frag); /* Selectivity matrix nxq */
FREQ(trans,site); /* Frequency matrix mxq */
CTR(site,site); /* Communication cost matrix mxm*/
size(frag) /* n */
(p_size, Cinit)
Đầu ra:
FAT(frag,site); /* Fragment allocation table nxm */
Function:
Benefit(frag,site); /* Chi phí tiết kiệm được khi bỏ frag từ site */
Begin
return Benefit;
End
Function:
Cost(frag,site); /* Chi phí tăng lên khi bỏ frag từ site */
Begin
For Sk in S do
Trang 10n = LeastNetworkDelay(frag,Sk);
if ( n = site )
/* Nếu ở Sk mà frag không được truy vấn từ site thì không phát sinh chi phí tăng lên nếu ta bỏ frag đó ra khỏi site */
begin
/* chi phí truy vấn frag ở site Sk khi mà frag chưa bỏ ra khỏi site */
n1 = NextLeastNetworkDelay(frag,site,Sk);
/* chi phí truy vấn frag ở site Sk khi mà frag bỏ ra khỏi site */
Cost = Cost + (T2 - T1);
end end
return Cost;
End
Function:
LeastNetworkDelay(frag,Sk)
/* Trả về Site mà truy vấn frag về cho site Sk cho trước mà tốn chi phí truyền
thông thấp nhất */
/* */
Function:
NextLeastNetworkDelay(frag,site,Sk)
/* Trả về Site mà truy vấn frag về cho site Sk cho trước mà tốn chi phí truyền thông thấp nhất khi ta đã bỏ frag ra khỏi site */
/* */
Function:
MinDelay(frag) ;
/* Trả về site mà frag sẽ được phân bổ với chi phí cập nhật là thấp nhất */
/* */
Function:
NumFragCopy(frag); /* Trả về số lượng frag trên hệ thống */
/* */
Trang 11Bước 1 /* Khởi tạo FAT mà có chi phí truyền thông tốt nhất cho hành vi truy vấn
của giao dịch*/
For Ti in T, Fj in F, Sk in S do
if (RM(Ti,Fj)*FREQ(Ti,Sk) > 0)
FAT(Fj,Sk) = 1;
Bước 2 /* Kiểm tra phân mảnh nào có thể bỏ ra được khỏi site */
For Fj in F do
While (NumFragCopy(Fj) > 1)
begin
Chọn site Sk mà FAT(Fj,Sk)=1và chi phí giảm được
là tối đa max(S)(Benefit(Fj,Sk)-Cost(Fj,Sk));
if ((Benefit(Fj,Sk) _ Cost(Fj,Sk)) > 0)
FAT(Fj,Sk) = 0
else
break;
/* khi không còn site nào mà bỏ frag ra sẽ giảm được chi phí */
end Bước 3 /* Nếu phân mảnh chưa được phân bố vì không có thao tác truy vấn,
nhưng có thao tác cập nhật bởi một số giao dịch thì sẽ được phân bổ với chi phí cập nhật thấp nhất */
For Fj in F do
if (NumFragCopy(Fj) = 0 and UM(Ti,Fj) > 0)
begin
Sk = MinDelay(Fj) FAT(Fj,Sk) = 1;
end End
2 Nhận xét
Độ phức tạp của thuật toán là O(nqm2)
Thuật giải gồm 3 bước:
Bước 1: Khởi tạo ma trận FAT mà không tốn chi phí cho các hành vi truy vấn của giao dịch, bằng cách cho các mảnh được phân bố trên tất cả những site
mà có giao dịch truy vấn mảnh đó trên site đó Như vậy ở bất kì site nào khi có giao dịch truy vấn của phân mảnh nào đó, thì phân mảnh đó cũng đã ở trên site,
do đó chi phí truyền thông cho hành vi truy vấn của giao dịch bằng không nhưng như vậy sẽ tăng chi phí truyền thông cho hành vi cập nhật của giao dịch
Trang 12Bước 2: Lần lượt loại bỏ các mảnh đã được phân bố trên các site ở ma trận FAT xây dựng ở bước 1, sao cho giảm được tối đa chi phí phát sinh sau khi loại
bỏ, hoặc chỉ còn duy nhất một phân bổ của mảnh đó trên hệ thống
Khi loại bỏ một mảnh ra khỏi một site thì ta sẽ giảm được chi phí cập nhật của tất cả các giao dịch ở site khác lên site đó, nhưng lại tăng chi phí truy vấn nếu có từ các giao dịch mà có truy vấn tới phân mảnh này Chi phí truy vấn phát sinh thêm của những giao dịch trên một site tới phân mảnh đang xét tùy thuộc vào truy vấn phân mảnh đó sẽ thực hiện truy vấn từ site nào (site được chọn là site có chi phí truyền thông tối thiểu từ site đó đến site đang xét) Nếu là site mà
ta đang xét để loại bỏ phân mảnh ra khỏi thì sẽ phát sinh thêm chi phí, còn ngược lại thì không phát sinh thêm chi phí
Bước 3: Nếu có những phân mảnh không được truy vấn mà được cập nhật bởi giao dịch, thì phân bổ phân mảnh đó trên một site sao cho chi phí truyền thông của hành vi cập nhật của tất cả các giao dịch (benifit) là ít nhất
Ta có thể cải tiến thuật giải ở một số chi tiết như:
• Nếu Sk = site thì ta cho luôn T1 = 0
• Ta có thế tính đệm trước minsize(Ti,Fj)
III CHƯƠNG TRÌNH PHÂN BỔ PHÂN MẢNH
Chương trình viết bằng Visual Studio 2012 nên cần cài đặt NET Framework 4.0 để chạy
Nhập các ma trận RM(TxF), UM(TxF), SEL(TxF), FREQ(TxS), CTR(SxS),
và size(1xF) tương ứng vào các file text trong cùng thư mục của chương trình Sau khi nhập xong, nút LOAD để tải lại dữ liệu từ file
Sau đó nhấn nút TÍNH để chương trình tính ra ma trận FAT(FxS) cần tìm
Trang 13Mặc định Cini = 1, p_size = 1 trong code (có thể thay đổi cho phép nhập liệu nếu thích)
Hình 4: Chương trình phân bổ phân mảnh của cơ sở dữ liệu phân tán
Trang 14D PHẦN KẾT LUẬN
Bài toán thiết kế phân bổ phân mảnh trong cơ sở dữ liệu phân tán là một bài toán phức tạp, có rất nhiều cách giải tiệm cận tối ưu như giải thuật heuristic, giải thuật di truyền
Giải thuật heuristic trên mô hình đơn giản hóa vừa được trình bày gần như cho ra một kết quả tối ưu Tuy nhiên, có những khía cạnh ta chưa đề cập tới như phân mảnh được truy vấn bởi giao dịch chưa xét tới sự ảnh hưởng của thế giới thực, hiệu quả, độ phức tạp của giải thuật
Trang 15E PHẦN TÀI LIỆU THAM KHẢO
[1] PGS.TS Đỗ Phúc, các bài giảng về Cơ sở dữ liệu phân tán, Thiết kế và tối ưu
[2] M Tamer Özsu, Patrick Valduriez, Principles of Distributed Database Systems, 2011
[3] Yin-Fu Huang, Jyh-Her Chen, Fragment Allocation in Distributed Database Design, 2001
[4] Wikipedia, Distributed Database,
http://en.wikipedia.org/wiki/Distributed_database
[5] Andrey Popov Hamburg, Genetic Algorithms For Optimization, 2005