Tải bản đầy đủ (.pdf) (66 trang)

Nghiên cứu vấn đề cấp phát mảnh trên các vị trí trong cơ sở dữ liệu phân tán

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.09 MB, 66 trang )

1

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC LẠC HỒNG

LÊ THỊ NGỌC HIẾU

NGHIÊN CỨU VẤN ĐỀ
CẤP PHÁT MẢNH TRÊN CÁC VỊ TRÍ
TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

ĐỒNG NAI, 2013


2

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC LẠC HỒNG

LÊ THỊ NGỌC HIẾU

NGHIÊN CỨU VẤN ĐỀ
CẤP PHÁT MẢNH TRÊN CÁC VỊ TRÍ
TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Chuyên ngành: Công nghệ thông tin
Mã số: 60.48.02.01



Người hướng dẫn khoa học: PGS.TS. Đỗ Phúc

Đồng Nai, 2013


-1-

MỞ ĐẦU

1. Đặt vấn đề
Trong những năm gần đây, đã có những tiến bộ đáng kể trong sự phát triển của
các hệ thống mạng máy tính. Cùng với xu thế toàn cầu hóa trong mọi lĩnh vực, đặc
biệt là về thương mại, cơ sở dữ liệu (CSDL) phân tán đã trở thành một lĩnh vực thu
hút nhiều sự quan tâm của các nhà nghiên cứu lý thuyết lẫn các nhà sản xuất phần
mềm.
Công nghệ về các hệ CSDL phân tán là sự hợp nhất của hai hướng tiếp cận đối
với quá trình xử lý dữ liệu: công nghệ CSDL và công nghệ mạng máy tính. Chúng
ta có thể hiểu một hệ CSDL phân tán là một CSDL có thể được lưu trữ trong nhiều
máy tính đặt tại các vị trí vật lý khác nhau, hoặc có thể được phân tán qua một
mạng lưới các máy tính kết nối với nhau.
Như vậy, một hệ CSDL phân tán không phải là một hệ thống mà trong đó
CSDL lại chỉ nằm ở một nút của mạng. Trong một số tình huống, người ta cho rằng
CSDL cần được nhân bản để lưu trữ tại các nút khác trong mạng sẽ tốt hơn là phải
tải khối lượng dữ liệu đó từ vị trí trung tâm đến các vị trí khác. Tuy nhiên nếu cần
thiết phải cập nhật dữ liệu thì khi nhân bản quá nhiều đòi hỏi phải cài đặt các nghi
thức điều khiển đồng thời và ủy thác hợp lý. Vì thế vấn đề khó khăn trong việc thiết
kế CSDL phân tán là giải bài toán cấp phát dữ liệu (fragment allocation) trên các vị
trí (site) sao cho hợp lý.
Bài toán này thuộc loại NP-hard, vì vậy các giải pháp được đề xuất trước đây

đều dựa trên các thuật giải heuristic. Trong [8], March và Rho đưa ra phương pháp
tiếp cận theo thuật giải di truyền. Park và Baik đề xuất phương pháp dựa trên xác
suất và kết hợp với thuật giải di truyền (xem [9]). Theo Yin-Fu Huang and Jyh-Her
Chen trong [12]: “Mặc dù một số lượng lớn các nhà nghiên cứu đã đề xuất các mô
hình và thuật toán phân bổ các mảnh trong một cơ sở dữ liệu phân tán, hầu hết các


-2-

mô hình của họ là rất phức tạp và chưa được hiểu rõ. Vì vậy, rất khó khăn để sử
dụng chúng trong thực tế”. Năm 2008, Hassan I. Abdalla trình bày thuật toán bố trí
mảnh dựa trên thuật toán tham lam (xem [1]). Năm 2009 trong [5]
Karimi Adl R and Rouhani Rankoohi SMT đưa ra thuật toán bố trí mảnh dựa trên
thuật toán đàn kiến. Năm 2012, Hassan I. Abdalla đã viết trong bài báo [2]
“Phương pháp xác suất và phương pháp heuristic là một trong số các tiếp cận khác
nhau mà các nhà nghiên cứu đã áp dụng để giải quyết vấn đề bố trí mảnh. Phương
pháp xác suất cho nhiều kịch bản có thể tìm thấy một giải pháp tối ưu, nhưng nó rất
là tốn kém. Trong khi các tiếp cận theo phương pháp heuristic dẫn đến giải pháp
gần tối ưu và hiếm khi gặp một giải pháp tối ưu.” Trong bài báo này
Hassan I. Abdalla đề xuất mô hình kết hợp cả hai phương pháp heuristic và phương
pháp xác suất.
2. Mục tiêu của luận văn
Mục tiêu của luận văn là nghiên cứu các phương pháp giải bài toán cấp phát
dữ liệu trong CSDL phân tán, cài đặt chương trình, thực nghiệm các ví dụ minh họa,
tìm giải pháp tối ưu.
3. Phương pháp nghiên cứu
Luận văn nghiên cứu giải bài toán tối ưu theo 2 phương pháp:
-

Phương pháp giải bài toán tối ưu theo thuật giải di truyền: thuật giải di truyền là

thuật giải heuristic nên kết quả tìm được là tốt nhưng chưa thể là tốt nhất.

-

Phương pháp giải bài toán tối ưu theo mô hình qui hoạch tuyến tính: thuật giải
của phương pháp này rất đơn giản nhưng kết quả tìm được lại tối ưu nhất.
4. Các chương mục của luận văn
Bố cục của phần nghiên cứu trong luận văn này được trình bày như sau :
Mở đầu.
Chương 1: Đề cập đến lý thuyết về CSDL phân tán. Trình bày rõ 2 khía cạnh
quan trọng khi thiết kế CSDL phân tán là phân mảnh và cấp phát.


-3-

Chương 2: Giới thiệu nội dung, phương pháp giải bài toán tối ưu theo thuật giải
di truyền và theo mô hình qui hoạch tuyến tính.
Chương 3: Nêu bài toán cấp phát tổng quát, đề xuất, cài đặt chương trình để giải
bài toán theo 2 phương pháp trên.
Chương 4: Thực nghiệm, so sánh kết quả trên 2 bài toán cụ thể, đưa ra nhận xét,
tìm giải pháp tối ưu.
Chương 5: Kết luận


-4-

CHƯƠNG 1

HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN
1.1 HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN

Hệ CSDL phân tán là một CSDL, trong đó các phần của CSDL được lưu trữ
trên nhiều máy tính trong một mạng. Người sử dụng có thể truy cập vào các phần
của CSDL có liên quan đến nhiệm vụ của mình, tại vị trí (site) của họ, mà không
cần sự can thiệp của những người khác.
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ý
CSDL phân tán như thể tất cả dữ liệu được lưu trữ trên cùng một máy tính. Hệ quản
trị CSDL phải đồng bộ tất cả các dữ liệu trong trường hợp mà nhiều người sử dụng
truy cập vào cùng một dữ liệu. Đảm bảo khi người sử dụng thực hiện cập nhật và
xóa trên các dữ liệu tại một địa điểm sẽ tự động được phản ánh trong các dữ liệu
được lưu trữ ở những nơi khác.

Hình 1.1 Mô hình CSDL phân tán
(Nguồn />

-5-

1.2 CÁC ĐẶC ĐIỂM CHÍNH CỦA CƠ SỞ DỮ LIỆU PHÂN TÁN
1.2.1 Chia sẻ tài nguyên
Việc chia sẻ tài nguyên của hệ CSDL phân tán được thực hiện thông qua
mạng truyền thông. Để chia sẻ tài nguyên một cách có hiệu quả thì mỗi tài nguyên
cầ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 có
thể được truy cập, cập nhật một cách tin cậy và nhất quán. Quản lý tài nguyên ở đây
là lập kế hoạch dự phòng, đặt tên cho các lớp tài nguyên, cho phép tài
nguyên được truy cập từ nơi này đến nơi khác, ánh xạ lên tài nguyên vào địa chỉ
truyền thông, ...
1.2.2 Tính mở
Tính mở của hệ thống máy tính là dễ dàng mở rộng phần cứng (thêm các thiết
bị ngoại vi, bộ nhớ, các giao diện truyền thông ...) và các phần mềm (các mô hình hệ
điều hành, các giao thức truyền tin, các dịch vụ chung tài nguyên... ) Một hệ CSDL
phân tán có tính mở là hệ có thể được tạo từ nhiều loại phần cứng và phần mềm của

nhiều nhà cung cấp khác nhau với điều kiện là các thành phần này phải theo một
tiêu chuẩn chung.
Tính mở của hệ CSDL phân tán được xem như là mức độ bổ sung các dịch vụ
dùng chung tài nguyên mà không phá hỏng hay nhân đôi các dịch vụ đang tồn tại.
Tính mở được hoàn thiện bằng cách xác định hay phân định rõ các giao diện chính
của một hệ và làm cho nó tương thích với các nhà phát triển phần mềm.
1.2.3 Khả năng song song
Hệ CSDL 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ó thể có một hay nhiều CPU. Trong cùng một thời điểm nếu có N tiến
trình cùng tồn tại, ta nói chúng thực hiện đồng thời. Việc thực hiện tiến trình theo cơ
chế phân chia thời gian (một CPU) hay song song (nhiều CPU). Khả năng làm việc
song song trong hệ CSDL phân tán được thực hiện do hai tình huống sau:
- Nhiều người sử dụng đồng thời ra các lệnh hay các tương tác với các
chương trình ứng dụng.


-6-

- Nhiều tiến trình Server chạy đồng thời, mỗi tiến trình đáp ứng các yêu cầu từ
các tiến trình Client khác.
1.2.4 Khả năng khứ lỗi
Việc thiết kế khả năng khứ lỗi của các hệ thống máy tính dựa trên hai giải
pháp cơ bản sau:
- Dùng khả năng thay thế để đảm bảo sự hoạt động liên tục và hiệu quả.
- Dùng các chương trình hồi phục khi xảy ra sự cố.
Xây dựng một hệ thống có thể khắc phục sự cố theo cách thứ nhất thì người ta
nối hai máy tính với nhau để thực hiện cùng một chương trình, một trong hai máy
chạy ở chế độ Standby (không tải hay chờ). Giải pháp này tốn kém vì phải nhân đôi
phần cứng của hệ thống. Một giải pháp để giảm phí tổn là các Server riêng lẻ được
cung cấp các ứng dụng quan trọng để có thể thay thế nhau khi có sự cố xuất hiện.

Khi không có các sự cố các Server hoạt động bình thường, khi có sự cố trên một
Server nào đó, các ứng dụng Clien tự chuyển hướng sang các Server còn lại.
Cách hai thì các phần mềm hồi phục được thiết kế sao cho trạng thái dữ liệu
hiện thời (trạng thái trước khi xảy ra sự cố) có thể được khôi phục khi lỗi được phát
hiện.
Các hệ CSDL phân tán cung cấp khả năng sẵn sàng cao để đối phó với các sai
hỏng phần cứng.
1.2.5 Tính trong suốt
Tính trong suốt của một hệ CSDL phân tán được hiểu như là việc che khuất
đ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.
1.2.5.1 Tính trong suốt về vị trí
Người sử dụng không cần biết vị trí vật lý của dữ liệu. Người sử dụng có
quyền truy cập tới đến CSDL nằm bất kỳ tại vị trí nào. Các thao tác lấy, cập nhật dữ
liệu tại một điểm dữ liệu ở xa được tự động thực hiện bởi hệ thống tại điểm đưa ra
yêu cầu, người sử dụng không cần biết đến sự phân tán của CSDL trên mạng.


-7-

1.2.5.2 Tính trong suốt trong việc sử dụng
Việc chuyển đổi của một phần hay toàn bộ CSDL do thay đổi về tổ chức hay
quản lý, không ảnh hưởng tới thao tác người sử dụng.
1.2.5.3 Tính trong suốt của việc phân chia
Nếu dữ liệu được phân chia do tăng tải, nó không được ảnh hưởng tới người
sử dụng.
1.2.5.4 Tính trong suốt của sự trùng lập
Nếu dữ liệu trùng lặp để giảm chi phí truyền thông với CSDL hoặc nâng cao
độ tin cậy, người sử dụng không cần biết đến điều đó.
1.2.6 Đảm bảo tin cậy và nhất quán

Hệ thống yêu cầu độ tin cậy cao, sự bí mật của dữ liệu phải được bảo vệ, các
chức năng khôi phục hư hỏng phải được đảm bảo. Ngoài ra yêu cầu của hệ thống về
tính nhất quán cũng rất quan trọng trong thể hiện, không được có mâu thuẫn trong
nội dung dữ liệu. Khi các thuộc tính dữ liệu là khác nhau thì các thao tác vẫn phải
nhất quán.
1.3 MỤC ĐÍCH CỦA VIỆC SỬ DỤNG CSDL PHÂN TÁN
- Xuất phát từ yêu cầu thực tế về tổ chức và kinh tế: Trong thực tế nhiều tổ
chức là không tập trung, dữ liệu ngày càng lớn và phục vụ cho đa người dùng nằm
phân tán, vì vậy CSDL phân tán là con đường thích hợp với cấu trúc tự nhiên của
các tổ chức đó. Đây là một trong những yếu tố quan trọng thức đẩy việc phát triển
CSDL phân tán.
- Sự liên kết các CSDL địa phương đang tồn tại: CSDL phân tán là giải pháp
tự nhiên khi có các CSDL đang tồn tại và sự cần thiết xây dựng một ứng dụng toàn
cục. Trong trường hợp này CSDL phân tán được tạo từ dưới lên dựa trên nền tảng
CSDL đang tồn tại. Tiến trình này đòi hỏi cấu trúc lại các CSDL cục bộ ở một mức
nhất định. Dù sao, những sửa đổi này vẫn là nhỏ hơn rất nhiều so với việc tạo lập
một CSDL tập trung hoàn toàn mới.


-8-

- Làm giảm tổng chi phí tìm kiếm: Việc phân tán dữ liệu cho phép các nhóm
làm việc cục bộ có thể kiểm soát được toàn bộ dữ liệu của họ. Tuy vậy, tại cùng thời
điểm người sử dụng có thể truy cập đến dữ liệu ở xa nếu cần thiết. Tại cácvị trí cục
bộ, thiết bị phần cứng có thể chọn sao cho phù hợp với công việc xử lý dữ liệu cục
bộ tại điểm đó.
- Sự phát triển mở rộng: Các tổ chức có thể phát triển mở rộng bằng cách
thêm các đơn vị mới, vừa có tính tự trị, vừa có quan hệ tương đối với các đơn vị tổ
chức khác. Khi đó giải pháp cơ sở dữ liệu phân tán hỗ trợ một sự mở rộng uyển
chuyển với một mức độ ảnh hưởng tối thiểu tới các đơn vị đang tồn tại

- Trả lời truy vấn nhanh: Hầu hết các yêu cầu truy vấn dữ liệu từ người sử
dụng tại bất kỳ vị trí cục bộ nào đều thoả mãn dữ liệu ngay tại thời điểm đó.
- Độ tin cậy và khả năng sử dụng nâng cao: nếu có một thành phần nào đó
của hệ thống bị hỏng, hệ thống vẫn có thể duy trì hoạt động.
- Khả năng phục hồi nhanh chóng: Việc truy nhập dữ liệu không phụ thuộc
vào một máy hay một đường nối trên mạng. Nếu có bất kỳ một lỗi nào hệ thống có
thể tự động chọn đường lại qua các đường nối khác.
1.4 CÁC VẤN ĐỀ KHI THIẾT KẾ CSDL PHÂN TÁN
Câu hỏi đang được tập trung giải quyết là làm thế nào để CSDL và các ứng
dụng chạy trên nó có thể được đặt ở nhiều vị trí. Hai khía cạnh quan trọng cần phải
chú ý đến khi thiết kế hệ thống CSDL phân tán là phân mảnh (fragmentation), nghĩa
là tách CSDL thành nhiều phần, được gọi là các mảnh (fragment), và phân bố
(distribution) là việc cấp phát (allocation) các mảnh sao cho tối ưu. (xem hình 1.2)
- Phân mảnh: Mỗi quan hệ có thể được chia thành một số các mảnh nhỏ, các
mảnh đó sẽ nằm rãi rác tại các vị trí khác nhau.
- Nhân bản và cấp phát: Các mảnh sẽ được nhân bản thành các bản sao giống
hệt nhau và được cấp phát đến các vị trí trên mạng sao cho sự cấp phát này là tối
ưu.


-9-

Hình 1.2 Phân mảnh và lưu trữ trên các vị trí
Khi thiết kế CSDL phân tán, cần quan tâm đến các vấn đề liên quan với nhau
sau đây :
-

CSDL được phân mảnh như thế nào ?

-


Có bao nhiêu bản sao của các mảnh cần được nhân rộng ?

-

Các mảnh được cấp phát vào các vị trí nào trên mạng ?

-

Những thông tin nào sẽ cần thiết cho việc phân mảnh và cấp phát ?

1.5 PHÂN MẢNH
1.5.1 Các lý do phân mảnh
Người ta phân mảnh và lưu trữ CSDL phân tán vì các lý do sau:
Thứ nhất là làm giảm không gian lưu trữ. Khung nhìn của các ứng dụng
thường chỉ là một tập con của quan hệ. Vì thế đơn vị truy xuất chỉ là các tập con của
quan hệ không phải là toàn bộ quan hệ. Do đó tập con của quan hệ sẽ là đơn vị
phân tán thích hợp nhất.
Thứ hai, làm tăng lưu lượng hoạt động của hệ thống. Việc phân rã một quan
hệ thành nhiều mảnh, mỗi mảnh được xử lý như một đơn vị, sẽ cho phép thực hiện
nhiều giao dịch đồng thời. Ngoài ra việc phân mảnh các quan hệ sẽ cho phép thực
hiện song song một câu vấn tin bằng cách chia nó ra thành một tập các câu vấn tin


-10-

con hoạt tác trên các mảnh. Vì thế việc phân mảnh sẽ làm tăng mức độ hoạt động
đồng thời.
1.5.2 Các kiểu phân mảnh
Có 3 phương pháp phân mảnh (xem hình 1.3):

-

Phân mảnh ngang: mảnh là một phần của các bộ (tuples) trong quan hệ.

-

Phân mảnh dọc: mảnh là một phần của các thuộc tính (atributes) trong quan
hệ.

-

Phân mảnh hỗn hợp : là sự kết hợp giữa phân mảnh ngang và phân mảnh dọc.

Phân mảnh ngang

Phân mảnh dọc

Phân mảnh hỗn hợp

Hình 1.3. Các kiểu phân mảnh
Ví dụ : Cho lược đồ CSDL :
EMP (ENO, ENAME, TITLE)
ASG (ENO, PNO, RESP, DUR)
PROJ (PNO, PNAME, BUGGET, LOC)
PAY (TITLE, SAL)


-11-

ASG

ENO PNO
RESP
E1
P1 Manager
E2
P1 Analyst
E2
P2 Analyst
E3
P3 Consultant
E3
P4 Engineer
E4
P2 Programmer
E5
P2 Manager
E6
P4 Manager
E7
P3 Engineer
E8
P3 Manager
EMP
ENO ENAME
E1
J. Doe
E2
M. Smith
E3 A. Lee
E4

J. Miller
E5
B. Casey
E6
L. Chu
E7
R. David
E8
J. Jones

DUR
12
24
6
10
48
18
24
48
36
40

TITLE
Elec. Eng.
Syst. Anal.
Mech. Eng.
Programmer.
Syst. Anal.
Elect. Eng.
Mech. Eng.

Syst. Anal.

PROJ
PNO
P1
P2
P3
P4

LOC
PNAME
BUDGET
Montreal
Instrumentation
150000
New York
Database Develop 135000
New York
CAD/CAM
250000
Paris
Maintenance
310000
PAY
TITLE
Elec. Eng.
Syst. Anal.
Mech. Eng.
Programmer.


SAL
40000
34000
27000
24000


-12-

Ví dụ : Phân mảnh ngang
Quan hệ PROG được phân thành 2 mảnh ngang :
- PROJ1: chứa thông tin về các dự án có ngân sách (BUGGET) < 200000.
- PROJ2: chứa thông tin về các dự án có ngân sách (BUGGET)  200000.
PROJ1
PNAME

PNO

BUDGET

LOC

P1

Instrumentation

150000

Montreal


P2

Database Develop

135000

New York

PNAME

BUDGET

LOC

PROJ2
PNO
P3

CAD/CAM

250000

New York

P4

Maintenance

310000


Paris

Ví dụ : Phân mảnh dọc
Quan hệ PROG được phân thành 2 mảnh dọc :
- PROJ3: chứa thông tin về ngân sách (BUGGET) các dự án.
- PROJ4: chứa thông tin về tên (PNAME) và vị trí (LOC) các dự án.
PROJ3

PROJ4

PNO BUDGET

PNO

PNAME

LOC

P1

150000

P1

Instrumentation

Montreal

P2


135000

P2

Database Develop

New York

P3

250000

P3

CAD/CAM

New York

P4

310000

P4

Maintenance

Paris


-13-


Ví dụ : Phân mảnh hỗn hợp
Quan hệ PROJ4 được phân thành 3 mảnh ngang:
- PROJ4-1: chứa thông tin về mã, tên của các dự án ở (LOC) “Montreal”
- PROJ4-2: chứa thông tin về mã, tên của các dự án ở (LOC) “New York”
- PROJ4-3: chứa thông tin về mã, tên của các dự án ở (LOC) “Paris”
PROJ
Phân mảnh dọc
PROJ4

PROJ3
Phân mảnh ngang
PROJ4-1

PROJ4-2

PROJ4-3

PROJ = PROJ3  ( PROJ4-1  PROJ4-2  PROJ4-3)
* Phân mảnh ngang được định nghĩa như là phép chọn F(R) trong đại số quan
hệ.
PROJ1= BUDGET<200000(PROJ)
PROJ2= BUDGET200000(PROJ)
* Phân mảnh dọc được định nghĩa như là phép chiếu  A(R) trong đại số quan hệ.
PROJ3=  PNO, BUDGET(PROJ)
PROJ4=  PNO, PNAME, LOC(PROJ)
* Phân mảnh hỗn hợp được định nghĩa gồm phép chiếu và phép chọn trong đại
số quan hệ F( A1, ..., An(R)) hoặc  A1, ..., An(F(R))
PROJ4-1= LOC=”Montreal”( PNO, PNAME, LOC (PROJ)
PROJ4-2= LOC=”New York” ( PNO, PNAME, LOC (PROJ)

PROJ4-3= LOC=”Paris” ( PNO, PNAME, LOC (PROJ)


-14-

1.5.3 Các qui tắc phân mảnh đúng đắn
Chúng ta sẽ tuân thủ ba quy tắc trong khi phân mảnh để bảo đảm rằng CSDL
sẽ không có thay đổi nào về ngữ nghĩa khi phân mảnh.
1.5.3.1 Tính đầy đủ (Completeness)
Nếu một thể hiện quan hệ R được phân rã thành các mảnh R1, R2,…,Rn, thì
mỗi mục dữ liệu có thể gặp trong R cũng có thể gặp trong một hoặc nhiều mảnh Ri.
1.5.3.2 Tính tái thiết được (Reconstruction)
Nếu một thể hiện quan hệ R được phân rã thành các mảnh R1, R2,…,Rn, thì
cần phải định nghĩa một toán tử quan hệ  sao cho có thể thiết lập lại quan hệ R từ
các mảnh Ri. R= R1  R2 ..... Rn
1.5.3.3 Tính tách biệt (Disjointness)
Nếu quan hệ R được phân rã ngang thành các mảnh R1, R2,…,Rn, và mục dữ
liệu di nằm trong mảnh Rj, thì nó sẽ không nằm trong mảnh Rk khác ( k j). Tiêu
chuẩn này đảm bảo các mảnh ngang sẽ tách biệt (rời nhau).
Nếu quan hệ được phân rã dọc, các thuộc tính khoá chính phải được lặp lại
trong mỗi mảnh. Vì thế trong trường hợp phân mảnh dọc, tính tách biệt chỉ được
định nghĩa trên các trường không phải là khoá chính của một quan hệ. (xem hình 1.4)

K
A01
A02
B03
C04
C05
D06


Phân mảng ngang

A

B

C

D

Phân mảng dọc

Hình 1.4: Phân mảnh ngang và phân mảnh dọc

K
A01
A02
B03
C04
C05
D06

A

B

K
A01
A02

B03
C04
C05
D06

C

D


-15-

1.6 BỐ TRÍ CÁC MẢNH TẠI CÁC VỊ TRÍ
Sau khi các quan hệ đã được phân mảnh, để một hệ thống CSDL phân tán
hoạt động hiệu quả, các mảnh của CSDL cần phải được đặt như thế nào ở các vị trí
khác nhau trên mạng. Như vậy, việc xác định số lượng nhân bản của từng mảnh và
sau đó tìm kiếm một bố trí tối ưu cho tất cả các mảnh và cả luôn những nhân bản
của nó trong một mạng máy tính sao cho tổng số các chi phí giao tác được giảm
thiểu là quan trọng.
Ở đây, có thể hiểu giao tác được bao gồm :
- Yêu cầu đọc: đơn giản như load một mảnh tại vị trí nào đó.
- Yêu cầu cập nhật: phức tạp hơn vì khi cập nhật thì phải bảo đảm thống nhất ở
tất cả các nhân bản của mảnh đó đang nằm ở vị trí bất kỳ trên mạng.
1.6.1 Bài toán cấp phát
Giả sử rằng có một tập các mảnh F={F1, F2, … , Fn} và một mạng bao gồm
các site S={S1, S2, … , Sm} trên đó có một tập các ứng dụng Q={Q1, Q2, …, Qq}.
Bài toán cấp phát là tìm một phân phối tối ưu của F cho S.
* Tính tối ưu có thể được định nghĩa tương ứng với 2 điều kiện :
- Chi phí nhỏ nhất : Bao gồm chi phí lưu mỗi mảnh Fi tại vị trí Sj, chi phí vấn tin Fi
tại vị trí Sj, chi phí cập nhật Fi tại tất cả vị trí có chứa nó, và chi phí truyền dữ liệu.

Vì thế bài toán cấp phát mảnh cố gắng tìm một lược đồ bố trí với hàm chi phí thấp
nhất.
- Hiệu năng : Hai chiến lược đã biết là giảm thời gian đáp ứng và tăng tối đa lưu
lượng hệ thống tại mỗi vị trí.
* Ma trận FAM (nxm) thể hiện cách cấp phát các mảnh vào site :

1
FAM ij  
0

nếu mảnh Fi được cấp phát tại site Sj
trong trường hợp ngược lại


-16-

Ví dụ:
FAM:
S1

S2

S3

S4

F1

0


1

1

0

F2

1

1

0

0

F3
F4

1
0

1
0

1
1

1
1


F5

0

0

0

1

Ma trận FAM cho biết mảnh F1 được cấp phát tại site S2 và S3.
1.6.2 Yêu cầu về thông tin
Thông tin về CSDL

1.4.1.1

Kích thước của mỗi mảnh (tính theo byte).
Ký hiệu SIZE(Fi) kích thước của mảnh Fi .
1.4.1.2 Thông tin về giao tác
Có 2 ma trận thể hiện số lần truy vấn như sau :
* Ma trận RM (qxn) (dòng là các truy vấn, cột là các mảnh) thể hiện số lần
truy vấn chỉ đọc. Phần tử rij trong ma trận RM thể hiện số lần câu truy vấn qi thực
hiện chỉ đọc tại mảnh Fj.
* Ma trận UM (qxn) (dòng là các truy vấn, cột là các mảnh) thể hiện số lần
truy vấn cập nhật. Phần tử uij trong ma trận UM thể hiện số lần câu truy vấn qi thực
hiện cập nhật tại mảnh Fj.
Ví dụ :
UM:


RM :
q1
q2
q3

F1
2
2
0

F2
3
0
0

F3
0
0
3

F4
0
1
0

F5
0
0
0


q4

3

0

2

0

0

q1
q2
q3

F1
0
0
2

F2
0
3
1

F3
0
0
0


F4
1
0
1

F5
2
0
0

q4

0

0

0

0

3


-17-

Ma trận RM cho biết truy vấn q3 thực hiện chỉ đọc 3 lần ở mảnh F3.
Ma trận UM cho biết truy vấn q3 thực hiện cập nhật 2 lần ở mảnh F1, 1 lần ở
mảnh F2 và 1 lần ở mảnh F4.
Ngoài ra, cũng cần phải có ma trận FREQ (qxm) (dòng là các truy vấn, cột là

các site) thể hiện tần số chạy truy vấn tại mỗi site. Phần tử FREQij thể hiện số lần
câu truy vấn qi thực hiện tại site Sj.
Ví dụ :
FREQ :

q1
q2
q3
q4

S1

S2

S3

S4

0
0
2
0

2
3
0
0

3
0

1
4

1
0
0
0

Ma trận FREQ cho biết truy vấn q3 được chạy 2 lần ở site S1, 1 lần ở site S3.
1.4.1.3 Thông tin về mạng
Ma trận CTR(mxm) thể hiện chi phí truyền dữ liệu. Phần tử CTRij là chi phí
truyền 1 đơn vị dữ liệu từ Si đến Sj
Ví dụ :
CTR :

S1

S1
0

S2
S3
S4
0.32 0.48 0.16

S2

0.32

S3


0.48 0.64

S4

0.16 0.32 0.64

0

0.64 0.32
0

0.64
0

Ma trận CTR cho biết chi phí truyền 1 đơn vị dữ liệu từ S1 đến S3 là 0.48
1.4.2 Hàm đánh giá
Để đánh giá xem một phương án cấp phát mảnh vào các site có tổng chi phí
là bao nhiêu, có thể dựa vào hàm đánh giá chi phí:
Cost = CCload+CCproc


-18-

Trong đó CCload là chi phí nạp dữ liệu vào mạng. CCproc là chi phí truyền tin
để xử lý truy vấn.
Ngày nay, với sự phát triển của công nghệ thông tin và truyền thông thì chi
phí load dữ liệu không còn quan trọng nữa. Vì thế chỉ cần quan tâm đến chi phí
truyền tin để xử lý truy vấn. Như vậy hàm đánh giá chi phí có thể xem như sau:
m


q

Cost  CCproc   FREQik  (TRi  TUi,k )
k 1 i 1

n

Trong đó :

TRi  rij
j 1
n

m

TUi ,k   uij  FAM jl  SIZE (Fj )  CTRkl
j 1

l 1

1.4.3 Bài toán tối ưu
Như trên đã đề cập, bài toán tối ưu là tìm một phương án cấp phát các mảnh
Fi vào các site Sj sao cho chi phí là nhỏ nhất hay hàm Cost đạt giá trị cực tiểu. Sự
cấp phát đó phải thỏa điều kiện:
- Mỗi site phải được cấp ít nhất một mảnh.
- Mỗi mảnh phải được cấp phát cho ít nhất một site.
Đây là bài toán tối ưu tổ hợp có tất cả (2m-1)n trường hợp, không thể giải
quyết bằng phương pháp xét tất cả, vì sẽ có sự bùng nổ về tổ hợp, máy tính không
thể thực hiện được.

Nghiên cứu về lĩnh vực này phần lớn là bài toán qui hoạch toán học nhằm hạ
tối đa chi phí lưu trữ dữ liệu, xử lý các giao dịch và truyền thông. Bài toán này
thuộc loại NP-hard, vì vậy các giải pháp được đề xuất đều dựa trên các thuật giải
heuristic [6 tr.22].


-19-

CHƯƠNG 2

MỘT SỐ THUẬT TOÁN TỐI ƯU
2.1 GIẢI BÀI TOÁN TỐI ƯU THEO THUẬT GIẢI DI TRUYỀN
(Genetic Algorithms – GA)
Thuật giải di truyền là một kỹ thuật của khoa học máy tính nhằm tìm kiếm
giải pháp thích hợp cho các bài toán tối ưu tổ hợp (combinatorial optimization).
Thuật giải di truyền cho phép chúng ta tạo ra những chương trình máy tính giúp giải
quyết những vấn đề bằng cách mô phỏng sự tiến hóa của con người hay của sinh vật
nói chung (dựa trên thuyết tiến hóa muôn loài của Darwin) trong điều kiện quy định
sẵn của môi trường.
Ý tưởng của thuật giải di truyền để giải một bài toán tối ưu là tìm một tập
hợp của những giải pháp, sau đó cho "tiến triển" theo hướng chọn lọc để tìm những
giải pháp tốt dần hơn. Mục tiêu của thuật giải di truyền là đưa ra lời giải “tốt” có thể
là tối ưu hay xấp xỉ tối ưu.
2.1.1 Nội dung thuật giải di truyền
Thuật giải di truyền cũng như các thuật toán tiến hóa nói chung, hình thành
dựa trên quan niệm cho rằng quá trình tiến hóa tự nhiên là quá trình hoàn hảo nhất,
hợp lý nhất và tự nó đã mang tính tối ưu. Quá trình tiến hóa tối ưu ở chỗ, thế hệ sau
bao giờ cũng tốt hơn (phát triển hơn, hoàn thiện hơn) thế hệ trước. Tiến hóa tự
nhiên được duy trì nhờ hai quá trình cơ bản: sinh sản và chọn lọc tự nhiên. Xuyên
suốt quá trình tiến hóa tự nhiên, các thế hệ mới luôn được sinh ra để bổ sung thay

thế thế hệ cũ. Cá thể nào phát triển hơn, thích ứng hơn với môi trường sẽ tồn tại. Cá
thể nào không thích ứng được với môi trường sẽ bị đào thải. Sự thay đổi môi trường
là động lực thúc đẩy quá trình tiến hóa. Ngược lại, tiến hóa cũng tác động trở lại
góp phần làm thay đổi môi trường.
Các cá thể mới sinh ra trong quá trình tiến hóa nhờ sự lai ghép ở thế hệ cha
mẹ. Một cá thể mới có thể mang những tính trạng của cha mẹ (di truyền), cũng có


-20-

thể mang những tính trạng hoàn toàn mới (đột biến). Di truyền và đột biến là hai cơ
chế có vai trò quan trọng như nhau trong tiến trình tiến hóa, dù rằng đột biến xảy ra
với xác suất nhỏ hơn nhiều so với hiện tượng di truyền. Các thuật toán tiến hóa tuy
có những điểm khác biệt nhưng đều mô phỏng bốn quá trình cơ bản: lai ghép, đột
biến, sinh sản và chọn lọc tự nhiên.
2.1.2 Thuật giải di truyền
2.1.2.1 Định nghĩa thuật giải di truyền
Về mặt hình thức, thuật giải di truyền được định nghĩa là một bộ 7
GA=(I,  , , s, t, , )
Trong đó
(a) I = BI; không gian quần thể
(b)  : I  R+ ; ký hiệu hàm thích nghi (fitness) (độ thích nghi của một cá
thể)
(c)  ; tập các phép toán di truyền (lai, đột biến, tái sinh)
(d) s :I+  I ; ký hiệu phép chọn, giữ lại  cá thể từ + cá thể ban đầu
(e) t : I  {true, false} ; là tiêu chuẩn dừng
(f)  ; số cá thể trong thế hệ cha mẹ
(g)  ; số cá thể trong thế hệ con cái
2.1.2.2 Các phương thức tiến hóa của thuật giải di truyền
(a) Phương thức lai ghép (phép lai)

Phép lai là quá trình hình thành nhiễm sắc thể mới trên cơ sở các nhiễm sắc
thể cha mẹ, bằng cách ghép một hay nhiều đoạn gen của hai (hay nhiều) nhiễm sắc
thể cha mẹ với nhau. Phép lai xảy ra với xác suất pc, có thể mô phỏng như sau:
-

Chọn ngẫu nhiên hai (hay nhiều) cá thể bất kỳ trong quần thể. Giả sử các
nhiễm sắc thể của cha mẹ đều có m gen.

-

Tạo một số ngẫu nhiên trong khoảng từ 1 đến m-1 (ta gọi là điểm lai). Điểm
lai chia các chuỗi cha mẹ dài m thành hai nhóm chuỗi con dài m1 và m2. Hai
chuỗi nhiễm sắc thể con mới sẽ là m11+m22 và m21+m12.


-21-

-

Đưa hai cá thể mới này vào quần thể để tham gia các quá trình tiến hóa tiếp
theo.
(b) Phương thức đột biến (phép đột biến)
Đột biến là hiện tượng các thể con mang một số tính trạng không có trong mã

di truyền của cha mẹ. Phép đột biến xảy ra với xác suất pm, nhỏ hơn rất nhiều so với
xác suất lai pc. Phép đột biến có thể mô phỏng như sau:
-

Chọn ngẫu nhiên một cá thể bất kỳ cha mẹ trong quần thể.


-

Tạo một số ngẫu nhiên k trong khoảng từ 1 đến m, 1  k  m.

-

Thay đổi gen thứ k và trả cá thể này về quần thể để tham gia quá trình tiến
hóa tiếp theo.
(c) Phương thức sinh sản (phép tái sinh)
Phép tái sinh là quá trình trong đó các cá thể được sao chép trên cơ sở thích

nghi của nó. Độ thích nghi là một hàm gán một giá trị thực cho các cá thể trong
quần thể. Quá trình này có thể được mô phỏng như sau:
-

Tính độ thích nghi của từng cá thể trong quần thể hiện hành, lập bảng cộng
dồn các giá trị thích nghi (theo số thứ tự gán cho từng cá thể). Giả sử quần
thể có n cá thể. Gọi độ thích nghi của cá thể thứ i là Fi, tổng dồn thứ i là Fti,
tổng độ thích nghi của toàn quần thể là Fm.

-

Tạo một số ngẫu nhiên F trong đoạn từ 0 đến Fm.

-

Chọn cá thể thứ k đầu tiên thỏa F  Ftk đưa vào quần thể của thế hệ mới.
(d) Phương thức chọn lọc (phép chọn)
Phép chọn là quá trình loại bỏ các cá thể xấu trong quần thể để chỉ giữ lại


trong quần thể các cá thể tốt. Phép chọn có thể được mô phỏng như sau:
-

Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần.

-

Loại bỏ các cá thể cuối dãy để chỉ giữ lại n cá thể tốt nhất. Ở đây, ta giả sử
quần thể có kích thước cố định n.


-22-

2.1.2.3 Thuật giải di truyền tổng quát
Begin
t:=0;
Khởi tạo quần thể P(0):={a1(0), a2(0), ....., a(0)}I
Tính độ thích nghi của các cá thể (a1(0)), (a2(0)), .... , (a(0))
While (t  true) do
t:=t+1;
Tái sinh P(t) từ P(t-1);
Lai Q(t) từ P(t-1);
Đột biến R(t) từ P(t-1) ;
P(t):= P(t-1)  Q(t)  R(t);
Tính độ thích nghi của các cá thể trong quần thể P(t):

(a1(t)), (a2(t)), .... , (a(t), ..., (a+(t) )
Sắp xếp P(t) theo thứ tự (ai(t)) giảm dần;
Loại  cá thể cuối cùng (giữ lại  cá thể tốt nhất);
End;

End;
2.1.3 Cơ chế thực hiện của thuật giải di truyền
Bước đầu tiên của quá trình tìm lời giải cho vấn đề là khởi tạo quần thể,
nghĩa là phát sinh ra một số lượng lớn, hữu hạn các cá thể. Sau đó, dựa trên một
hàm số nào đó gọi là hàm thích nghi để xác định giá trị độ thích nghi, giá trị này có
thể hiểu là “độ tốt” của cá thể. Vì được phát sinh một cách ngẫu nhiên nên độ tốt
của một lời giải hay tính thích nghi của một cá thể trong một quần thể là không xác
định.
Chúng ta hãy tưởng tượng một máy tính giải quyết bài toán theo kiểu leo đồi,
trong không gian tìm kiếm của bài toán là một vùng đất gập ghềnh, có nhiều ngọn
đồi cao thấp khác nhau. Một người leo núi với tư tưởng càng leo càng cao (càng gần
với độ tốt), nhưng có khả năng người leo núi sẽ bị kẹt ở một đỉnh đồi thấp. Như


-23-

vậy, nếu có nhiều người cùng leo đồi ở nhiều địa điểm khác nhau thì có khả năng có
một trong số các người này leo đến đỉnh đồi cao nhất sẽ cao hơn.
Đến đây chúng ta có thể sẽ nảy sinh ý tưởng: sử dụng nhiều thế hệ các người
leo đồi. Nghĩa là toàn bộ những người leo đầu tiên (chẳng hạn 100 người) đều chưa
gặp đỉnh đồi cao nhất thì sẽ cho 100 người khác tiếp tục leo. Nhưng có khả năng
trong nhóm những người leo đồi mới, không ai trong số họ leo được những ngọn
đồi cao hơn nhóm người trước. Hay nói một cách tổng quát: phải làm cách nào để
giữ lại những người leo cao nhất cho thế hệ sau. Tiến trình cứ tiếp tục cho đến khi
có một thế hệ nào đó, có một người leo đến đỉnh đồi cao nhất hoặc hết thời gian cho
phép. Trong trường hợp hết thời gian thì trong toàn bộ các thế hệ, người nào leo cao
nhất sẽ được chọn.
Như vậy, để cải thiện tính thích nghi của quần thể, người ta tìm cách tạo ra
quần thể mới. Có hai thao tác thực hiện trên thế hệ hiện tại để tạo ra một thế hệ khác
có độ thích nghi tốt hơn.

 Thao tác 1: sao chép nguyên mẫu một nhóm các cá thể tốt từ thế hệ trước rồi
đưa sang thế hệ sau bằng phép tái sinh và chọn lọc. Thao tác này đảm bảo độ
thích nghi của thế hệ sau luôn luôn tốt hơn hoặc bằng thế hệ trước.
 Thao tác 2: là tạo ra các cá thể mới bằng phép lai ghép và đột biến. Trong
phép lai ghép, gen của hai cá thể tốt được chọn trong thế hệ trước sẽ được
phối hợp với nhau (theo một qui tắc nào đó) để tạo ra hai cá thể mới. Phép
đột biến là biến đổi ngẫu nhiên một hoặc nhiều thành phần gen của một cá
thể ở thế hệ trước để tạo ra một cá thể hoàn toàn mới ở thế hệ sau. Phép đột
biến có thể làm xáo trộn và làm mất đi tính thích nghi cao của cá thể được
chọn.
2.1.4 Giải bài toán tối ưu bằng thuật giải di truyền
Để giải quyết một bài toán theo thuật giải di truyền chúng ta cần thực hiện
các công việc sau:


×