Download as pdf or txt
Download as pdf or txt
You are on page 1of 27

21/01/2021

 Kiến trúc tham khảo của CSDL phân tán


 Các loại phân mảnh dữ liệu
– Phân mảnh ngang
• Phân mảnh ngang chính
• Phân mảnh ngang dẫn xuất
– Phân mảnh dọc
– Phân mảnh hỗn hợp
 Tính trong suốt phân tán

1
21/01/2021

Lược đồ toàn cục

Các lược đồ
Lược đồ phân mảnh độc lập nơi

Lược đồ định vị

Lược đồ ánh xạ cục bộ 1 Lược đồ ánh xạ cục bộ 2


(Các nơi khác)

DBMS của nơi 1 DBMS của nơi 2

CSDL cục bộ 1 CSDL cục bộ 2

Một kiến trúc tham khảo dùng cho các CSDL phân tán
3

 Trong suốt phân mảnh


– Lược đồ toàn cục (global schema)
– Lược đồ cục bộ (local schema)
 Trong suốt vị trí (location transparency)
– Lược đồ phân mảnh (fragmentation schema)
– Mảnh (fragment)
 Trong suốt nhân bản (replication
transparency)
– Bản nhân (replica)
4

2
21/01/2021

 Trong suốt ánh xạ cục bộ


– Lược đồ định vị (allocation schema)
– Quan hệ cục bộ (local relation)
 Không trong suốt
– Lược đồ ánh xạ cục bộ (local mapping schema)

R 𝑅11
R1 R1

𝑅21 Nơi 1

R2
𝑅12
R2
R3 𝑅22 Nơi 2

R4 𝑅33
R3
𝑅43 Nơi 3

Quan hệ toàn cục Mảnh Hình ảnh vật lý

Các mảnh và các hình ảnh vật lý của một quan hệ toàn cục
6

3
21/01/2021

 Phân mảnh ngang


(horizontal fragmentation)
 Phân mảnh dọc
(vertical fragmentation)
 Phân mảnh hỗn hợp
(mixed/hybrid fragmentation)

4
21/01/2021

 Quan hệ R được phân rã thành các mảnh R1,


R2, …,Rn.
 Điều kiện đầy đủ (completeness condition)
– Mỗi mục dữ liệu có trong R thì phải có trong
một hoặc nhiều mảnh Ri.
– Phân mảnh ngang

– Phân mảnh dọc

 Điều kiện tái tạo (reconstruction condition)


– Luôn luôn có thể xác định một phép toán
quan hệ , sao cho:

– Phân mảnh ngang

– Phân mảng dọc

10

5
21/01/2021

 Điều kiện tách biệt (disjointness condition)


– Nếu mục dữ liệu di có trong Ri thì nó không
có trong bất kỳ mảnh Rk nào khác. (k≠i).
– Phân mảnh ngang

– Phân mảng dọc: Thuộc tính khóa chính


được lặp lại trong mỗi mảnh nên điều kiện
này thường bị vi phạm.

11

 Phân mảnh ngang chính (primary


horizontal fragmentation) là sự phân chia các
bộ của một quan hệ toàn cục thành các tập
hợp con dựa vào các thuộc tính của quan hệ
này.
 Mỗi tập hợp con được gọi là một mảnh ngang.
 Mỗi mảnh ngang được tạo bởi một phép chọn
trên quan hệ toàn cục.
 Vị từ được sử dụng trong phép chọn gọi là vị
từ định tính hoặc điều kiện chọn.
12

6
21/01/2021

 Ví dụ
– Quan hệ toàn cục
supplier (snum, name, city)
– Các mảnh ngang

– Các vị từ định tính

Xét các điều kiện đúng đắn. 13

 Phân mảnh ngang dẫn xuất (derived


horizontal fragmentation) là sự phân chia các
bộ của một quan hệ toàn cục thành các tập
hợp con dựa vào phân mảnh ngang của một
quan hệ khác (được gọi là quan hệ chủ).
 Vị từ định tính của mảnh ngang dẫn xuất bao
gồm điều kiện kết và vị từ định tính của mảnh
ngang chủ tương ứng.

14

7
21/01/2021

 Ví dụ
– Quan hệ toàn cục

– Các mảnh ngang dẫn xuất

– Các vị từ định tính

15

 Phân mảnh dọc (vertical fragmentation) là


sự phân chia tập thuộc tính của một quan hệ
toàn cục thành tập thuộc tính con, gọi là các
mảnh dọc (vertical fragment), có được bằng
cách chiếu quan hệ toàn cục lên mỗi tập thuộc
tính con.

16

8
21/01/2021

 Ví dụ
– Quan hệ toàn cục

– Phân mảnh dọc không dư thừa

– Phân mảnh dọc dư thừa

17

 Một mảnh ngang được phân mảnh dọc hoặc


một mảnh dọc được phân mảnh ngang
 Ví dụ: cho quan hệ toàn cục

 Phân mãnh hỗn hợp

18

9
21/01/2021

Cây phân mảnh của quan hệ emp


19

 Tính trong suốt của một hệ thống phân tán là


khả năng che khuất các thành phần riêng biệt
của hệ thống đối với người sử dụng và người
lập trình ứng dụng.
 Có 3 mức trong suốt
– Trong suốt phân mảnh
– Trong suốt vị trí
– Trong suốt ánh xạ cục bộ
20

10
21/01/2021

 Lược đồ toàn cục

 Lược đồ phân mảnh

21

 Lược đồ phân mảnh

22

11
21/01/2021

 Ví dụ 1: cho biết tên nhà cung cấp có mã


được nhập từ thiết bị đầu cuối.
 Mức 1: trong suốt phân mảnh

23

 Mức 2: trong suốt vị trí

24

12
21/01/2021

 Mức 3: trong suốt ánh xạ cục bộ

25

 Trường hợp dữ liệu nhập có liên quan đến vị từ


định tính của mảnh

26

13
21/01/2021

 Ví dụ 2: cho biết tên của nhà cung cấp mà họ


cung cấp mặt hàng có mã được nhập từ thiết
bị đầu cuối (giả sử một mặt hàng chỉ được
cung cấp bởi một nhà cung cấp).
 Mức 1: trong suốt phân mảnh

27

 Mức 2: trong suốt vị trí

28

14
21/01/2021

 Mức 3: trong suốt ánh xạ cục bộ


 Giả sử lược đồ định vị các mảnh của SUPPLY
như sau:
– SUPPLIER1: site 1
– SUPPLIER2: site 2
– SUPPLY1: site 3
– SUPPLY2: site 4

29

 Mức 3: trong suốt ánh xạ cục bộ


read(terminal, #PNUM);
select SNUM into $SNUM
from SUPPLY1 at site 3
where PNUM = $PNUM
if #FOUND then
begin
send #SNUM from site 3 to site 1
select NAME into $NAME
from SUPPLIER1 at site 1
where SNUM = #SNUM
end 30

15
21/01/2021

 Mức 3: trong suốt ánh xạ cục bộ


else
begin
select SNUM into $SNUM
from SUPPLY2 at site 4
where PNUM = $PNUM
if #FOUND then
begin
send #SNUM from site 4 to site 2
select NAME into $NAME
from SUPPLIER2 at site 2
where SNUM = #SNUM
end
end; 31

 Cập nhật dữ liệu (thêm, xóa, sửa) phải bảo


đảm các ràng buộc toàn vẹn về khóa chính,
khóa ngoại, phụ thuộc hàm, ràng buộc nghiệp
vụ…
 Quy tắc read-one write-all

32

16
21/01/2021

 Sửa dữ liệu trong CSDL phân tán


– Mục dữ liệu bị sửa không có trong vị từ định
tính.
– Mục dữ liệu bị sửa có trong vị từ định tính
và giá trị của vị từ định tính không bị thay
đổi khi thay thế dữ liệu cũ và dữ liệu mới.
– Mục dữ liệu bị sửa có trong vị từ định tính
và giá trị của vị từ định tính bị thay đổi khi
thay thế dữ liệu cũ và dữ liệu mới.
33

 Ví dụ: Sửa dữ liệu của nhân viên có mã 100:


mã phòng 3 thành mã phòng 15.
 Các mảnh
– emp1 được đặt tại nơi 1 và 5
– emp2 được đặt tại nơi 2 và 6
– emp3 được đặt tại nơi 3 và 7
– emp4 được đặt tại nơi 4 và 8

34

17
21/01/2021

Cây phân mảnh của quan hệ emp


35

emp1 emp2
empnum name sal tax empnum mgrnum deptnum
100 smith 10000 1000 100 20 3

Trước cập nhật


Sau cập nhật
emp3 emp4
empnum name deptnum empnum sal tax mgrnum
100 smith 15 100 10000 1000 20

36

18
21/01/2021

 Mức 1: Trong suốt phân mảnh

37

 Mức 2: Trong suốt vị trí

38

19
21/01/2021

 Mức 3: Trong suốt ánh xạ cục bộ


Select NAME, SAL, TAX into $NAME, $SAL, $TAX
From EMP1 at site 1
Where EMPNUM = 100
If #FOUND then
begin
select MGRNUM into $MGRNUM
from EMP2 at site 2
where EMPNUM = 100
insert into EMP3(EMPNUM, NAME,
DEPTNUM) at site 3 39

 Mức 3: Trong suốt ánh xạ cục bộ


insert into EMP3(EMPNUM, NAME, DEPTNUM) at site 3
values (100,$NAME, 15)
insert into EMP3(EMPNUM, NAME, DEPTNUM) at site 7
values (100,$NAME, 15)
insert into EMP4(EMPNUM, SAL,TAX,MGRNUM) at site 4
values (100,$SAL,$TAX, $MGRNUM)
insert into EMP4(EMPNUM, SAL,TAX,MGRNUM) at site 8
values (100,$SAL,$TAX, $MGRNUM)

40

20
21/01/2021

 Mức 3: Trong suốt ánh xạ cục bộ


delete from EMP1 at site 1
where EMPNUM = 100;
delete from EMP1 at site 5
where EMPNUM = 100;
delete from EMP2 at site 2
where EMPNUM = 100;
delete from EMP2 at site 6
where EMPNUM = 100;
end;
41

 Trường hợp mỗi tác vụ cơ bản truy xuất CSDL


đều trả về kết quả là một giá trị đơn và được
gán vào một biến đơn.
SELECT NAME INTO $NAME
FROM EMP WHERE EMPNUM = 100
 Trường hợp tác vụ cơ bản truy xuất CSDL trả
về kết quả là một quan hệ.
SELECT EMPNUM, NAME
INTO $EMP_REL($EMPNUM,$NAME)
FROM EMP
42

21
21/01/2021

Xét chương trình ứng dụng: nhập mã các


nhà cung cấp  xuất ra các mặt hàng được
cung cấp bởi các nhà cung cấp. Giả sử mỗi
nhà cung cấp có thể cung cấp nhiều mặt
hàng.

43

repeat
read(terminal, $SNUM);
Cách 1.
delete from $PNUM_REL CSDL
insert into $PNUM_REL($PNUM) được
select PNUM truy xuất
from SUPPLY ứng với
mỗi giá
where SNUM = $SNUM
trị của
repeat $SNUM
read($PNUM_REL, $PNUM)
write(terminal, $SNUM, $PNUM)
until END-OF-$PNUM_REL
until END-OF-TERMINAL-INPUT 44

22
21/01/2021

repeat
read(terminal, $SNUM);
Cách 2.
insert into $SNUM_REL($SNUM)
CSDL
values ($SNUM) được
until END-OF-TERMINAL-INPUT truy xuất
insert into $PNUM_REL($SNUM, $PNUM) sau khi
select $SNUM, PNUM nhập
from SUPPLY, $SNUM_REL vào tất
where SUPPLY.SNUM = $SNUM_REL.$SNUM; cả các
repeat giá trị
read($PNUM_REL, $SNUM, $PNUM) của
$SNUM
write(terminal, $SNUM, $PNUM)
until END-OF-$PNUM_REL 45

insert into $TEMP_REL($TEMP_PNUM, $TEMP_SNUM)


select PNUM, SNUM Cách 3.
from SUPPLY CSDL
repeat được
read(terminal, $SNUM); truy xuất
delete from $TEMP2_REL; trước khi
insert into $TEMP2_REL($TEMP2_PNUM) nhập
select $TEMP_PNUM vào tất
from $TEMP_REL cả các
where $TEMP_SNUM = $SNUM; giá trị
repeat của
read($TEMP2_REL, $TEMP2_PNUM) $SNUM
write(terminal, $SNUM, $TEMP2_PNUM)
until END-OF-$TEMP2_REL
until END-OF-TERMINAL_INPUT 46

23
21/01/2021

Cho lược đồ toàn cục quản lý hộ khẩu gia đình như sau:
HOGD (MAHO, HOTENCHUHO, LOAIHO, DIACHI)
– Trong đó: LOAIHO gồm: 0.Hộ tạm trú 1.Có hộ khẩu
thường trú; 2.Khác.
– Gọi p1 : LOAIHO <1 ; p2 : LOAIHO >1 là 2 vị từ đơn
giản.
a) Hãy thực hiện phân mảnh ngang chính lược đồ trên
ứng với {p1,p2}.
b) Giải thích tại sao phân mảnh trên không đáp ứng
được điều kiện đúng đắn của phân mảnh ngang.
c) Xác định lại vị từ {p1,p2} để việc phân mảnh đáp
ứng điều kiện đúng đắn của phân mảnh ngang.
47

Cho lược đồ toàn cục:

Yêu cầu: Phân mảnh quan hệ NV thành 2 mảnh


(mảnh gồm các nhân viên có lương > 3000000 và
mảnh gồm các nhân viên có lương <=3000000).
48

24
21/01/2021

Cho lược đồ toàn cục:


DUAN(MADA, TENDA, NGANSACH, DIADIEM)
Lược đồ trên được phân mảnh ngang thành 2 mảnh
ứng với cặp vị từ:
• p1: NGANSACH > 7.000.000
• p2: NGANSACH <= 7.000.000
a) Hãy biểu diễn lược đồ phân mảnh ngang trên.
b) Viết ứng dụng truy xuất bằng ngôn ngữ mã giả:
Tìm tên dự án khi biết mã dự án (Giả sử DDBMS
hỗ trợ tính trong suốt vị trí).
49

Cho lược đồ toàn cục:


HANGHOA(MAHH, TENHH, LOAIHANG)
p1: LOAIHANG <= 3; p2: LOAIHANG > 3 là 2 vị từ
đơn giản.
a. Thực hiện phân mảnh ngang lược đồ trên thành
2 mảnh ứng với vị từ {p1,p2}.
b.Viết ứng dụng cập nhật bằng ngôn ngữ mã giả:
Cập nhật lại LOAIHANG=3 thành LOAIHANG=4 của
hàng hóa có mã hàng MAHH =”TL” (Giả sử DDBMS
hỗ trợ tính trong suốt vị trí).
50

25
21/01/2021

Cho lược đồ CSDL toàn cục như sau:


LOP(MSLOP, TENLOP, TENKHOA)
SINHVIEN(MSSV, HOTEN, PHAI, NGAYSINH,
MSLOP, HOCBONG)
DANGKY(MSSV, MSMON, DIEM1, DIEM2, DIEM3)
MONHOC(MSMON, TENMON, SOTC)

51

Cho yêu cầu phân mảnh như sau:


 Lớp được phân mảnh ngang theo tên khoa; giả sử tên
khoa chỉ có hai giá trị là: “K1” và “K2”.
 Sinh viên được phân thành 2 mảnh ngang (mảnh
gồm các SV khoa K1 và mảnh gồm các SV khoa K2).
 Đăng ký được phân mảnh dọc dựa vào hai tập thuộc
tính: mảnh DangKyA có các thuộc tính {mssv,
msmon, diem1}, mảnh DangKyB có các thuộc tính
{mssv, msmon, diem2, diem3}.
Câu 1. Hãy viết các biểu thức phân mảnh theo yêu cầu
trên.

52

26
21/01/2021

Câu 2. Hãy thực hiện các câu truy vấn sau đây ở mức 1
(fragmentation transparency) và mức 2 (location
transparency):
a/ Nhập vào mã sinh viên $MSSV, cho biết TENKHOA mà sinh
viên này theo học.
b/ Nhập vào mã lớp $MSLOP, hiển thị thông tin của các sinh
viên thuộc lớp này (MSSV, HOTEN, HOCBONG).
c/ Nhập vào mã sinh viên $MSSV, hiển thị mã môn học và 3
cột điểm (điểm 1, điểm 2, điểm 3) của tất cả các môn học
mà sinh viên này có học.
d/ Hãy sửa mã lớp của lớp có mã số “L01” từ “K1” thành
“K2”.
53

27

You might also like