he phan tan_in chuong3
TRANSCRIPT
1
CHƢƠNG 3
THIẾT KẾ CSDL PHÂN TÁN
Nguyễn Mậu Hân
Khoa CNTT-ĐHKH HUẾ
2
CHƢƠNG 3: THIẾT KẾ CSDL PHÂN TÁN
NỘI DUNG
3.1 Nội dung thiết kế các hệ thống phân tán
3.2 Các chiến lƣợc phân tán dữ liệu
3.3 Phƣơng pháp thiết kế CSDL phân tán
3.4 Phân mảnh dữ liệu
3.5 Cấp phát tài nguyên trong hệ phân tán
MỤC ĐÍCHCung cấp cho ngƣời lập trình ứng dụng các phƣơng
pháp thiết kế một cơ sở dữ liệu phân tán
3
Yêu cầu:
• Phải qua bước phân tích trước khi thiết kế. Các bước
này phải độc lập với mọi giải pháp cài đặt
• Chọn những vị trí để cài đặt dữ liệu và các chương
trình trên mạng máy tính.
• Đối với DBMS phân tán, việc phân tán các ứng dụng
đòi hỏi hai điều:
1. Phân tán DBMS
2. Phân tán các chương trình ứng dụng chạy trên
DBMS đó.
CHƢƠNG 3: THIẾT KẾ CSDL PHÂN TÁN
4
Nhận xét:
• Có nhiều điểm tương đồng với việc thiết kế hệ
thống tập trung.
• Điều khác nhau cơ bản là hệ thống được phân
bố trên một số địa điểm khác nhau
• Tính khả thi, chu kỳ sống, tính mở, tính sẳn
sàng,...
• Thiết kế phần cứng: máy trạm, máy chủ, mạng
,...
Cụ thể?
3.1 Nội dung thiết kế một hệ thống phân tán
5 6
3.1.1 Các công việc cần phải làm để thiết kế HT
phân tán:
• Xác định kiến trúc mô hình phân tán tổng thể
• Định vị các địa phương cần phân tán, loại hình
phân tán sử dụng cho mỗi địa phương (toàn bộ,
bản sao, lai,...).
• Tiến hành cân đối các yếu tố được phân tán bao
gồm các phần tử dữ liệu và các hoạt động xử lý
trên mỗi trạm.
• Thiết kế cơ sở dữ liệu phân tán.
• Thiết kế các chương trình ứng dụng.
3.1 Nội dung thiết kế một hệ thống phân tán
2
7
3.1.2 Các sản phẩm yêu cầu sau khi PTTK
1. Mô tả các trạm
. Thông tin địa lý
. Thiết bị vật lý
. Thông tin hạ tầng
. Đặc trưng về con người (trình độ, kỹ năng,,...)
2. Mô tả về sử dụng dữ liệu cho mỗi trạm
. Các phần tử dữ liệu sử dụng từ hệ thống
. Các phần tử dữ liệu cần phải tạo ra
. Các phần tử dữ liệu cập nhật
. Các phần tử dữ liệu xóa
3.1 Nội dung thiết kế một hệ thống phân tán
8
3. Mô tả quá trình nghiệp vụ cho mỗi trạm
. Danh sách các xử lý (sơ đồ chức năng) ở các trạm
. Mô tả các xử lý
4. Các thỏa thuận về phương án kiến trúc hệ thống
cho mỗi trạm, cho nhu cầu về dữ liệu và xử lý của
trạm đó
. Topô mạng
. Kiến trúc mạng, Hệ điều hành
. cấu hình phân tán
Chú ý: Việc định vị và phân tán dữ liệu ở các nút trong một
mạng máy tính sẽ quyết định tính hiệu quả và đúng đắn của
hệ thống phân tán.
3.1 Nội dung thiết kế một hệ thống phân tán
9
Có 4 chiến lược phân tán dữ liệu:
Tập trung dữ liệu
Chia nhỏ dữ liệu (phân hoạch dữ liệu)
Sao lặp dữ liệu (nhân bản dữ liệu)
Phương thức lai
3.2 Các chiến lƣợc phân tán dữ liệu
10
3.2.1 Tập trung dữ liệu:
Tất cả các dữ liệu được tập trung một chổ. Cách này đơn
giản nhưng có 3 nhược điểm:
• Dữ liệu không sẵn sàng cho người sử dụng truy nhập từ
xa
• Chi phí truyền thông lớn, thường làm cực đại việc truy
nhập dữ liệu tới nơi tập trung.
• Toàn bộ hệ thống ngừng khi cơ sở dữ liệu bị sự cố
3.2.2 Chia nhỏ dữ liệu:
• Cơ sở dữ liệu được chia thành các phần nhỏ liên kết nhau
(không trùng lặp).
• Mỗi phần dữ liệu được đưa đến các trạm một cách thích
hợp để sử dụng.
3.2 Các chiến lƣợc phân tán dữ liệu
11
3.2.3 Sao lặp dữ liệu:
• CSDL được nhân thành nhiều bản từng phần hoặc đầy
đủ và được đặt ở nhiều trạm trên mạng.
• Nếu bản sao của CSDL được lưu giữ tại mọi trạm của hệ
thống ta có trường hợp sao lặp đầy đủ.
• Hiện nay có nhiều kỹ thuật mới cho phép tạo bản sao
không đầy đủ phù hợp với yêu cầu dữ liệu ở mỗi trạm và
một bản đầy đủ được quản lý ở server.
• Sau một khoảng thời gian nhất định các bản sao được
làm đồng bộ với bản chính bằng một ứng dụng nào đó.
3.2 Các chiến lƣợc phân tán dữ liệu
12
3.2.4 Phƣơng thức lai:
• Cơ sở dữ liệu được phân thành nhiều phần: quan
trọng và không quan trọng.
• Phần ít quan trọng được lưu giữ một nơi
• Phần quan trọng được lưu trữ ở nhiều nơi khác.
3.2 Các chiến lƣợc phân tán dữ liệu
3
13
So sánh các lựa chọn nhân bản dữ liệu
Khi dữ liệu được cấp phát, nó có thể được nhân bản một
phần, nhân bản hoàn toàn hoặc không nhân bản
Phương pháp nhân bản bảo đảm được độ tin cậy và hiệu
quả đối với các truy vấn chỉ đọc. Bởi vì nếu có nhiều bản
sao của một mục dữ liệu thì chúng ta có nhiều cơ hội truy
xuất được dữ liệu đó ngay cả khi hệ thống xảy ra sự cố.
Các truy vấn chỉ đọc có thể thực hiện song song bởi vì các
bản sao có mặt ở nhiều vị trí.
Ngược lại, câu truy vấn cập nhật có thể gây nhiều rắc rối vì
hệ thống phải bảo đảm các bản sao phải được cập nhật
chính xác.
3.2 Các chiến lƣợc phân tán dữ liệu
14
Một CSDL không nhân bản (thường gọi là CSDL
phân họach) có chứa các mảnh dữ liệu không
trùng lặp nằm tại nhiều vị trí khác nhau
3.2 Các chiến lƣợc phân tán dữ liệu
Nhân bản hoàn
toàn
Nhân bản
một phầnPhân hoạch
Xử lý vấn tin Dễ Cùng mức độ khó
Quản lý thư mụcDễ hoặc không
tồn tạiCùng mức độ khó
Điều khiển đồng
thờiVừa phải Khó Dễ
Độ tin cậy Rất cao Cao Thấp
Tính thực tế Có thể áp dụng Thực tếCó thể áp
dụng
So sánh các lựa chọn nhân bản
15
3.3 PHƢƠNG PHÁP THIẾT KẾ CSDL PHÂN TÁN
3.3.1 Sơ đồ thiết kế tổng thể cơ sở dữ liệu phân tán
Hiện nay chưa có một kỹ thuật cụ thể nào nói một cách
chi tiết việc thiết kế một CSDL phân tán. Tuy nhiên, một cách
tổng quát chúng ta có thể thiết kế CSDL phân tán theo các
bước sau:Thiết kế lược đồ quan hệ tổng thể
Thiết kế phân đoạn
Thiết kế định vị các đoạn
(Tạo các ảnh vật lý)
Thiết kế CSDL vật lý
Sơ đồ thiết kế tổng thể16
1. Thiết kế lược đồ quan hệ tổng thể:
• Thiết kế các quan hệ tổng thể
• Mô tả toàn bộ dữ liệu sẽ được dùng trong hệ thống
2. Thiết kế phân đoạn: thực hiện chia nhỏ dữ liệu thành
các phần.
3. Thiết kế định vị các đoạn:
• là quá trình thực hiện ánh xạ các đoạn vào các trạm
khác nhau
• Tạo các ảnh vật lý tại các trạm.
• Các đoạn dữ liệu được đưa vào các vị trí lưu trữ thích
hợp với yêu cầu hoạt động thực tế của hệ thống.
4. Thiết kế cơ sở dữ liệu vật lý: thiết kế dữ liệu vật lý cho
các quan hệ tại các trạm
3.3 PHƢƠNG PHÁP THIẾT KẾ CSDL PHÂN TÁN
17
3.3.2 Các phƣơng pháp thiết kế CSDL phân tán
Có 2 phương pháp thiết kế CSDL phân tán
• Phương pháp tiếp cận từ trên xuống
• Phương pháp tiếp cận từ dưới lên.
3.3 PHƢƠNG PHÁP THIẾT KẾ CSDL PHÂN TÁN
18
a.Phƣơng pháp thiết kế từ trên xuống
• Thiết kế từ tổng thể đến riêng biệt
• Phân rã một hệ thống lớn thành các hệ thống con
• Phân tích các yêu cầu nhằm định nghĩa môi
trường hệ thống
• Thu thập các yêu cầu về dữ liệu và nhu cầu xử lý
của các trạm có sử dụng CSDL.
3.3 PHƢƠNG PHÁP THIẾT KẾ CSDL PHÂN TÁN
4
19
• Thiết kế view: xây dựng khung nhìn dữ liệu cho
người sử dụng ở các trạm.
• Thiết kế mức quan niệm: là một tiến trình kiểm
tra và xác định rõ hai nhóm quan hệ: phân tích
thực thể và phân tích chức năng.
+ Phân tích thực thể: xác định các tập thực thể,
các thuộc tính và các mối quan hệ giữa chúng.
+ Phân tích chức năng: xác định các chức năng
của hệ thống và đưa ra các chức năng cơ sở.
3.3 PHƢƠNG PHÁP THIẾT KẾ CSDL PHÂN TÁN
20
• Thiết kế phân tán: bao gồm hai phần:
+ Thiết kế phân đoạn
+ Thiết kế định vị
• Thiết kế lược đồ quan niệm địa phương: tạo
ra các lược đồ mức quan niệm tại các địa
phương
• Thiết kế vật lý: thực hiện ánh xạ lược đồ mức
quan niệm tại các địa phương ra các đơn vị lưu
trữ vật lý
• Quan sát và kiểm tra: kiểm tra các giai đoạn
của quá trình thiết kế cơ sở dữ liệu
3.3 PHƢƠNG PHÁP THIẾT KẾ CSDL PHÂN TÁN
21
3.3 PHƢƠNG PHÁP THIẾT KẾ CSDL PHÂN TÁN
22
b. Phƣơng pháp thiết kế từ dƣới lên
Nhận xét
• Phương pháp thiết kế trên xuống thực sự có hiệu quả khi
xây dựng một hệ thống mới.
• Trong thực tế, một số CSDL đã tồn tại trước, được tổ
chức trong môi trường tập trung và CSDL phân tán được
phát triển bằng cách liên kết chúng lại thành một CSDL
mới thống nhất (Các DBMS địa phương khác nhau đã
được sử dụng)
Cách thiết kế
1. Chọn một mô hình dữ liệu chung để mô tả lược đồ tổng
thể
2. Chuyển mỗi lược đồ địa phương theo mô hình dữ liệu
chung đã chọn
3. Tích hợp các lược đồ địa phương vào lược đồ tổng thể
3.3 PHƢƠNG PHÁP THIẾT KẾ CSDL PHÂN TÁN
23
0. Nhắc lại các phép toán đại số quan hệ và ngôn ngữ SQL
1. Tại sao cần phải phân mảnh?
2. Làm thế nào để thực hiện phân mảnh?
3. Phân mảnh nên thực hiện đến mức độ nào?
4. Có cách gì kiểm tra tính đúng đắn của việc phân mảnh?
5. Việc cấp phát các mảnh dữ liệu như thế nào?
6. Những thông tin nào sẽ cần thiết cho việc phân mảnh và
cấp phát?
3.4 PHÂN MẢNH DỮ LIỆU
24
Sơ lược về ngôn ngữ SQL (Structured query language)
• SQL trước kia được gọi là SEQUEL
• IBM phát triển ở San Jose,
• Là một ngôn ngữ phi thủ tục
• Mục đích để sử dụng trong CSDL thử nghiệm System R
Câu lệnh SELECT
Cú pháp:
SELECT R1.A1, R2.A2,. . ., Ri.Ai
FROM R1, R2 ,. . . , Rk
WHERE
Ý nghĩa: ( (R1 ... Rk))
SQL
R1.A1, R2.A2,. . ., Ri.Ai
5
25
Phân mảnh quan hệ là gì?
Việc chia một quan hệ thành nhiều quan hệ nhỏ hơn được
gọi là phân mảnh quan hệ.
3.4.1 Các lý do phân mảnh
• Khung nhìn hoặc đơn vị truy xuất của các ứng dụng không
phải là toàn bộ quan hệ mà thường là một phần quan hệ.
• 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.
• 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 con hoạt tác trên các mảnh.
3.4 PHÂN MẢNH DỮ LIỆU
26
• Nếu các ứng dụng có các khung nhìn được định nghĩa
trên một quan hệ cho trước nằm tại những vị trí khác thì
có hai cách chọn lựa đơn vị phân tán:
+ hoặc là toàn bộ quan hệ
+ hoặc quan hệ được lưu ở một vị trí có chạy ứng
dụng.
Nhận xét: Chọn lựa thứ nhất gây ra một số lượng lớn các
truy xuất không cần thiết đến dữ liệu ở xa. Chọn lựa sau
sẽ gây ra nhiều vấn đề khi cập nhật và lãng phí không
gian lưu trữ.
3.4 PHÂN MẢNH DỮ LIỆU
27
Khuyết điểm của việc phân mảnh:
• Nếu ứng dụng có những yêu cầu ngăn cản việc phân rã
thành các mảnh để được sử dụng độc quyền, thì những
ứng dụng có các khung nhìn được định nghĩa trên nhiều
mảnh sẽ bị giảm hiệu suất hoạt động.
• Nếu một khung nhìn đòi hỏi thông tin ở nhiều mảnh thì
việc truy xuất dữ liệu để nối lại sẽ có chi phí cao.
• Kiểm soát ngữ nghĩa dữ liệu (semantic data control): Do
kết quả của phân mảnh, các thuộc tính tham gia vào một
phụ thuộc có thể bị phân rã vào các mảnh khác nhau và
được cấp phát cho những vị trí khác nhau. Trong trường
hợp này, một nhiệm vụ đơn giản như kiểm tra các phụ
thuộc cũng phải thực hiện truy tìm dữ liệu ở nhiều vị trí.
3.4 PHÂN MẢNH DỮ LIỆU
28
Nhận xét: mục đích của phân mảnh dữ liệu là cấp phát dữ liệu
cho các sites. Do đó, 2 vấn đề phân mảnh và cấp phát dữ
liệu phải luôn đi đôi với nhau.
3.4.2 Các kiểu phân mảnh
• Phân mảnh ngang (horizontal fragmentation)
• Phân mảnh dọc (vertical fragmentation).
• Phân mảnh hỗn hợp (hibrid fragmentation)
Chú ý: Quá trình phân mảnh phải được gắn liền với vấn đề
cấp phát dữ liệu và bài toán cụ thể như thế nào.
3.4 PHÂN MẢNH DỮ LIỆU
29
3.4.2.1 Phân mảnh ngang: phân mảnh ngang một 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 R2 ... Rk
Các loại phân mảnh ngang:
Phân mảnh ngang nguyên thủy (primary horizontal fragmentation):
phân mảnh ngang nguyên thủy của một quan hệ được thực
hiện dựa trên các vị từ được định nghĩa trên quan hệ đó.
Phân mảnh ngang dẫn xuất (derived horizontal fragmentation):
phân mảnh ngang dẫn xuất của một quan hệ được thực hiện
dựa trên các vị từ được định nghĩa trên quan hệ khác.
3.4 PHÂN MẢNH DỮ LIỆU
Như vậy, trong phân mảnh ngang tập các vị từ đóng một vai trò
quan trọng. 30
3.4.2.2 Phân mảnh dọc:
Phân mảnh dọc một quan hệ tổng thể n-bộ R là tách
R thành các quan hệ con 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
3.4.2.3 Phân mảnh hỗn hợp:
là kết hợp cả phân mảnh ngang và phân mảnh dọc
3.4 PHÂN MẢNH DỮ LIỆU
6
31
Ví dụ: Xét cơ sở dữ liệu của một công ty phần mềm được tổ
chức như sau:
• NHANVIEN (MANV, TENNV, CHUCVU): quan hệ này
chứa dữ liệu về nhân viên của công ty.
• TLUONG (CHUCVU, LUONG): quan hệ này chứa dữ liệu
liên quan về lương và chức vụ của nhân viên.
• DUAN (MADA, TENDA, NGANSACH, ĐIACHI): quan hệ
này chứa dữ liệu về các dự án mà công ty đang thực hiện.
• HOSO (MANV, MADA, NHIEMVU, THOIGIAN): quan hệ
này chứa dữ liệu về hồ sơ của nhân viên được phân công
thực hiện dự án).
3.4 PHÂN MẢNH DỮ LIỆU
32
NHANVIEN (E) HOSO (G)
Cơ sở dữ liệu của một công ty máy tính
MANV TENNV CHUCVU
A1
A2
A3
A4
A5
A6
A7
A8
Nam
Trung
Đông
Bắc
Tây
Hùng
Dũng
Chiến
Phân tích HT
Lập trình viên
Phân tích HT
Phân tích HT
Lập trình viên
Kỹ sư điện
Phân tích HT
Thiết kế DL
MANV MADA NHIEMVU THOIGIAN
A1
A2
A2
A3
A3
A4
A5
A6
A7
A8
D1
D1
D2
D3
D4
D2
D2
D4
D3
D3
Quản lý
Phân tích
Phân tích
Kỹ thuật
Lập trình
Quản lý
Quản lý
Kỹ thuật
Quản lý
Lập trình
12
34
6
12
10
6
20
36
48
15
MADA TENDA NGANSACH ĐIACHI
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
150000
135000
250000
310000
Huế
Hà nôi
Hà nội
HCMC
CHUCVU LUONG
Kỹ sư điện
Phân tích HT
Lập trình viên
Thiết kế DL
2000
2500
3200
4000
DUAN (J) TLUONG (S)
3.4 PHÂN MẢNH DỮ LIỆU
MADA TENDA NGANSACH ĐIACHI
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
150000
135000
250000
310000
Huế
Hà nôi
Hà nội
HCMC
DUAN1
Ví dụ về phân mảnh ngang: xét phép toán đại số quan hệ:
DUAN1= NGANSACH200000(DUAN);
DUAN2=NGANSACH>200000 (DUAN)DUAN
MADA TENDA NGANSACH ĐIACHI
D3
D4
BẢO TRÌ
PHÁT TRIỂN
250000
310000
Hà nội
HCMC
MADA TENDA NGANSACH ĐIACHI
D1
D2
CSDL
CÀI ĐẶT
150000
135000
Huế
Hà nôi
DUAN2
3.4 PHÂN MẢNH DỮ LIỆU
MADA NGANSACH
D1
D2
D3
D4
150000
135000
250000
310000
Ví dụ về phân mảnh dọc: xét phép toán đại số quan hệ:
DUAN3 = $1,$3(DUAN); DUAN4= $1,$2(DUAN);
DUAN3
MADA TENDA
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
DUAN4
MADA TENDA NGANSACH ĐIACHI
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
150000
135000
250000
310000
Huế
Hà nôi
Hà nội
HCMC
DUAN
3.4 PHÂN MẢNH DỮ LIỆU
MADA NGANSACH
D1
D2
150000
135000
Ví dụ về phân mảnh hỗn hợp: xét phép toán đại số quan hệ:
DUAN5 = NGANSACH200000$1,$3(DUAN);
DUAN6= NGANSACH>200000$1,$2(DUAN);
DUAN5
MADA TENDA
D3
D4
BẢO TRÌ
PHÁT TRIỂN
DUAN6
MADA TENDA NGANSACH ĐIACHI
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
150000
135000
250000
310000
Huế
Hà nôi
Hà nội
HCMC
DUAN
36
3.4.3 Mức độ phân mảnh
Việc phân mảnh CSDL đến một mức độ nào đó sẽ ảnh
hưởng đến hiệu quả của việc thực hiện các truy vấn.
Nếu là phân mảnh dọc thì các mảnh dữ liệu nên ở dạng
chuẩn 3NF.
Nếu phân mảnh quá mịn hoặc quá thô sẽ gây ra các “tác
dụng phụ” không mong muốn.
Vấn đề là tìm một phương pháp phân mảnh thích hợp:
Tùy thuộc vào bài toán
Nắm được các tham số đặc trưng của ứng dụng. Từ các
tham số này sẽ xác định được từng mảnh cần tạo ra.
Có thể dùng phương pháp “tụ lực” – Affinity của các thuộc
tính (xét ở phần sau) để thực hiện phân mảnh
3.4 PHÂN MẢNH DỮ LIỆU
7
37
3.4.4 Các yêu cầu của việc phân mảnh
Việc phân mảnh một quan hệ tổng thể cũng phải
tuân theo một số quy tắc nhất định để khi tái thiết lại
quan hệ cũ vẫn bảo đảm ngữ nghĩa của nó.
Một phương pháp thiết kế các phân mảnh đúng đắn
phải thỏa mãn ba tính chất sau:
a.Tính đầy đủ (completeness)
b.Tính tái thiết được (reconstruction)
c. Tính tách biệt (disjointness):
3.4 PHÂN MẢNH DỮ LIỆU
38
a.Tính đầy đủ:
Nếu một quan hệ R được phân rã thành các mảnh
R1, R2, ..., Rk thì mỗi mục dữ liệu có trong R phải có
trong ít nhất một mảnh Ri nào đó.
b. Tính tái thiết được:
• Nếu một quan hệ R được phân rã thành các
mảnh R1, R2, ..., Rk thì phải tồn tại một toán tử
sao cho R = (Ri), i.
• Toán tử thay đổi tùy theo từng loại phân mảnh.
• Trong thực tế khi các mảnh được phân mảnh
ngang thì là phép hợp, phân mảnh dọc thì là
phép nối và phân mảnh hỗn hợp thì là phép nửa
nối .
3.4 PHÂN MẢNH DỮ LIỆU
39
c. Tính tách biệt:
• Nếu một quan hệ R được phân mảnh ngang thành
các quan hệ R1, R2, ..., Rk và mục dữ liệu ti nằm
trong mảnh Ri thì nó sẽ không nằm trong một mảnh
Rk, ki.
• Tiêu chuẩn này bảo đảm các mảnh ngang phải
được tách rời nhau.
• Nếu quan hệ được phân mảnh dọc thì thuộc tính
chung phải được lặp lại trong mỗi mảnh. Do đó,
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à
thuộc tính chung của quan hệ.
3.4 PHÂN MẢNH DỮ LIỆU 3.4 PHÂN MẢNH DỮ LIỆU
MADA TENDA NGANSACH ĐIACHI
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
150000
135000
250000
310000
Huế
Hà nôi
Hà nội
HCMC
DUAN1
Ví dụ về phân mảnh ngang: xét phép toán đại số quan hệ:
DUAN1= NGANSACH200000(DUAN);
DUAN2=NGANSACH>200000 (DUAN)DUAN
MADA TENDA NGANSACH ĐIACHI
D3
D4
BẢO TRÌ
PHÁT TRIỂN
250000
310000
Hà nội
HCMC
MADA TENDA NGANSACH ĐIACHI
D1
D2
CSDL
CÀI ĐẶT
150000
135000
Huế
Hà nôi
DUAN2
Dễ thấy các mảnh thỏa
mãn các tính chất:
•Tái thiết được
•Đầy đủ
•Tách biệt
DUAN1 DUAN
DUAN2 DUAN
DUAN = DUAN1 DUAN2
3.4 PHÂN MẢNH DỮ LIỆU
MADA NGANSACH ĐIACHI
D1
D2
D3
D4
150000
135000
250000
310000
Huế
Hà nôi
Hà nội
HCMC
Ví dụ về phân mảnh dọc: xét phép toán đại số quan hệ:
DUAN3 = $1,$3,$4(DUAN); DUAN4= $1,$2(DUAN);
DUAN3
Dễ thấy các mảnh thỏa mãn tính tái thiết được và đầy đủ
DUAN3 DUAN
DUAN4 DUAN
DUAN = DUAN3 DUAN4
MADA TENDA
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
DUAN4
MADA TENDA NGANSACH ĐIACHI
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
150000
135000
250000
310000
Huế
Hà nôi
Hà nội
HCMC
DUAN
3.4 PHÂN MẢNH DỮ LIỆU
MADA NGANSACH ĐIACHI
D1
D2
150000
135000
Huế
Hà nôi
Ví dụ về phân mảnh hỗn hợp: xét phép toán đại số quan hệ:
DUAN5 = NGANSACH200000$1,$3(DUAN);
DUAN6= NGANSACH>200000$1,$2(DUAN);
DUAN5
Dễ kiểm tra rằng mảnh thỏa mãn tính tái thiết được và đầy đủ
DUAN5 DUAN
DUAN6 DUAN
DUAN = (DUAN DUAN5 ) (DUAN DUAN6 )
MADA TENDA
D3
D4
BẢO TRÌ
PHÁT TRIỂN
DUAN6
MADA TENDA NGANSACH ĐIACHI
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
150000
135000
250000
310000
Huế
Hà nôi
Hà nội
HCMC
DUAN
8
43
3.4.5 Các yêu cầu thông tin để phân mảnh
Các thông tin để thiết kế CSDL phân tán chia làm 4
loại:
a) Thông tin về CSDL: các quan hệ tổng thể và mối
quan hệ giữa chúng.
b) Thông tin về các ứng dụng: các truy vấn trên các
quan hệ.
c) Thông tin về mạng: các sites
d) Thông tin về hệ thống máy tính: giao thức, tôpô
mạng
Trong đó: a) và b) là quan trọng
3.4 PHÂN MẢNH DỮ LIỆU
44
1. Yêu cầu thông tin về phân mảnh ngang
a. Thông tin về CSDL:
Các quan hệ tổng thể
Các mối quan hệ: các đường nối
Lực lượng của mỗi quan hệ: số bộ trong mỗi quan
hệ. Ký hiệu Card (R)=số bộ của quan hệ R
3.4 PHÂN MẢNH DỮ LIỆU
45
NHANVIEN (E) HOSO (G)
Cơ sở dữ liệu của một công ty máy tính
MANV TENNV CHUCVU
A1
A2
A3
A4
A5
A6
A7
A8
Nam
Trung
Đông
Bắc
Tây
Hùng
Dũng
Chiến
Phân tích HT
Lập trình viên
Phân tích HT
Phân tích HT
Lập trình viên
Kỹ sư điện
Phân tích HT
Thiết kế DL
MANV MADA NHIEMVU THOIGIAN
A1
A2
A2
A3
A3
A4
A5
A6
A7
A8
D1
D1
D2
D3
D4
D2
D2
D4
D3
D3
Quản lý
Phân tích
Phân tích
Kỹ thuật
Lập trình
Quản lý
Quản lý
Kỹ thuật
Quản lý
Lập trình
12
34
6
12
10
6
20
36
48
15
MADA TENDA NGANSACH ĐIACHI
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
150000
135000
250000
310000
Huế
Hà nôi
Hà nội
HCMC
CHUCVU LUONG
Kỹ sư điện
Phân tích HT
Lập trình viên
Thiết kế DL
2000
2500
3200
4000
DUAN (J) TLUONG (S)
46
a. Thông tin về CSDL:
Ví dụ: Xét CSDL đã cho Hãy biểu diễn các đường nối giữa các
quan hệ. Chú ý rằng hướng của các đường nối cho biết mối
quan hệ 1-n.
Chẳng hạn, với mỗi chức vụ có nhiều nhân viên giữ chức vụ đó,
thì vẽ một đường nối từ quan hệ TLUONG(S) đến quan hệ
NHANVIEN(E). Đồng thời mối liên hệ nhiều-nhiều giữa
NHANVIEN(E) và DUAN(J) được biểu diễn bằng hai đường nối
đến quan hệ HOSO(G).S
E
J
G
CHUCVU, LUONG
MANV, MADA, NHIEMVU,THOIGIAN
MANV, TENNV, CHUCVU
MANV, TENDA, NGANSACH
L1
L2
L3
a. Thông tin về CSDL:
Quan hệ nằm tại đuôi của đường nối được gọi là chủ nhân
(owner) hoặc quan hệ nguồn (source relation) của đường nối
Quan hệ nằm tại đầu đường nối (đầu mũi tên) gọi là thành
viên (member) hoặc quan hệ đích (target relation).
Các hàm owner và nember từ tập các đường nối đến tập quan
hệ sẽ trả về là quan hệ thành viên hoặc quan hệ chủ nhân của
đường nối khi cho trước một đường nối giữa chúng.
Ví dụ: Cho đường nối L1
của hai quan hệ TLUONG(S)
và NHANVIEN(E).
Các hàm owner và member
có các giá trị sau:
owner (L1) = S
member (L1) = E
S
E
CHUCVU, LUONG
MANV, TENNV, CHUCVU
L1
b. Thông tin về ứng dụngChú ý:
[Gio Wiederhold, 1982] Trong các câu truy vấn thì có
khoảng 20% các câu vấn tin ghi dữ liệu và 80% câu
vấn tin là đọc dữ liệu ”. Quy tắc “80/20” này có thể
được sử dụng như một hướng dẫn khi thực hiện các
phân tích.
Thông tin định tính của một ứng dụng (gồm tập các vị
từ) thường để hướng dẫn cho việc phân mảnh.
Thông tin định lượng của một ứng dụng (gồm lực
lượng của các quan hệ) chủ yếu được sử dụng trong
mô hình cấp phát.
Việc xác định các vị từ, đặc biệt các vị từ hay sử
dụng, là quan trọng.
9
49
Cho lược đồ quan hệ R( A1,A2 …, An) trong đó Aj là
thuộc tính được định nghĩa trên một miền biến thiên Dj.
một vị từ đơn giản P được định nghĩa trên R có dạng:
P: Aj θ Value, θ {=, <, ≠, ≤, >, ≥}, Aj là một thuộc
tính của R và Value Dj.
Ký hiệu Pr tập tất cả các vị từ đơn giản được định
nghĩa trên quan hệ R.
Như vậy, cho trước LĐQH R, nếu các Dj là hữu hạn
thì ta có thể xác định tất cả các vị từ đơn giản trên R.
Trong thực tế các câu truy vấn thường chứa các vị từ
phức tạp. Hội của các vị từ đơn giản, ký hiệu M, được
gọi là vị từ hội sơ cấp.
b. Thông tin về các ứng dụng
50
Một số vị từ đơn giản được định nghĩa trên quan hệ
này: P1: CHUCVU=“Phân tích HT“
P2: CHUCVU=“Lập trình viên“
P3: LUONG < 3000
P4: LUONG 3000
Một số vị từ hội sơ cấp được định nghĩa trên quan hệ
này: m1: CHUCVU=“Phân tích HT“ LUONG < 3000
m2: (CHUCVU=“Phân tích HT“) LUONG 3000
Chú ý:
Không phải tất cả các vị từ hội sơ cấp đều có thể định
nghĩa được trên một quan hệ nào đó
Một số trong chúng vô nghĩa đối với ngữ nghĩa của
quan hệ
Ví dụ: Xét quan hệ TLUONG (CHUCVU, LUONG).
CHUCVU LUONG
Kỹ sư điện
Phân tích HT
Lập trình viên
Thiết kế DL
2000
2500
3200
4000
51
Những thông tin định tính về các ứng dụng:
1. Độ tuyển của hội sơ cấp (minterm selectivity): số
lượng các bộ của quan hệ được truy xuất bởi câu
truy vấn được đặc tả theo một vị từ hội sơ cấp đã
cho.
Ví dụ:
m1: CHUCVU=“Phân tích HT“ LUONG < 2000
Có độ tuyển của hội sơ cấp là 0 vì không có bộ nào
của quan hệ TLUONG được truy cập
m2: (CHUCVU=“Phân tích HT“) LUONG > 3000
Có độ tuyển của hội sơ cấp là 2 vì chỉ có hai bộ của
quan hệ TLUONG được truy cập
b. Thông tin về các ứng dụng
CHUCVU LUONG
Kỹ sư điện
Phân tích HT
Lập trình viên
Thiết kế DL
2000
2500
3200
4000
52
Những thông tin định tính về các ứng dụng:
2. Tần số truy xuất (acces frequency): tần số ứng
dụng truy xuất dữ liệu
Nếu Q={q1, q2,..., qq} là tập các câu truy vấn,
Ký hiệu:
acc(qi) là số truy xuất của qi trong một khoảng thời
gian cho trước hoặc trong quan hệ cụ thể
acc(mi) là tần số truy xuất của hội sơ cấp mi
b. Thông tin về các ứng dụng
53
Nhận xét:
Phân mảnh ngang của quan hệ R là một quan hệ
chứa tất cả các bộ của R thỏa mãn vị từ hội sơ cấp.
Cho tập vị từ hội sơ cấp M, khi đó số lượng các
mảnh ngang cũng bằng số lượng các vị từ hội sơ cấp.
Tập mảnh ngang này được gọi là tập các mảnh hội sơ
cấp.
Việc định nghĩa các mảnh ngang phụ thuộc vào các
vị từ hội sơ cấp
Trong mọi thuật toán phân mảnh bước đầu tiên là
xác định tập các vị từ đơn giản cần thiết mà chúng sẽ
tạo ra các vị từ hội sơ cấp. Tập vị từ này nói chung phụ
thuộc vào mục tiêu và yêu cầu của bài toán.
3.4.6 Thuật toán phân mảnh ngang
54
Nhận xét (tt):
Một khái niệm quan trọng của các vị từ đơn giản là
tính đầy đủ (completeness) và tính cực tiểu
(minimality) của tập các vị từ.
a. Xét về tính đầy đủ của tập vị từ
Tập các vị từ đơn giản Pr được gọi là đầy đủ nếu và
chỉ nếu xác suất của mỗi ứng dụng truy xuất đến mỗi
bộ bất kỳ thuộc về một mảnh hội sơ cấp nào đó được
định nghĩa theo Pr đều bằng nhau.
3.4.6 Thuật toán phân mảnh ngang
10
55
Xét các phân mảnh ngang của quan hệ DUAN:
Ví dụ
MADA TENDA NGANSACH DIACHI
D1 CSDL 150000 Huế
MADA TENDA NGANSACH DIACHI
D2
D3
CÀI ĐẶT
BẢO TRÌ
135000
250000
Hà nôi
Hà nội
MADA TENDA NGANSACH DIACHI
D4 PHÁT TRIỂN 310000 HCMC
MADA TENDA NGANSACH DIACHI
D1
D2
D3
D4
CSDL
CÀI ĐẶT
BẢO TRÌ
PHÁT TRIỂN
150000
135000
250000
310000
Huế
Hà nôi
Hà nội
HCMC
DUAN
DUAN1 DUAN2
DUAN3
DUAN1=DIACHI=“Huế”(DUAN)
DUAN2=DIACHI=“Hà nội”(DUAN)
DUAN3=DIACHI=“HCMC”(DUAN)
56
Xét tập ứng dụng
Pr={DIACHI=“Hue”,DIACHI=“Hànội”, DIACHI=“HCMC”}
thì Pr là đầy đủ vì mỗi bộ của mỗi mảnh DUANi đều có
xác suất được truy xuất như nhau.
Tuy nhiên nếu thay đổi tập ứng dụng
Pr={DIACHI=“Hue”,DIACHI=“Hànội”, DIACHI=“HCMC”,
NGANSACH<200000} thì sẽ có một số bộ của quan hệ
DUANi nào đó sẽ không được truy xuất bởi vị từ
NGANSACH<200000.
Để Pr là đầy đủ thì
Pr={DIACHI=“Hue”,DIACHI=“Hànội”, DIACHI=“HCMC”,
NGANSACH<200000, NGANSACH200000}
Ví dụ (tt)
57
b. Xét về tính cực tiểu của tập vị từ
Nếu tất cả vị từ của tập Pr đều có liên đới đến việc
phân mảnh và không có hai vị từ nào là tương đương
nhau thì Pr được gọi là cực tiểu.
Ví dụ: tập Pr ở ví dụ trên là cực tiểu. Tuy nhiên nếu
thêm vào Pr vị từ TENDA=“RUP” thì Pr không còn cực
tiểu, vì vị từ này không liên quan đến việc phân mảnh.
Chú ý rằng:
Khái niệm cực tiểu liên quan đến vấn đề tối ưu bộ
nhớ, tối ưu tập các thao tác trên tập câu truy vấn.
Khái niệm đầy đủ gán chặt mục tiêu của bài toán
3.4.6 Thuật toán phân mảnh ngang
58
c. Thuật toán COM_MIN
Mục đích: tìm một tập vị từ cực tiểu và đầy đủ Pr‟
bằng cách loại bỏ các vị từ dư thừa.
Quy tắc 1: (quy tắc cơ bản về MIN và COM): QT1
Pr‟ là COM_MIN nếu mỗi vị từ của Pr‟ phân hoạch một
quan hệ hoặc một mảnh thành ít nhất hai phần.
Ký hiệu:
fi Pr': mảnh fi được định nghĩa theo một vị từ hội sơ
cấp trên các vị từ của Pr'
3.4.6 Thuật toán phân mảnh ngang
59
Input: quan hệ R, tập các vị từ đơn giản Pr
Output: Pr': tập vị từ đơn giản đầy đủ và cực tiểu.
Declare
F: tập các mảnh hội sơ cấp
Begin
Pr‟=; F=;
For each vị từ pPr sao cho p phân hoạch R theo QT1 Do
begin
Pr„:= Pr‟ p; Pr :=Pr - p;
F := F f {f là mảnh hội sơ cấp theo p}
end {đã chuyển các vị từ có phân mảnh R vào Pr‟}
Thuật toán COM_MIN
Tìm các vị từ có liên
đới và phân hoạch
quan hệ đã cho
60
Repeat
For each vị từ pPr‟ Do
If p phân hoạch một mảnh fk của Pr‟ theo QT1 Then
begin
Pr„:= Pr‟ p; Pr := Pr - p;
F := F f {f là mảnh hội sơ cấp theo p}
end
Until Pr‟ đầy đủ {không còn p nào phân mảnh f của Pr‟}
For each vị từ pPr‟ Do
If p‟ mà pp‟ Then
begin
Pr„:= Pr‟ - p;
F := F - f
end {đã kiểm tra tính cực tiểu}
End. {COM_MIN}
Thuật toán COM_MIN (tt) Thêm các vị từ co phân hoạch
các mảnh vào tập Pr‟, để bảo
đảm tính đầy đủ của Pr‟.
Kiểm tra tính cực
tiểu của Pr‟.
11
61
Bước 1: Xác định Pr' là tập vị từ đơn giản đầy đủ và
cực tiểu.
Bước 2: suy dẫn ra tập các vị từ hội sơ cấp có thể
định nghĩa trên các vị từ trong tập Pr„. Các vị từ hội sơ
cấp này sẽ xác định các mảnh "ứng củ viên " cho bước
cấp phát.
Bước 3: loại bỏ một số mảnh vô nghĩa. Điều này
được thực hiện bằng cách xác định những vị từ mâu
thuẫn với tập các phép kéo theo I.
Thiết kế thuật toán phân mảnh ngang nguyên thủy
62
Ví dụ: Giả sử Pr' ={p1,p2}, trong đó:
p1: att = value_1
p2: att = value_2
và miền giá trị của att là {value_1,value_2},
Rõ ràng I chứa hai phép kéo theo với khẳng định:
i1: (att=value_1) (att=value_2)
i2: (att=value_1) (att=value_2)
Bốn vị từ hội sơ cấp sau đây được tính theo Pr:
m1: (att=value_1) (att=value_2)
m2: (att=value_1) (att=value_2)
m3: (att=value_1) (att=value_2)
m4: (att=value_1) (att=value_2)
Trong trường hợp này các vị từ hội sơ cấp m1 và m4 mâu thuẫn
với các phép kéo theo của I do đó sẽ bị loại ra khỏi M.
Thiết kế thuật toán phân mảnh ngang nguyên thủy
63
Thuật toán phân mảnh ngang nguyên thủy
d. Thuật toán PHORIZONTALInput: quan hệ R, tập các vị từ đơn giản Pr
Output: M: tập các vị từ hội sơ cấp
Begin
Pr‟ := COM_MIN(R,Pr); {Pr‟ là đầy đủ và cực tiểu}
Xác định tập M có các vị từ hội sơ cấp;
Xác định tập I các phép kéo theo giữa các pi Pr‟;
For each mi M do
If mi mâu thuẫn với I then M := M mi;
End. {PHORIZONTAL}
64
Ví dụ minh họa (1/8)
Ví dụ1:
Xét CSDL về công ty phần mềm đã cho và hai quan hệ cần phải
phân mảnh ngang nguyên thuỷ là TLUONG và DUAN.
Giả sử rằng chỉ có một ứng dụng truy xuất TLUONG. Ứng dụng
này kiểm tra thông tin lương và xác định số lương sẽ tăng.
Giả sử rằng các mẫu tin nhân viên được quản lý ở hai nơi, một
nơi xử lý các mẫu tin có lương 3000$ và một nơi khác xử lý
các mẫu tin của những nhân viên có lương > 3000$.
Như vậy, câu truy vấn phải được đưa ra ở cả hai nơi.
Tập vị từ đơn giản được sử dụng để phân hoạch quan hệ
TLUONG là:
p1: LUONG 3000 và p2: LUONG > 3000
65
Ví dụ minh họa (2/8)
Chọn tập vị từ đơn giản khởi đầu là Pr = {p1, p2}.
Áp dụng thuật toán COM_MIN với i = 1 làm giá trị khởi đầu sinh
ra Pr‟ = {p1}.
Pr‟ là tập vị từ đầy đủ và cực tiểu vì p2 không phân hoạch f1
(là mảnh hội sơ cấp được tạo ra ứng với p1) theo Quy tắc 1.
Ta có thể tạo ra các vị từ hội sơ cấp sau đây làm các phần tử
của M (M là tập các vị từ hội sơ cấp sinh ra từ Pr‟) :
m1: (LUONG 3000)
m2: (LUONG 3000) LUONG > 3000
Sau đó chúng ta định nghĩa hai mảnh
Fs = {TLUONG1, TLUONG2} theo M như sau:
CHUCVU LUONG
Lập trình viên
Thiết kế DL
3200
4000
TLUONG1
CHUCVU LUONG
Kỹ sư điện
Phân tích HT
2000
2500
TLUONG2
M={m1, m2}
Phân mảnh ngang cho quan hệ TLUONG66
Ví dụ minh họa (3/8)
Ví dụ 2:
Xét quan hệ DUAN. Giả sử rằng có 2 ứng dụng:
a. Ứng dụng 1: được đưa ra tại 3 vị trí, cần tìm tên và
ngân sách của các dự án khi cho biết địa chỉ.
Theo ký pháp SQL câu truy vấn được viết là:
SELECT TENDA, NGANSACH
FROM DUAN
WHERE DIACHI = Value
Đối với ứng dụng này, các vị từ đơn giản có thể được
dùng là:
p1: DIACHI = “Huế”
p2: DIACHI = “Hà nội ”
p2: DIACHI = “HCMC”
12
67
Ví dụ minh họa (4/8)
b. Ứng dụng 2: được đưa ra tại 2 vị trí và phải do Ban
điều hành dự án đưa ra. Những dự án có ngân sách
dưới 200000$ được quản lý tại một vị trí, còn những
dự án có ngân sách lớn hơn 200000$ được quản lý tại
vị trí thứ hai.
Do đó, các vị từ đơn giản phải được sử dụng để phân
mảnh theo ứng dụng thứ hai là
p4: NGANSACH 200000
p5: NGANSACH > 200000
68
Ví dụ minh họa (5/8)
Nếu kiểm tra bằng thuật toán COM_MIN, rõ ràng tập
Pr’ = {p1, p2, p3, p4, p5} là đầy đủ và cực tiểu.
Dựa trên Pr’, ta có thể định nghĩa 6 vị từ hội sơ cấp sau
để tạo ra M:
m1: (DIACHI = “Huế”) (NGANSACH 200000)
m2: (DIACHI = “Huế”) (NGANSACH > 200000)
m3: (DIACHI = “Hà nội”) (NGANSACH 200000)
m4: (DIACHI = “Hà nội”) (NGANSACH > 200000)
m5: (DIACHI = “HCMC”) (NGANSACH 200000)
m6: (DIACHI = “HCMC”) (NGANSACH > 200000)
69
Ví dụ minh họa (6/8)
Chú ý rằng, các vị từ m1, ..., m6 không phải là các vị từ
hội sơ cấp duy nhất có thể được tạo ta. Chẳng hạn,
vẫn có thể định nghĩa các vị từ p1 p2 p3 p4 p5.
Tuy nhiên các phép kéo hiển nhiên là:
i1: p1 p2 p3
i2: p2 p1 p3
i3: p3 p1 p2
i4: p4 p4 p5
i5: p5 p4
i6: p4 p5
i7: p5 p4
cho phép loại bỏ những vị trí từ hội sơ cấp này và
chúng ta còn lại m1 đến m6. 70
Ví dụ minh họa (7/8)
Theo CSDL đã cho, ta chứng tỏ rằng các phép kéo
theo dưới đây đúng hoặc không:
i8: DIACHI = “Huế” (NGANSACH > 200000)
i9: DIACHI = “HCMC” (NGANSACH 200000)
i10: (DIACHI = “Huế”) NGANSACH 200000
i11: (DIACHI = “HCMC”) NGANSACH > 200000
Chú ý rằng các phép kéo theo phải được định nghĩa
theo ngữ nghĩa của CSDL, chứ không phải theo các
giá trị hiện tại.
Một số mảnh được định nghĩa theo M = {m1, …, m6}
có thể rỗng nhưng chúng vẫn là các mảnh.
Qua ngữ nghĩa của CSDL không có bằng chứng nào
cho thấy rằng các phép kéo theo từ i8 đến i11 là đúng.
71
Ví dụ minh họa (8/8)
Kết quả của phân mảnh ngang nguyên thuỷ cho DUAN là tạo ra
sau mảnh FDUAN = {DUAN1, DUAN2, DUAN3, DUAN4, DUAN5,
DUAN6} của quan hệ DUAN theo các vị từ hội sơ cấp M.
Tuy nhiên các mãnh DUAN2, DUAN5 là rỗng nên chỉ còn 4 mảnh
sau:
MADA TENDA NGANSACH ĐIACHI
D1 CSDL 150000 Huế
MADA TENDA NGANSACH ĐIACHI
D4 PHÁT TRIỂN 310000 HCMC
MADA TENDA NGANSACH ĐIACHI
D2 CÀI ĐẶT 135000 Hà nôi
MADA TENDA NGANSACH ĐIACHI
D3 BẢO TRÌ 250000 Hà nội
DUAN4DUAN3
DUAN2DUAN1
Phân mảnh ngang cho quan hệ DUAN
Tiểu luận:
Tìm hiểu các thuật toán và phân mảnh dọc quan hệ
13
73
3.5 Cấp phát tài nguyên trong hệ phân tán
3.5.1 Bài toán cấp phát (allocation problem):
Giả sử có một tập các mảnh F = {F1, F2, ..., Fk } và một
mạng máy tính bao gồm các vị trí S= {S1, S2, ..., Sm }
trên đó có một tập các ứng dụng Q={Q1, Q2, ..., Qq }
đang thực thi.
Hãy tìm một phân phối tối ưu các mảnh F cho các vị
trí S.
Một phân phối được gọi là tối ưu nếu thỏa mãn hai
yếu tố sau:
a. Chi phí nhỏ nhất
b. Hiệu quả
74
3.5 Cấp phát tài nguyên trong hệ phân tán
a. Chi phí nhỏ nhất: hàm chi phí bao gồm:
• Chi phí lưu mỗi mảnh dữ liệu Fi tại vị trí Sj
• Chi phí truy vấn mảnh Fi tại vị trí Sj
• Chi phí cập nhật Fi tại tất cả các vị trí có chứa nó
• Chi phí truyền dữ liệu.
Bài toán cấp phát sẽ tìm một lược đồ cấp phát với
hàm chi phí là cực tiểu.
b. Hiệu quả: chiến lược cấp phát được thiết kế nhằm
cực tiểu hóa thời gian thực hiện và tăng tối đa lưu
lượng hệ thống tại mỗi vị trí.
75
3.5 Cấp phát tài nguyên trong hệ phân tán
Một vài nhận xét
Bài toán cấp phát tổng quát, ký hiệu DAP
(Database Allocation Problem), là một bài toán NP-
đầy đủ.
Người ta sử dụng các thuật giải heuristic để tìm lời
giải gần tối ưu cho loại bài toán này.
Hiện nay, chưa có một mô hình heuristic tổng quát
nào nhận một tập các mảnh và sinh ra một chiến
lược cấp phát gần tối ưu ứng với các ràng buộc
cho trước.
Các mô hình đã được phát triển chỉ mới đưa ra một
số giả thiết đơn giản hóa và dễ áp dụng cho một số
cách đặt vấn đề cụ thể76
3.5 Cấp phát tài nguyên trong hệ phân tán
3.5.2 Thông tin cấp phát
Các thông tin định lượng về cơ sở dữ liệu
Thông tin về các ứng dụng chạy trên đó
Thông tin về cấu trúc mạng
Thông tin về khả năng xử lý và giới hạn lưu trữ của
mỗi vị trí trên mạng.
77
3.5 Cấp phát tài nguyên trong hệ phân tán
a) Thông tin về cơ sở dữ liệu
Độ tuyển của mảnh Fj ứng với câu truy vấn qi, ký
hiệu seli(FJ), là số lượng các bộ của Fj cần được
truy xuất để thực hiện câu truy vấn qi.
Kích thước của một mảnh Fj:
size(Fj) = card(Fj)*length(Fj)
Trong đó length(Fj) là chiều dài (tính theo byte)
của một bộ trong mảnh Fj.
78
3.5 Cấp phát tài nguyên trong hệ phân tán
b) Thông tin về ứng dụng
Số truy xuất đọc do câu truy vấn qi thực hiện trên
mảnh Fj trong mỗi lần chạy của nó, ký hiệu RRij.
Số truy xuất cập nhật do câu truy vấn qi thực hiện
trên mảnh Fj trong mỗi lần chạy của nó, ký hiệu
URij.
Ma trận truy vấn:
1 nếu truy vấn qi có cập nhật mảnh Fj
0 trong trường hợp ngược lạiUM=(uij), uij =
1 nếu truy vấn qi cần đọc mảnh Fj
0 trong trường hợp ngược lạiRM=(rij), rij =
14
79
3.5 Cấp phát tài nguyên trong hệ phân tán
c) Thông tin về vị trí
Tại mỗi vị trí cần phải biết về khả năng lưu trữ và xử
lý của nó.
Chi phí đơn vị để lưu dữ liệu tại vị trí Sk.
Ký hiệu USCk
Chi phí xử lý cho một đơn vị công việc tại vị trí Sk.
Ký hiệu LPCk
Chú ý: đơn vị công việc cần phải giống với đơn vị
của RR và UR.
80
3.5 Cấp phát tài nguyên trong hệ phân tán
d) Thông tin về mạng
Giả sử đang tồn tại một mạng đơn giản, trong đó chi
phí truyền được định nghĩa theo đơn vị bó dữ liệu
(frame).
Ký hiệu gij là chi phí truyền một bó dữ liệu từ vị trí Si
đến vị trí Sj.
Để có thể xác định được số lượng thông báo chúng
ta dùng hàm fsize để xác định kích thước (tính theo
byte) của một bó dữ liệu.
81
3.5 Cấp phát tài nguyên trong hệ phân tán
3.5.3 Mô hình cấp phát
Mục tiêu: giảm thiểu tổng chi phí xử lý và lưu trữ.
Mô hình tổng quát: min(Total Cost) ứng với ràng buộc
về thời gian đáp ứng, ràng buộc lưu trữ và ràng buộc
xử lý.
Biến quyết định xij, được định nghĩa:
1 nếu mảnh Fi được lưu tại vị trí Sj
0 trong trường hợp ngược lạixij =
82
3.5 Cấp phát tài nguyên trong hệ phân tán
Tổng chi phí
Hàm tổng chi phí có hai thành phần:
Chi phí xử lý truy vấn
Chi phí lưu trữ.
Công thức xác định tổng chi phí:
Trong đó,
STCjk: chi phí lưu trữ mảnh Fj tại vị trí Sk.
QPCi: chi phí xử lý câu truy vấn của ứng dụng qi.
Giải thích các chữ viết tắt:
TOC (Total Cost), QPC (Query Processing Cost), STC (Storing Cost)
jk
FFSS
i
STCQPCTOCjki
83
3.5 Cấp phát tài nguyên trong hệ phân tán
Xác định chi phí lưu trữ STCjk :
Chi phí lưu trữ mảnh Fj tại vị trí Sk được xác định bởi:
STCjk = USCk * size (Fjk) * xjk
Trong đó,
USCk là chi phí đơn vị để lưu dữ liệu tại vị trí Sk.
size(Fjk) là kích thước của mảnh Fj được lưu tại vị trí
Sk và được xác định bởi công thức:
size(Fj) = card(Fj)*length(Fj)
1 nếu mảnh Fj được lưu tại vị trí Sk
0 trong trường hợp ngược lạixjk =
84
3.5 Cấp phát tài nguyên trong hệ phân tán
Xác định chi phí xử lý truy vấn:
Chi phí xử lý truy vấn QPC cho ứng dụng qi là:
QPCi = PCi + TCi
Trong đó,
PC gồm có ba hệ số chi phí:
Chi phí truy xuất AC (Access Cost)
Chi phí toàn vẹn IE (Integrity Enforcement)
Chi phí điều khiển đồng thời CC (Concurrency Control):
PCi = ACi + IEi + CCi
15
85
3.5 Cấp phát tài nguyên trong hệ phân tán
Xác định ACi:
kjkijijijji
FFSS
i LPCxRRrURuACjk
**)**(
1 nếu truy vấn qi có cập nhật mảnh Fj
0 trong trường hợp ngược lạiUM=(uij), uij =
1 nếu truy vấn qi cần đọc mảnh Fj
0 trong trường hợp ngược lạiRM=(rij), rij =
RRij: Số truy xuất đọc do câu truy vấn qi thực hiện trên
mảnh Fj trong mỗi lần chạy của nó.
URij: Số truy xuất cập nhật do câu truy vấn qi thực hiện trên
mảnh Fj trong mỗi lần chạy của nó.
LPCk : chi phí xử lý cho một đơn vị công việc tại vị trí Sk.
86
3.5 Cấp phát tài nguyên trong hệ phân tán
Xác định TCUi:
Thành phần cập nhật của hàm truyền dữ liệu là:
Số hạng thứ nhất để gửi thông báo cập nhật từ vị trí
gốc o(i) của qi đến tất cả bản sao cần cập nhật.
Số hạng thứ hai dành cho thông báo xác nhận.
)( )( **** iokikij
FFSS
kioikij
FFSS
i gxugxuTCUjkjk
87
3.5 Cấp phát tài nguyên trong hệ phân tán
jok
jji
jkijkiojkijSS
FF
i gfsize
FlengthFselxrgxuTCR
kj
.. * *
***min
Số hạng thứ nhất trong TCR là chi phí truyền yêu
cầu chỉ đọc đến những vị trí có bản sao của mảnh
cần truy xuất.
Số hạng thứ hai để truyền các kết quả từ những vị
trí này đến vị trí yêu cầu.
Vậy chi phí truyền cho vấn tin qi là:
TCi = TCUi + TCRi
Thành phần chi phí chỉ đọc được xác định:
88
3.5 Cấp phát tài nguyên trong hệ phân tán
Các ràng buộc
a) Ràng buộc thời gian đáp ứng:
thời gian thực thi của qi thời gian đáp ứng lớn nhất
của qi , qiQ.
b) Ràng buộc lưu trữ:
STCjk khả năng lưu trữ tại vị trí Sk, Sk S
c) Ràng buộc xử lý là:
tải trọng xử lý của qi tại Sk khả năng xử lý tại vị trí
Sk, Sk SS
89
Câu hỏi cuối chƣơng
1.Các vấn đề cần phải làm để thiết kế một HT phân
tán
2.Các sản phẩm yêu cầu sau khi phân tích thiết kế
một HT phân tán
3.Các chiến lược phân tán dữ liệu
4.Nội dung của phương pháp thiết kế từ trên xuống
5.Các kiểu phân mảnh và các yêu cầu của việc phân
mảnh. Cho ví dụ.
6.Thuật toán phân mảnh ngang nguyên thủy:
COM_MIN, PHORIZONTAL
7.Bài toán cấp phát
90
Đề tài luận văn tốt nghiệp liên quan
1. Tìm hiểu một số kỹ thuật tiên tiến về phân mảnh lớp
đối tượng
Tài liệu tham khảo:
Horizontal Fragmentation in Object DBMS: New
Issues and Performance Evaluation1
2. Tìm hiểu kỹ thuật định vị dữ liệu không nhân bản
trong DDBDS
Tài liệu tham khảo:
1. Non-replicated Dynamic Data Allocation in
Distributed Database Systems (2009)
2. Data allocation in distributed database systems,
Peter M.G Apers
3. Data Allocation in Distributed Database Systems,
Samira Tasharofi, Reza Bass
16
91
Đề tài luận văn tốt nghiệp liên quan
3. Tìm hiểu bài toán cấp phát trong DDBMS với các
tác tử di động.
Tài liệu tham khảo:
1. Data Allocation in Distributed Database
Systems Performed by Mobile Intelligent Agents, Horea
Grebla, Grigor Moldovan, Sergiu Adrian Darabant, Alina
Câmpan. (2007)
2. Near Neighborhood Allocation (NNA): A Novel
Dynamic Data Allocation Algorithm in DDB, Samira
Tasharofi, Reza Basseda, University of Tehran, ECE
Department92
Đề tài luận văn tốt nghiệp liên quan
4. Nghiên cứu một số thuật giải hericstic trong việc
cấp phát dữ liệu của hệ phân tán.
Tài liệu tham khảo:
1. A Heuristic Approach for Horizontal
Fragmentation and Allocation in DOODB.
2. Data Allocation in Distributed Database
MỘT VÍ DỤ VỀ THIẾT KẾ CSDL PHÂN TÁN
Hệ thống thông tin
quản lý bán vé máy bay
I. Phát biểu bài toán
Hệ thống bán vé máy bay để phục vụ cho việc đi lại
của hành khách trong và nước. Để hệ thống hoạt
động tốt thì không chỉ đầu tư về nguồn nhân lực mà
còn đầu tư về hệ thống mạng và phần mềm chuyên
dùng để phục vụ nhu cầu của khai thác thông tin của
hành khách.
Hệ thống bán vé máy bay của hãng hàng không
Pacific Airlines giúp cho hành khách xem các
chuyến bay, mua vé một cách nhanh chóng và thuận
lợi. Ở đây hành khách có thể mua vé tại các đại lý,
quầy bán vé trong cả nước và chọn một trong các
hạng vé của chuyến bay phù hợp với yêu cầu của
mình.
I. Phát biểu bài toán
Để có thông tin về một chuyến bay hành khách sẽ liên lạc với
đại lý bán vé qua điện thoại hoặc qua việc xem xét thông tin
trên Website của hảng.
Muốn mua vé, hành khách có 3 lựa chọn: qua điện thoại, qua
Website hoặc trực tiếp đến đại lý bán vé.
• - Nếu qua điện thoại, khách sẽ đưa các thông tin của bản
thân cùng thông tin của chuyến bay muốn đi để nhân viên
bán vé biết. Sau đó nhân viên bán vé sẽ hẹn thời gian để đến
lấy vé.
• - Nếu qua Website, khách chỉ việc điền các thông tin cần
thiết vào trang Đăng ký. Sau đó khách ra đại lý để nhận vé.
• - Nếu đến trực tiếp thì ngoài việc đưa ra các thông tin chi
tiết, khách sẽ được nhận các thông tin ngay lập tức về tình
trạng chuyến bay và nhận vé.
I. Phát biểu bài toán
Việc thanh toán chỉ diễn ra sau khi khách đã nhận được vé.
Khách có thể thanh toán theo hai hình thức tiền mặt hoặc
thẻ tín dụng.
Khách hàng phải cung cấp các thông tin cá nhân sau:
• + Số CMND, Họ tên, Địa chỉ, SĐT, Nghề nghiệp (nếu là
khách nước ngoài thì thêm các thông tin: Số hộ chiếu, quốc
tịch)
Thông tin chuyến bay khách muốn đi bao gồm :
• + Nơi đi, + Nơi đến, + Thời gian đi
Thông tin về vé khách muốn đi bao gồm :
• + Loại vé ( Not Transferable, Transferable )
• + Thời hạn ( 15 ngày, 1 tháng, 3 tháng, 6 tháng, 1 năm )
• + Hạng ( Business Class, Economy Class )
Sau khi nhận được vé, khách sẽ được nhân viên thông báo
mã số đặt chỗ.
17
I. Phát biểu bài toán
Công việc chính của việc xây dựng hệ thống bán vé
cho hãng hàng không Pacific Airline là phải xác định
được yêu cầu, nhiệm vụ trọng tâm của hệ thống
thông tin đang xét, xác định kiến trúc của hệ thống
thông tin và chức năng cơ bản của hệ thống.
Không giống như các hãng hàng không khác, Pacific
Airline là hãng hàng không mà có khả năng bao phủ
lớn, thuận tiện cho mọi hành khách có nhu cầu đi lại
rộng trong khu vực và trên toàn thế giới.
I. Phát biểu bài toán
Cấu trúc của một vé máy bay có dạng
I. Phát biểu bài toán
Thẻ lên máy bay của hành khách có dạng:
II. Phân tích hệ thống
Các chức năng cơ bản của hệ thống thông tin phục vụ
công tác bán vé của Pacific Airlines gồm:
Quản lý chuyến bay: gồm các chức năng như quản
lý tuyến bay, quản lý lịch bay, quản lý đơn giá vé,…
Quản lý vé: gồm các chức năng như quản lý số vé
trong mỗi chuyến bay, thống kê vé đã bán và còn
thừa trong mỗi chuyến bay, thống kê vé bán ra và
còn trong ngày, tháng, năm.
Quản lý đại lý: gồm các chức năng như quản lý
thông tin đại lý, quản lý bán vé,…
Quản lý hành khách: gồm các chức năng như quản
lý thông tin hành khách, quản lý thông tin mua vé,…
II. Phân tích hệ thống
Hệ thống thông tin phục vụ cho việc bán vé máy bay
của Pacific Airlines có thể chia làm 3 mức sau:
• 1. Mức quyết định
• Đây là mức xử lý thông tin đầu tiên của hệ thống,
mức này do ban lãnh đạo hoặc người được ủy
quyền quyết định. Thông tin đầu vào của hệ thống là
việc xây dựng các hành trình chuyến bay, các mức
đơn giá cho từng hạng vé của mỗi tuyến bay và các
thông tin từ bên ngoài như ban quản lý hàng không,
các ban ngành, cơ quan, hành khách,…. Kết quả
cuối cùng (đầu ra) của hệ thống là quyết định là các
chỉ thị, quyết định chỉ đạo hoạt động của hệ thống
bán vé máy bay.
II. Phân tích hệ thống
• 2. Mức trung gian (mức xử lý, trung chuyển
thông tin)
• Đây là mức thực hiện xử lý, hỗ trợ cho ra quyết
định của ban lãnh đạo. Các bộ phận, các đơn vị như
bộ phận xây dựng hành trình chuyến bay, bộ phận
quản lý các đại lý, bộ phận quản lý vé, bộ phận quản
lý và chăm sóc hành khách, các phòng ban chức
năng trong công ty, …..
18
II. Phân tích hệ thống
• 3. Mức tác nghiệp (mức thực hiện)
• Đây là mức thấp nhất của hệ thống thông tin là
các đại lý bán vé, phòng chăm sóc hành khách,….
chịu trách nhiệm thực hiện nhiệm vụ bán vé máy bay
của Pacific Airlines.
• Mức tác nghiệp chịu sự điều khiển của hệ thống
quyết định thông qua các mức thông tin. Thông tin
đầu vào của hệ thống tác nghiệp là các thông tin từ
hệ thống quyết định, thông tin đầu ra của hệ thống là
báo cáo thống kê vé bán được, vé không bán được,
thống kê các hành khách tham gia mua vé.
II. Phân tích chức năng
• Về cơ bản, hệ thống bán vé máy bay của Pacific
Airlines gồm các phân hệ chính sau:
• 1. Phân hệ quản lý chuyến bay
•
• Công việc quan trọng nhất của quản lý chuyến
bay là xây dựng được hành trình chuyến bay: nơi đi,
nơi đến, thời gian đi, thời gian đến, từ đó xây dựng
đơn giá cho tuyến bay ứng với từng loại máy bay và
từng hạng vé.
II. Phân tích chức năng
• 2. Phân hệ quản lý vé
• Công việc quản lý vé gồm số vé của mỗi chuyến bay,
quản lý số vé bán ra, số vé còn, tạo báo cáo tổng hợp cho
từng ngày, tháng, tuần năm,…
• Quản lý vé có ý nghĩa rất lớn đối với việc doanh thu của
tổ chức và thúc đẩy tổ chức phát triển. Từ đó tìm mọi biện
pháp để tư vấn cho bộ phân quản lý chuyến bay đưa ra giá
vé hợp lý, và khuyến mãi thu hút hành khách mua vé.
• 3. Phân hệ quản lý đại lý
• Đây là công việc quản lý việc mở các đại lý nhằm mục
đích đưa vé đến nơi gần nhất tạo điều kiện thuận lợi cho
hành khách mua vé.
• Công việc chính là thêm mới các đại lý vào hệ thống,
thống kê các đại lý, thay đổi thông tin đại lý,…
II. Phân tích chức năng
• 4. Phân hệ quản lý hành khách
• Đây là đối tượng chính sử dụng hệ thống để hệ
thống hoạt động lâu dài là đối tượng đem lại lợi
nhuận cho tổ chức.
• Công việc chính là thêm thông tin hành khách
vào hệ thống, sửa đổi thông tin hành khách, quản lý
các yêu cầu của hành khách,…
III. Thiết kế cơ sở dữ liệu
• 1. Mô hình quan niệm về dữ liệu
• Cần phải tổ chức các thực thể và tiến hành chuẩn hóa
chúng về dạng chuẩn 3NF hoặc BCNF được các thực thể
sau:
• 1. Tập thực thể SAN_BAY dùng để lưu trữ các thông tin về
các sân bay:
• MA_SB: Mã sân bay
• TEN_SB: Tên sân bay
• 2. Tập thực thể MAY_BAY dùng để lưu trữ các thông tin về
các loại máy bay:
• MA_MB: Mã máy bay
• TEN_MB: Tên máy bay
• SO_GHE: Số ghế của máy bay.
III. Thiết kế cơ sở dữ liệu
• 1. Mô hình quan niệm về dữ liệu
• 3. Tập thực thể GHE dùng để lưu trữ các thông tin về số ghế
của máy bay:
• STT
• MA_MB: Stt và Mã máy bay là khóa chính
• KY_HIEU_GHE: Ký hiệu ghế.
• 4. Tập thực thể TUYEN_BAY dùng để lưu trữ các thông tin
các tuyến bay có trong hệ thống
• MA_TB: Mã tuyến bay là khóa của thực thể
• MA_SB_DI: Mã sân bay đi
• MA_SB_DEN: Mã sân bay đến
19
III. Thiết kế cơ sở dữ liệu
1. Mô hình quan niệm về dữ liệu
• 5. Tập thực thể CHUYEN_BAY dùng để lưu trữ các thông về
các CB chuyến bay
• MA_CB: Mã chuyến bay là khóa chính của
thực thể
• SO_HIEU_CB: Số hiệu chuyến bay
• THU: Thứ
• GIO_BAY: Giờ bay
• GIO_DEN: Giờ đến
• 6. Tập thực thể HANG_VE dùng để lưu trữ các thông tin về
các hạng vé
• MA_HV: Mã hạng vé là khóa của thực thể
• TEN_HV: Tên hạng vé
•
III. Thiết kế cơ sở dữ liệu
1. Mô hình quan niệm về dữ liệu
• 7. Tập thực thể VE dùng để lưu trữ các thông tin vé chuyến
bay
• MA_VE: Mã vé là khóa chính của tập thực thể
• NGAY_BAY: Ngày bay
• THANH_TIEN: Thành tiền
• 8. Tập thực thể DAI_LY lưu trữ các thông tin về các đại lý
• MA_DL: Mã đại lý là khóa của tập thực thể
• HO_TEN: Họ tên của chủ đại lý
• TIEN_CUOC: Tiền đặt cọc khi mở đại lý
• DT: Điện thoại
• DC: Địa chỉ
•
III. Thiết kế cơ sở dữ liệu
1. Mô hình quan niệm về dữ liệu
• 9. Tập thực thể HANH_KHACH dùng để lưu trữ các thông tin
về hành khách.
• MA_HK: Mã hành khách là khóa của thực thể
• HO_TEN: Họ tên hành khách
• HO_CHIEU: Hộ chiếu
• CMND: Chứng minh nhân dân
• DT: Điện thoại
• DC: Địa chỉ
• Từ các thực thể trên ta có mô hình thực thể quan hệ sau:
2. Mô hình ER
3. Mô hình tổ chức dữ liệu
•SAN_BAY(MA_SB, TEN_SB, MA_MB)
MAY_BAY(MA_MB, TEN_MB, SO_GHE, MA_CB, MA_HV, MA_TB)
CHUYEN_BAY(MA_CB, SO_HIEU_CB,THU, GIO_BAY, GIO_DEN, MA_TB)
TUYEN_BAY(MA_TB, MA_SB_DI, MA_SB_DEN, MA_MB)
GHE(STT, MA_MB, KY_HIEU_GHE)
HANG_VE(MA_HV, TEN_HV, MA_VE)
CHI_TIET_HANG_VE(MA_HV, MA_TB, SL_VE, DON_GIA)
VE(MA_VE, NGAY_BAY, THANH_TIEN, MA_CB, MA_DL)
DAI_LY(MA_DL, HO_TEN, TIEN_COC, DT, DC)
HANH_KHACH(MA_HK, HO_TEN, HO_CHIEU, CMND, DT, DC, MA_VE)
4. Các kết nối trong CSDL
•Ở đây có 11 đường nối: L1, L2, L3, L4, L5, L6, L7, L8, L9, L10 ,L11
Ta có:
owner(L1) = SAN_BAY và member(L1) = TUYEN_BAY
owner(L2) = MAY_BAY và member(L2) = GHE
owner(L3) = MAY_BAY và member(L3) = CHUYEN_BAY
owner(L4) = TUYEN_BAY và member(L4) = CHUYEN_BAY
owner(L5) = MAY_BAY và member(L5) =
CHI_TIET_HANG_VE
owner(L6) = TUYEN_BAY và member(L5) =
CHI_TIET_HANG_VE
owner(L7) = CHUYEN_BAY và member(L7) = VE
owner(L8) = HANG_VE và member(L8) =
CHI_TIET_HANG_VE
owner(L9) = HANG_VE và member(L9) = VE
owner(L10) = DAI_LY và member(L10) = VE
owner(L11) = HANH_KHACH và member(L11) = VE
20
IV. Thiết kế cơ sở dữ liệu phân tán
• 1. Thiết kế sơ đồ tổng thể của hệ thống
• Sơ đồ tổng thể được định nghĩa như theo cách mô
hình 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ể.
• Theo cách này chúng ta sẽ vẽ các đường nối (L)
có hướng giữa các quan hệ (R, S) ràng buộc nhau
qua phép nối dạng:
• R S
• trong đó R gọi là quan hệ chủ, S gọi là quan hệ
thành viên. Các hàm owner và member để phân biệt
các quan hệ này:
• owner(L) = R và member(L) = S
L
Sơ đồ tổng thể của hệ thống
•
IV. Thiết kế cơ sở dữ liệu phân tán
• 2. Thiết kế phân mảnh
• Bảng phân tích tần suất và nhu cầu khai thác dữ liệu
THỰC THỂ TRỤ SỞ
CHÍNH
CHI
NHÁNH
SAN_BAY L.R H.RWED
MAY_BAY L.RWED H.R
GHE L.RWED H.R
CHUYEN_BAY L.R H.RWED
TUYEN_BAY L.RWED H.R
HANG_VE L.RWED H.R
CHI_TIET_HANG_VE L.R H.RWED
VE L.R H.RWED
DAI_LY L.R H.RWED
HANH_KHACH L.R H.RWED
Trong đó:
W: Tạo mới và ghi
E: Sửa
D: Xóa
R: Đọc
H: Tần suất cao
L: Tần suất thấp
1. Thiết kế phân mảnh dữ liệu
• Chọn vị trí đặt dữ liệu trung tâm
• Dựa vào tần suất sử dụng, khoảng cách địa lý và
hoạt động của hệ thống, phương án phân mảnh dữ
liệu được thực hiện như sau:
• Sử dụng phân mảnh ngang nguyên thủy và phân
mảnh ngang dẫn xuất để chia quan hệ tổng thể
thành ba mảnh đặt tại ba vị trí dựa vào khoảng cách
địa lý giữa ba miền đất nước:
• Vị trí 1: dữ liệu đặt tại miền bắc (Hà Nội)
• Vị trí 2: dữ liệu đặt tại miền trung (Đà Nẵng)
• Vị trí 3: dữ liệu đặt tại miền nam (Sài Gòn)
1. Thiết kế phân mảnh dữ liệu
•Chọn quan hệ tổng thể SAN_BAY làm tiêu chí để
phân mảnh
Phân thành ba mảnh đặt tại ba vị trí để quản lý các
Sân bay ở các vùng lân cận
Sau đó dựa vào các mảnh của Sân bay sẽ dẫn xuất
đến sự phân mảnh của các quan hệ tổng thể còn lại.
Phân rã quan hệ SAN_BAY thành 3 mảnh ngang SAN_BAY1,
SAN_BAY2, SAN_BAY3:
SAN_BAY1 = MA_SB = „Các mã sân bay mà vị trí 1 quản lý‟ (SAN_BAY)
SAN_BAY2 = MA_SB = „Các mã sân bay mà vị trí 2 quản lý‟ (SAN_BAY)
SAN_BAY3 = MA_SB = „Các mã sân bay mà vị trí 3 quản lý‟ (SAN_BAY)
Sơ đồ tổng thể của hệ thống
•Phân rã quan hệ TUYEN_BAY thành các mảnh ngang
TUYEN_BAY1, TUYEN_BAY2, TUYEN_BAY3 được
định nghĩa như sau:
TUYEN_BAY1 = TUYEN_BAY SAN_BAY1
TUYEN_BAY2 = TUYEN_BAY SAN_BAY2
TUYEN_BAY3 = TUYEN_BAY SAN_BAY3
trong đó, thuộc tính mã sân bay đi của quan hệ
TUYEN_BAY là trường để nối tự nhiên với mã sân
bay của quan hệ SAN_BAY
còn mã sân bay đến của quan hệ TUYEN_BAY sẽ
được chọn giá trị từ các mảnh SAN_BAY1,
SAN_BAY2, SAN_BAY3
21
1. Thiết kế phân mảnh dữ liệu
• Phân rã quan hệ CHUYEN_BAY thành các mảnh
ngang CHUYEN_BAY1, CHUYEN_BAY2,
CHUYEN_BAY3 được định nghĩa như sau:
• CHUYEN_BAY 1 = CHUYEN_BAY TUYEN_BAY 1
• CHUYEN_BAY 2 = CHUYEN_BAY TUYEN_BAY 2
• CHUYEN_BAY 3 = CHUYEN_BAY TUYEN_BAY 3
Phân rã quan hệ CHI_TIET_HANG_VE thành các mảnh ngang
CHI_TIET_HANG_VE1, CHI_TIET_HANG_VE2, CHI_TIET_HANG_VE3,
được định nghĩa như sau:
CHI_TIET_HANG_VE 1 = CHI_TIET_HANG_VE TUYEN_BAY 1
CHI_TIET_HANG_VE 2 = CHI_TIET_HANG_VE TUYEN_BAY 2
CHI_TIET_HANG_VE 3 = CHI_TIET_HANG_VE TUYEN_BAY 3
1. Thiết kế phân mảnh dữ liệu
• Phân rã quan hệ VE thành các mảnh ngang
VE1, VE2, VE3 được định nghĩa như sau:
• VE1 = VE CHUYEN_BAY1
• VE2 = VE CHUYEN_BAY2
• VE3 = VE CHUYEN_BAY3
• Phân rã quan hệ DAI_LY thành các mảnh ngang
DAI_LY1, DAI_LY2, DAI_LY3 được định nghĩa:
• DAI_LY1 là các quầy bán vé của CHUYEN_BAY1
• DAI_LY2 là các quầy bán vé của CHUYEN_BAY2
• DAI_LY3 là các quầy bán vé của CHUYEN_BAY3
1. Thiết kế phân mảnh dữ liệu
• Phân rã quan hệ HANH_KHACH thành các mảnh ngang
HANH_KHACH1, HANH_KHACH2, HANH_KHACH3 được
định nghĩa như sau:
HANH_KHACH1 là các hành khách mua vé CHUYEN_BAY1
mà DAL_LY1 bán
HANH_KHACH2 là các hành khách mua vé CHUYEN_BAY2
mà DAL_LY2 bán
HANH_KHACH3 là các hành khách mua vé CHUYEN_BAY3
mà DAL_LY3 bán
• Đối với các quan hệ MAY_BAY, GHE, HANG_VE dùng
chung cho 3 vị trí nên ta không phân mảnh nên ta thường
xuyên thêm mới và cập nhật đồng bộ giữa 3 vị trí.
2. Thiết kế định vị dữ liệu
Sơ đồ định vị của các mảnh tại các vị trí
1. Thiết kế sơ đồ ánh xạ địa phƣơng
Các đoạn và hình ảnh vật lý của một quan hệ tổng thể
Để hệ thống hoạt động tốt trên môi trường phân tán nên ta
phải tạo bản sao của các bảng dữ liệu tại các vị trí như sau:
3. Sơ đồ ánh xạ địa phƣơng
Trong đó,
R: Gồm các quan hệ tổng thể là SAN_BAY,
TUYEN_BAY, CHUYEN_BAY, CHI_TIET_HANG_VE, VE,
DAI_LY, HANH_KHACH.
Còn quan hệ tổng thể MAY_BAY, GHE, HANG_VE dùng
chung tại ba vị trí nên ta chỉ thêm mới và cập nhật
đồng bộ giữa ba vị trí.
22
V. Thiết kế vật lý tại các trạm
• Do chỉ sử dụng phân mảnh ngang để phân tán dữ liệu
nên cấu trúc vật lý của các bảng dữ liệu tại các trạm đều
giống nhau. Các bảng dữ liệu tương ứng với các thực thể và
mối quan hệ có trong hệ thống như sau:
• Các ký hiệu:
• NULL: N (No, không được rỗng), Y (Yes, có thể rỗng)
• PK (Primary key – khóa chính)
• FK (Foreign key – khóa ngoại)
V. Thiết kế vật lý tại các trạm
STT Tên bảng Ý nghĩa
1 SAN_BAYSân bay, chứa thông tin liên quan đến sân bay
phục vụ cho công tác quản lý các sân bay.
2 MAY_BAYMáy bay, chứa thông tin liên quan đến máy bay
phục vụ cho công tác quản lý các máy bay.
3 GHEGhế, chứa thông tin liên quan đến ký hiệu ghế
trong mỗi máy bay .
4 CHUYEN_BAYChuyến bay, chứa thông tin liên quan đến chuyến
bay phục vụ cho công tác qlý các chuyến bay.
5 TUYEN_BAYTuyến bay, chứa thông tin liên quan đến các
tuyến bay của hệ thống.
V. Thiết kế vật lý tại các trạm
STT Tên bảng Ý nghĩa
6 HANG_VEHạng vé, chứa thông tin liên quan đến hạng
vé chuyến bay mà hành khách lựa chọn.
7CHI_TIET_HANG_VE
Chi tiết hạng vé, chứa thông tin liên quan
đế số lượng vé, đơn giá theo từng hạng vé
của mỗi máy bay ứng với mỗi tuyến bay.
8 VEVé, chứa thông tin liên quan đến thông tin
của vé xuất cho hành khách.
9 DAI_LYĐại lý, chứa thông tin liên quan đến đại lý
phục vụ cho việc bán vé trong hệ thống.
10 HANH_KHACHHành khách, chứa thông tin liên quan đến
hành khách mua vé trong hệ thống.
Cấu trúc các bảng dữ liệu trong hệ thống bán vé máy bay:
Bảng SAN_BAY (Sân bay, chứa thông tin về các sân bay có
trong hệ thống )
Mã sân bay có 3 ký tự XXX, trong đó mã sân bay và tên sân
bay được đặt theo chuẩn của hãng hàng không Việt Nam và
quốc tế.
V. Thiết kế vật lý tại các trạm
ST
TTên trường Kiểu dữ liệu, độ rộng Null Ghi chú
1 MA_SB Varchar2(3) N Mã sân bay (PK)
2 TEN_SB Nvarchar2(30) N Tên sân bay
V. Thiết kế vật lý tại các trạm
STT Tên trường Kiểu dữ liệu, độ rộng Null Ghi chú
1 MA_MB Varchar2(5) N Mã máy bay (PK)
2 TENMB Nvarchar2(30) N Tên máy bay
3 SO_GHE Integer N Số ghế
Bảng MAY_BAY (Máy bay, chứa thông tin về các máy bay trong
hệ thống)
Mã máy bay có 5 ký tự XXXX, trong đó mã máy bay và tên
máy bay được ký hiệu theo hãng hàng không Việt Nam và
quốc tế.
V. Thiết kế vật lý tại các trạm
Mã máy bay có 5 ký tự XXXX, trong đó mã máy bay và tên
máy bay được ký hiệu theo hãng hàng không Việt Nam và
quốc tế.
STT Tên trường Kiểu dữ liệu, độ rộng Null Ghi chú
1 MA_MB Varchar2(5) N (PK)
2 STT Integer N (PK)
3 KY_HIEU_GHE Varchar2(3) N
Bảng GHE (Ghế, chứa thông tin về ký hiệu ghế và số thứ tự của
ghế trong mỗi máy bay để thuận tiện việc in vé lên máy bay cho
hành khách)
Bảng TUYEN_BAY có cấu trúc như sau:
23
V. Thiết kế vật lý tại các trạm
STT Tên trường Kiểu dữ liệu, độ rộng Null Ghi chú
1 MA_TB Varchar2(7) N Mã tuyến bay (PK)
2 MA_SB_DI Varchar2(3) N Mã sân bay đi
3 MA_SB_DEN Varchar2(3) N Mã sân bay đến
Bảng TUYEN_BAY có cấu trúc như sau:
V. Thiết kế vật lý tại các trạm
STT Tên trường Kiểu dữ liệu, độ rộng Null Ghi chú
1 MA_HV Varchar2(4) N Mã hạng vé (PK)
2 TEN_HV Nvarchar2(50) N Tên hạng vé
Bảng HANG_VE (Hạng vé, chứa thông tin các hạng vé
chuyến bay mà hành khách có thể lựa chọn)
Mã hạng vé có 4 ký tự XXXX, mỗi vé chuyến bay có 6 loại
hạng vé sau:
Mỗi hạng vé có sự khác nhau về ghế ngồi, suất ăn, đồ uống
mà hành khách có thể lựa chọn hạng vé cho phù hợp với yêu
cầu của mình.
V. Thiết kế vật lý tại các trạm
STT Tên trường Kiểu dữ liệu, độ rộng Null Ghi chú
1 MA_CB Float N Mã chuyến bay (PK)
2 SO_HIEU_CB Varchar2(3) N Số hiệu chuyến bay
3 MA_MB Varchar2(50) N Mã máy bay (FK)
4 MA_TB Varchar2(7) N Mã tuyến bay (FK)
5 THU Varchar2(1) N Thứ
6 GIO_BAY Varchar2(5) N Giờ bay
7 GIO_DEN Varchar2(5) N Giờ đến
Mã chuyến bay được đánh tự động khi có một chuyến bay được thêm vào
Số hiệu chuyến bay có 3 ký tự XXX, trong đó số hiệu chuyến bay được ký
hiệu theo hãng hàng không việt Nam và quốc tế.
Dựa vào số hiệu chuyến bay ta biết được thứ, giờ bay, giờ đến.
Bảng CHUYEN_BAY (Chuyến bay, chứa thông tin về các
chuyến bay có trong hệ thống )
V. Thiết kế vật lý tại các trạm
Trong mỗi máy bay sẽ chia số ghé theo từng nhóm ghé, mỗi
nhóm ghé sẽ có đơn giá giành riêng cho từng hạng vé trong
mỗi tuyến bay.
Bảng CHI_TIET_HANG _VE (Chi tiết hạng vé, chứa thông tin
liên quan đến số lượng vé, đơn giá cho từng hạng vé, máy bay
và tuyến bay):
STT Tên trường Kiểu dữ liệu, độ rộng Null Ghi chú
1 MA_MB Varchar2(5) N Mã máy bay (PK)
2 MA_HV Varchar2(4) N Mã hạng vé (PK)
3 MA_TB Varchar2(7) N Mã tuyến bay (PK)
4 SL_VE Integer N Số lượng vé
5 DON_GIA Float N Đơn giá
V. Thiết kế vật lý tại các trạm
Trong đó, mỗi khi đại lý xuất một vé cho hành khách thì hệ
thống sẽ tự động trừ trong tài khoản tiền cược 1 khoảng tiền
bằng thành tiền của vé.
Mã đại lý có 8 ký tự có dạng như sau: XXAAAAAA, trong đó:
XX là HN nếu đại lý đó thuộc vị trí 1 (Hà Nội) quản lý
XX là DN nếu đại lý đó thuộc vị trí 2 (Đà Nẵng) quản lý
XX là SG nếu đại lý đó thuộc vị trí 3 (Sài Gòn) quản lý
AAAAAA là số thứ tự khi một có một đại lý mới được thêm vào.
Bảng DAI_LY (Đại lý, chứa thông tin của đại lý)
STT Tên trường Kiểu dữ liệu, độ rộng Null Ghi chú
1 MA_DL Varchar2(8) N Mã đại lý
2 HO_TEN Nvarchar2(40) N Họ tên đại lý
3 TIEN_CUOC Float N Tiền cược
4 DT Nvarchar2(11) Y Điện thoại
5 DC Nvarchar2(50) Y Địa chỉ
V. Thiết kế vật lý tại các trạm
Mã hành khách có 10 ký tự có dạng như sau: XXAAAAAAAA,
trong đó:
XX là HN nếu HK đó mua vé của đại lý thuộc vị trí 1 bán
XX là DN nếu HK đó mua vé của đại lý thuộc vị trí 2 bán
XX là SG nếu HK đó mua vé của đại lý thuộc vị trí 3 bán
AAAAAAAA là số thứ tự khi một có hành khách đến mua vé.
Bảng HANH_KHACH (Hành khách, chứa thông tin của hành khách)
STT Tên trường Kiểu dữ liệu, độ rộng Null Ghi chú
1 MA_HK Varchar2(10) N Mã hành khách
2 HO_TEN Varchar2(40) N Họ tên hành khách
3 HO_CHIEU Varchar2(8) Y Hộ chiếu
4 CMND Varchar2(9) N Chứng minh nhân dân
5 DT Nvarchar2(11) Y Điện thoại
6 DC Nvarchar2(50) Y Địa chỉ
24
V. Thiết kế hệ thống mạng
Mô hình mạng: Client/Server
Hệ QTCSDL: Oracle
Server đóng vai trò Server trung tâm đặt tại Hà Nội, dùng để
quản trị CSDL tại chi nhánh Hà Nội và lưu tất cả bản sao của
các bảng dữ liệu ở các Server chi nhánh. Server trung tâm này
quản lý đến các Server chi nhánh và phân quyền truy cập CSDL
hệ thống. Do vậy Server trung tâm phải đủ mạnh.
Server đặt tại chi nhánh Đà Nẵng đóng vai trò là Client trong
hệ thống. Server chi nhánh này dùng để quản trị CSDL tại chi
nhánh Đà Nẵng và cũng chứa tất cả bản sao của các bảng dữ
liệu ở Server trung tâm
Server đặt tại chi nhánh Sài Gòn đóng vai trò là Client trong hệ
thống. Server chi nhánh này dùng để quản trị CSDL tại chi
nhánh Sài Gòn và cũng chứa tất cả bản sao của các bảng dữ
liệu ở Server trung tâm và Server chi nhánh tại Đà Nẵng.
V. Thiết kế hệ thống mạng
Mô hình mạng của hệ thống bán
vé máy bay
VI. Quản trị cơ sở dữ liệu phân tán của Oracle
1. Quản trị tên CSDL toàn cục
Trong hệ thống CSDL phân tán, mỗi CSDL phải có một tên
toàn cục (Global Database Name) duy nhất dùng để xác định
CSDL. Tên cơ sở dữ liệu toàn cục gồm hai thành phần là tên
CSDL (Database Name) và tên miền (Domain Name). Tên cơ
CSDL từ 1 đến 8 ký tự. Tên miền phải tuân theo chuẩn qui
ước của Internet, các mức trong tên miền phải được cách
nhau bởi dấu chấm.
Sau đây là ví dụ ta đặt tên cho CSDL toàn cục cho 3 vị trí
trong ORACLE
DB_NAME DB_DOMAIN GLOBAL DATABASE NAME
AIRLINE.VN HANOI.AIRLINE.VN
DANANG AIRLINE.VN DANANG.AIRLINE.VN
AIRLINE.VN SAIGON.AIRLINE.VN
VI. Quản trị cơ sở dữ liệu phân tán của Oracle
Xem tên CSDL toàn cục:
SELECT * FROM GLOBAL_NAME
Thay đổi tên CSDL toàn tục:
ALTER DATABASE RENAME GLOBAL_NAME TO
databasename.domain
Ví dụ: Để đổi tên CSDL toàn cục DN.AIRLINE.VN thành
DANANG.AIRLINE.VN ta thực hiện lệnh:
ALTER DATABASE GLOBAL_NAME TO DANANG.AIRLINE.VN
DB_NAME DB_DOMAIN GLOBAL DATABASE NAME
AIRLINE.VN HANOI.AIRLINE.VN
DANANG AIRLINE.VN DANANG.AIRLINE.VN
AIRLINE.VN SAIGON.AIRLINE.VN
VI. Quản trị cơ sở dữ liệu phân tán của Oracle
2. Tạo các liên kết cơ sở dữ liệu
(Database links) :
Mục đích: để hỗ trợ cho các ứng
dụng truy xuất dữ liệu từ xa
(Remote Database).
Một Database links là một con trỏ
trên CSDL cục bộ (local database)
cho phép bạn truy cập đến các đối
tượng dữ liệu trên một CSDL ở xa
(remote database).
Oracle cho phép tạo các Database
links bằng câu lệnh SQL và bằng
giao diện đồ họa.
VI. Quản trị cơ sở dữ liệu phân tán của Oracle
Cú pháp: Tạo các Database links sử dụng câu lệnh SQL:
CREATE [PUBLIC] DATABASE LINK dblink
[CONNECT TO user IDENTIFIED BY password]
[USING „Connect string‟];
Trong đó:
Public: Các user dùng chung Database link
Dblink: Tên Database link
User: Tên user mà ta muốn kết nối tới
Password: Mật khẩu của user mà ta muốn kết nối tới.
Connect_string: Chuỗi mô tả địa chỉ IP của host và SID trên
Server đó.
SID: Định nghĩa của Database
25
VI. Quản trị cơ sở dữ liệu phân tán của Oracle
Ví dụ: Tạo Database link có tên là DN.AIRLINE.VN để kết
nối đến user DN_ADMIN và password là ab123456 của CSDL
toàn cục từ xa có tên là DANANG.AIRLINE.VN của Server có
địa chỉ là 192.168.1.10
CREATE DATABASE LINK "DN.AIRLINE.VN"
CONNECT TO "DN_ADMIN"
IDENTIFIED BY "ab123456"
USING ' (DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.10)(PORT=1521))
)
( CONNECT_DATA=(SERVICE_NAME=DANANG.ARILINE.VN)
)
) '
VI. Quản trị cơ sở dữ liệu phân tán của Oracle
Thực hiện bằng giao diện đồ họa trong Oracle:
VI. Quản trị cơ sở dữ liệu phân tán của Oracle
Sau khi thiết lập Database link thành công ta có thể thực
hiện các công việc sau:
Truy xuất dữ liệu từ xa thông qua tên của Database
link:
Ví dụ: Để xem thông tin hành khách tại chi nhánh tại Đà
Nẵng trong CSDL từ xa qua Database link DN.AIRLINE.VN,
ta sử dụng câu lệnh SQL như sau:
SELECT * FROM [email protected]
Đóng Database links:
Nếu không cần thiết thì nên đóng hoặc xóa các Database
links để đảm bảo an toàn khi truy cập các CSDL từ xa thông
qua hệ phân tán, :
ALTER SESSION CLOSE DATABASE LINK LinkName;
Xóa Database links:
DROP [PUBLIC] DATABASE LINK dblink;148
CHƢƠNG I. TỔNG QUAN VỀ CSDL PHÂN TÁN
HẾT CHƯƠNG 3