Ch
C
S
D
ng VI
LI U PHÂN TÁN
Ch ng này đ c p đ n các khái ni m c b n v h c s d li u phân tán, h
qu n tr c s d li u phân tán và bài toán thi t k c s d li u phân tán. Bài toán
thi t k c s d li u phân tán r t ph c t p và do tr ng tâm c a giáo trình này trình
bày ki n th c v h c s d li u quan h nên các ph ng pháp thi t k phân tán
không đ c trình bày chi ti t cho đ n các gi i thu t mà ch y u là nêu v n đ . M t
khác đây là h c s d li u phân tán d a trên mô hình quan h nên tr c khi thi t k
phân tán các c s d li u ph i đ c thi t k theo chu n c a h c s d li u quan h
t p trung.
I. CÁC KHÁI NI M V H C S D
LI U PHÂN TÁN.
H c s d li u phân tán (Distributed DataBase System) đ c xây d ng d a
trên hai công ngh c b n là c s d li u và m ng máy tính. H c s d li u phân
tán đ c mô t nh là t p h p nhi u c s d li u có liên quan logic đ n nhau và đ c
phân b trên m ng máy tính.
Trong khái ni m đ c mô t v c s d li u phân tán trên có hai đ c tr ng
c b n là “liên quan logic” và “phân b trên m ng”. Trong c s d li u phân tán các
t p tin d li u đ c l u tr đ c l p trên các nút c a m ng máy tính và ph i có liên
quan đ n nhau v m t logic và còn h n th n a còn đòi h i chúng ph i đ c truy xu t
đ n qua m t giao di n chung, th ng nh t.
Hi n nay khái ni m x lý phân tán (Distributed procesing), tính toán phân tán
(Distributed computing) ho c các thu t ng có t “phân tán” hay đ c dùng đ ch
các h th ng r i rác nh các h th ng máy tính có đa b x lý (multiprocessor system)
hay là các x lý trên m ng máy tính. C s d li u phân tán là m t khái ni m không
bao g m các tr ng h p x lý d li u trong các h th ng s d ng b nh chung, k c
b nh trong hay b nh th c p (đ a t ), nh t thi t ph i là m t h có s d ng giao ti p
m ng v i các tr m làm vi c đ c l p.
H Qu n tr c s d li u phân tán (Distributed DBMS) là h th ng ph n m m
cho phép qu n lý các h c s d li u phân tán và làm cho s phân tán tr nên “trong
su t” đ i v i ng i s d ng.
Khái ni m “trong su t” – “transparent” đ ch s tách bi t c p đ cao c a h
th ng v i các v n đ cài đ t c p đ th p c a h th ng. Có các d ng “trong su t” nh
sau:
99
…
CPU
CPU
CPU
Memory
…
CPU
Memory
Memory
DISK
Tr m
Tr m
Tr m
Môi tr
ng m ng
Tr m
Tr m
Hình 6.1. Các mô hình không ph i H CSDL phân tán
Tr m
Tr m
Tr m
Môi tr
Tr m
ng m ng
Tr m
Hình 6.2. Mô hình h CSDL phân tán
đ
+ “Trong su t” v phân tán. Do tính ch t phân tán c a h th ng nên các d li u
c l u tr t i các nút có v trí đ a lý khác nhau, ph n m m s đáp ng các yêu c u
100
c a ng
i s d ng sao cho ng
i s d ng không c n ph i bi t v trí đ a lý c a d li u.
+ “Trong su t” v phân ho ch (Partition). Do d li u phân tán và do nhu c u
c a công vi c d li u c n đ c phân ho ch và m i phân ho ch đ c l u tr t i m t
nút khác nhau (đây g i là quá trình phân m nh – fragmentation). Quá trình phân m nh
hoàn toàn t đ ng b i h th ng và ng i s d ng không c n ph i can thi p.
+ “Trong su t” v nhân b n (Replication). Vì lí do “hi u n ng”, “tin c y” nên
d li u còn đ c sao chép m t ph n nh ng v trí khác nhau.
+ “Trong su t” v đ c l p d li u.
+ “Trong su t” v k t n i m ng. Ng
c a giao ti p m ng.
i s d ng không c n bi t v s có m t
Phân tán
Phân m nh
Nhân b n
K t n i m ng
c l p d li u
D li u
Hình 6.3. Các t ng trong su t c a h th ng.
Ví d 6.1: M t công ty có các v n phòng
Công ty này có các c s d li u sau đây:
Paris, London, NewYork, Toronto.
C s d li u v nhân viên:
EMP (ENo, EName, Title)
C s d li u v các d án:
PROJ (PNo, PName, Budget, Loc)
C s d li u v l
PAY (Title, Sal)
ng:
C s d li u v phân công:
ASG (ENo, PNo, Dur, Resp)
Gi i thích v các thu c tính: Sal: L ng; Title: Ch c v ; Budget: Ngân sách
c a d án; Loc: a đi m; Dur: Duration – Th i h n; Resp: Responsibility – Trách
nhi m
101
Do tính phân tán c a các v n phòng nên t i m i v n phòng có l u tr d li u
tác nghi p c a chính các v n phòng đó, có th là các nhân viên t i đó và các d án mà
v n phòng đó đang qu n lý. Ta có s đ l u tr đã phân tán và phân m nh gi đ nh
nh sau:
London
Paris
Emp London
Emp Paris
Proj London
Emp London
Emp Paris
Proj London
Proj Paris
NewYork
Paris
Emp London
Emp Paris
Proj London
Emp Toronto
Proj Toronto
Hình 6.4. S đ l u tr phân tán
II. MÔ HÌNH KI N TRÚC C A H QU N TR C S D
LI U PHÂN TÁN.
Trong các mô hình ki n trúc c a h QTCSDL phân tán đ
tài li u kinh đi n ta xét 3 mô hình ph bi n.
c trình bày trong các
1.1. Mô hình ki n trúc c a h phân tán khách/đ i lý – client/server.
c tr ng c a h này là ch c n ng c a h th ng đ
c chia làm hai l p:
+ Ch c n ng đ i lý – server function
+ Ch c n ng khách hàng – client function.
Trong h th ng khách/đ i lý các thao tác x lý d li u đáp ng yêu c u c a
khách hàng đ u đ c th c hi n b i các ch c n ng đ i lý, ch có k t qu đ c g i tr
cho khách hàng. Ta có mô hình ch c n ng nh s đ
hình 7.5.
H khách có các t ng:
+ Giao di n t ng tác v i ng
trình ng d ng (Application Program), ...
i s d ng (User Interface), các ch
ng
+ H qu n tr c s d li u khách hàng (Client DBMS).
+ Các ph n m m m ng có ch c n ng truy n tin (Communication
Software).
H đ i lý có các t ng:
+ Các ph n m m m ng có ch c n ng truy n tin.
+ T ng ki m soát ng ngh a c a d li u (Semantic Data Controler).
102
+ T ng t i u hóa câu h i (Query Optimizer).
+ T ng qu n lý các giao tác (Transaction Manager).
+ T ng qu n lý khôi ph c (Recovery Manager).
+ T ng h tr th c thi (Run – time Support Processor) .
Client
Operating
H đi u hành
system
+ H đi u hành qu n lý chung và giao ti p v i c s d li u v t lý.
User Interface
Application Program
...
Client DBMS
Communication Software
K t qu
Yêu c u SQL
Communication Software
Server
Operating system
Semantic Data Controler
Query Optimizer
Transaction Manager
Recovery Manager
Run – time Support Processor
DataBase
Hình 6.5. S đ h phân tán client/server
H client/server có u đi m là x lý d li u t p trung, trên đ ng truy n ch có
các gói tin yêu c u (câu h i) và các k t qu đáp ng câu h i, gi m t i đ c kh i l ng
103
truy n tin trên m ng k t h p v i thi t b t i đ i lý r t m nh s t ng t c đ x lý d li u
c a c h th ng.
1.2. Mô hình h phân tán ngang hàng.
User
User
Requets
User
Processor
System
responses
User Interface Handler
External Schema
Semantic Data
Controler
Global Conceptual
Schema
Global Query
Optimizer
Global Execution
Monitor
Data
Processor
Local Query Processor
Local Conceptual
Schema
Local Recovery
Manager
System Logic
Run-Time Support
Processor
Local Internal Schema
DataBase
Hình 6.6. S đ ki n trúc c a h phân tán ngang hàng
104
c đi m n i b t c a h th ng này là d li u đ c t ch c các nút có ch c
n ng nh nhau, đ ng th i s t ch c d li u các nút này l i có th r t khác nhau, t
đó c n ph i có:
+ nh ngh a d li u t i m i v trí: t i m i nút ph i xây d ng l
c c b LIS (Local Internal Schema)
+ Mô t c u trúc logic toàn c c: L
Conceptual Schema).
c đ d li u
c đ khái ni m toàn c c GCS (Global
+ Mô t c u trúc logic t i m i v trí, đi u n y x y ra do nhân b n và phân m nh,
g i là l c đ khái ni m c c b LCS (Local Conceptual Schema).
+ Mô t c u trúc d u li u c a các ng d ng g i là l
(External Schema).
c đ ngo i gi i ES
C u trúc c a h th ng bao g m hai thành ph n chính: B ph n ti p nh n ng i
dùng (User Processor) và b ph n x lý d li u (Data Processor). Hai modun này
đ c đ t chung trên m i máy ch không tách bi t nh h th ng khách/đ i lý.
Các ch c n ng c b n c a t ng modun nh sau:
+ User Interface Handler - Giao ti p ng
d ng k t qu .
i s d ng: Di n d ch yêu c u, đ nh
+ Semantic Data Controler - Ki m soát d li u ng ngh a: D a vào l
khái ni m toàn c c đ ki m tra câu v n tin có th c hi n đ c hay không.
+ Global Query Optimizer - T i u hóa câu h i toàn c c:
th c thi t t nh t trên các nút.
cđ
nh ra chi n l
c
+ Global Execution Monitor – i u khi n th c thi câu v n tin toàn c c.
+ Local Query Processor – X lý câu h i c c b
+ Local Recovery Manager – Qu n lý khôi ph c c c b : Qu n lý s nh t quán
khi có s c .
+ Run-Time Support Processor - B ph n h tr th c thi: Qu n lý truy xu t c
s d li u.
1.2. Mô hình h phân tán ph c h p.
S khác bi t c b n so v i h phân tán ngang hàng là
(ho c có không đ y đ ) m t l c đ khái ni m toàn c c.
ch ph c h không có
105
User
System responses
User Requets
Multi DBMS Layer
Query Processor
...
Transaction Manager
Query Processor
Transaction Manager
Scheduler
Scheduler
Recovery Manager
Recovery Manager
Run-Time Support
Processor
Run-Time Support
Processor
DataBase
DataBase
Hình 6.7. S đ ki n trúc c a h phân tán ph c h p
Trong 3 mô hình nêu trên thì mô hình khách/đ i lý đang đ
ch ng t các u đi m c a nó v tính đ n gi n và h u hi u trên m ng.
II. THI T K C S D
c phát tri n và
LI U PHÂN TÁN.
M t c s d li u phân tán d a trên mô hình quan h tr c h t ph i tuân th
các quy t c v chu n hóa cho c s d li u quan h .
phân tán c s d li u có hai
ho t đ ng chính đó là: Phân m nh các quan h và Phân tán các quan h (c p phát các
m nh).
2.1. Các ki u phân m nh.
Trong ph n này ta đang xét h cc s d li u phân tán d a trên các l c đ
quan h , t c là các b ng, nh v y s phân m nh chính là là ho t đ ng chia m t b ng
thành các b ng nh h n.
phân tích s phân m nh ta l y các quan h EMP, PROJ,
PAY, ASG đã mô t ph n trên.
106
EMP
ENo
ASG
EName
Title
ENo
PNo
Resp
Dur
E1
John
Ks. i n
E1
P1
Qu n lý
E2
Mary
Ks. H th ng
E2
P1
Phân tích HT
24
E3
Bill
Ks. C khí
E2
P2
Phân tích HT
6
E4
Bush
Ks. L p trình
E3
P3
T v n
10
E5
Blair
Ks. H th ng
E3
P4
K thu t
48
E6
Tom
Ks. i n
E4
P2
L p trình
18
E7
Algor
Ks. C khí
E5
P2
Qu n lý
24
E8
David
Ks. i n
E6
P4
Qu n lý
48
E7
P3
K thu t
36
E8
P3
Qu n lý
40
PROJ
PNo
12 (tháng)
PAY
PName
Budget
Loc
Title
Sal
P1
Thi t b
150000 Toronto
Ks. i n
4000
P2
CSDL
125000 NewYork
Ks. H th ng
7000
P3
Games
75000 NewYork
Ks. C khí
3500
P4
CAD
Ks. L p trình
2000
100000 Paris
2.1.1. Phân m nh ngang.
Gi s ta có m t yêu c u phân m nh quan h PROJ thành hai b ng PROJ1 và
PROJ2 sao cho m t b ng ch a các d án có ngân sách l n h n 100000 và cái kia ch a
các d án có ngân sách nh h n 100000.
PROJ1
PNo
PName
Budget
Loc
P1
Thi t b
150000 Toronto
P2
CSDL
125000 NewYork
PROJ2
PNo
PName
P3
Games
P4
CAD
Budget
Loc
75000 NewYork
100000 Paris
107
2.1.2. Phân m nh d c
C ng quan h PROJ ta phân m nh thành hai b ng PROJ3 và PROJ4, khóa c a
quan h PNo có m t c hai b ng con.
PROJ3
PNo
PROJ4
PName
Loc
PNo
Budget
P1
Thi t b
Toronto
P1
150000
P2
CSDL
NewYork
P2
125000
P3
Games
NewYork
P3
75000
P4
CAD
Paris
P4
100000
Trong th c t s phân m nh s x y ra vi c k t h p c hai lo i phân m nh và ta
g i là s phân m nh h n h p. M c đ phân m nh tùy theo yêu c u c a ng d ng, phân
m nh quá l n hay quá nh đ u gây ra các hi u ng ph khó ki m soát.
2.1.3. Các quy t c phân m nh.
Các quy t c này nh m đ m b o tính nh t quán c a c s d li u, đ c bi t v
ng ngh a c a d li u.
q1. Tính đ y đ .
N u m t quan h R đ c phân m nh thành các m nh con R1, R2, ..., Rn thì m i
m c d li u ph i n m trong m t ho c nhi u các m nh con.
đây trong phân ngang
thì m c d li u đ c hi u là các b còn trong phân m nh d c là các thu c tính. Quy
t c này đ m b o không b m t d li u khi phân m nh.
q2. Tính tái thi t đ
c.
N u m t quan h R đ c phân m nh thành cácn m nh con R1, R2, ..., Rn thì ph i
đ nh ngh a đ c m t toán t quan h ∇ sao cho R = ∇ Ri
i =1
q3. Tính tách bi t.
Gi s m t quan h R đ
c phân m nh thành các m nh con R1, R2, ..., Rn.
i v i phân m nh ngang m c di đã n m trong m nh Rj thì nó s không n m
trong m nh Rk v i k≠j.
i v i phân m nh d c thì khóa chính ph i đ
còn các thu c tính khác ph i tách r i.
2.2. Ph
c l p l i trong các m nh con,
ng pháp phân m nh ngang.
2.2.1. Các yêu c u v thông tin.
108
ph c v cho các ho t đ ng phân m nh ta c n có các lo i thông tin sau đây:
a1) Thông tin v c s d li u.
ây là thông tin v l c đ d li u toàn c c, ch ra các m i liên k t gi a các
quan h . Ta mô hình hóa s liên k t này b ng m t đ th có h ng, các cung ch m t
liên h k t n i b ng, m i nút là m t l c đ quan h . Quan h
đ u đ ng n i g i là
quan h ch nhân (Owner) còn quan h
cu i đ ng n i g i là quan h thành viên
(Member). ta đ nh ngh a hai hàm Owner và Member t t p các đ ng n i đ n t p các
quan h .
Ví d 6.2:
PAY
Title
Sal
L1
EMP
ENo
EName
PROJ
PNo
Title
PName
Budget
Loc
Dur
L3
L2
ASG
ENo
PNo
Resp
Dur
Ta có các hàm Owner và Member xác đ nh nh sau:
Owner (L1) = PAY, Member (L1) = EMP
Owner (L2) = EMP, Member (L2) = ASG
Owner (L3) = PROJ, Member (L3) = ASG
a2) Thông tin v
ng d ng.
Thông tin v ng d ng có hai lo i: Thông tin đ nh tính dùng đ phân m nh và
thông tin đ nh l ng dùng đ c p phát.
đ
Thông tin đ nh tính v c b n là các v t dùng trong câu v n tin, các v t này
c xây d ng d a trên s phân tích các ng d ng.
nh ngh a v t đ n gi n: Cho l
mi n xác đ nh Di ta có v t đ n gi n
p: Ai θ Value
c đ R = (A1, A2, ..., An) v i thu c tính Ai có
θ ∈ {<, ≤, =, ≥, >, ≠} và Value ∈ Di
109
T p PRi ch a các v t đ n gi n trên quan h Ri. Ví d v i quan h PROJ
ta có t p v t đ n gi n sau: PPROJ = { PName = ‘Xây d ng’, Budget ≤ 100000 }
trên
nh ngh a v t h i s c p: Cho t p PRi = {pi1, pi2, ..., pim} ch a các v t đ n
gi n trên Ri. Ta đ nh ngh a t p các v t h i s c p Mi = {mi1, mi2, ..., mit} nh sau:
∧∈ pik
*
mij =
p P
ik
trong đó
p*ik
Ri
là pik ho c ⎤pik.
đây vì lí do ph c t p nên ta ch xét đ n các ph đ nh c a v t đ ng th c đ n
gi n.
Ví d 6.3: Ta xét quan h PAY có các v t đ n gi n.
p1:
Title = ‘Ks. i n’
p2:
Title = ‘Ks. H th ng’
p3:
Title = ‘Ks. C khí’
p4:
Title = ‘Ks. L p trình’
p5:
Sal ≤ 3500
p6:
Sal > 3500
t đó ta xây d ng đ
c các v t h i s c p nh sau:
m1:
Title = ‘Ks. i n’ ∧ Sal ≤ 3500
m2:
Title = ‘Ks. i n’ ∧ Sal > 3500
m3:
⎤(Title = ‘Ks. i n’) ∧ Sal ≤ 3500
m4:
⎤(Title = ‘Ks. i n’) ∧ Sal > 3500
...
T t nhiên các v t đ n gi n c ng đ c coi là m t b ph n c a các v t h i s
c p và th c ra m3 và m4 có th vi t b ng cách s d ng m t v t t ng đ ng, ch ng
h n: Title ≠ ‘Ks. i n’ ∧ Sal ≤ 3500. N u ta c xây d ng v t h i m t cách máy móc
thì có m t s tr ng h p có th vô ngh a đ i v i quan h .
Các thông tin có liên quan đ n v t h i s c p là đ tuy n h i s c p và t n s
truy xu t.
tuy n h i s c p đo s l ng các b c a quan h đ c truy xu t b i câu
v n tin s d ng v t h i s c p đó. T n s truy xu t đ ch t n s các ng d ng truy
xu t d li u có s d ng câu v n tin s d ng v t h i s c p.
2.2.2. Phân m nh ngang nguyên th y.
110
Phân m nh ngang nguyên th y là m t phép ch n trên quan h ch c a m t l
c
đ R.
Ri = δFi(R)
i = 1, ..., t
đây Fi là m t công th c ch n s d ng m t v t h i s c p mi.
Ví d 6.4: Ta có th phân rã quan h PROJ thành PROJ1 và PROJ2 s d ng các
v t c b n Budget ≤ 100000 và Budget > 100000
PROJ1 = δBudget ≤ 100000 (PROJ)
PROJ2 = δBudget > 100000 (PROJ)
M t v n đ ph c t p là t p các v t h i s c p dùng đ phân m nh có th thay
đ i khi các ng d ng ho t đ ng, s g p r t nhi u khó kh n khi mi n xác đ nh c a
thu c tính là vô h n và liên t c. Ch ng h n khi thêm m t b m i vào PROJ có budget
là 500000 lúc đó ta ph i xem xét là đ t nó vào PROJ2 hay ph i xây d ng thêm PROJ3
và h n ch PROJ2.
PROJ2 = δ100000
PROJ3 = δBudget > 400000 (PROJ)
Ví d 6.5: Ta phân m nh PROJ d a vào v trí c a d án.
PROJ1 = δ Loc = ‘Toronto’ (PROJ)
PROJ2 = δ Loc = ‘NewYork’ (PROJ)
PROJ3 = δ Loc = ‘Paris’ (PROJ)
Nh v y t t p Mi các v t h i s c p ta có t p m nh ngang t ng ng Ri i=1..t
đ c xây d ng trên phép ch n s d ng mi, ta g i t p {Ri} là t p các m nh h i s c p.
S các m nh ngang ph thu c vào t p v t h i s c p, nh v y đ phân m nh c n xác
đ nh t p các v t đ n gi n s t o ra các v t h i s c p. M t t p v t đ n gi n s ph i
là m t t p v t có tính đ y đ và c c ti u. Tính đ y đ đ c hi u là xác su t m i ng
d ng truy xu t đ n m t b nào đó trong m t m nh h i s c p nào đó đ c sinh ra nh
t p v t đ n gi n đó đ u b ng nhau. Tính c c ti u đ c hi u là m t v t là th a n u
không có ng d ng nào truy xu t đ n m nh do nó sinh ra.
Ví d 6.6: V i ví d 6.5 ta xác đ nh t p các PPROJ = {Loc = ‘Toronto’, Loc =
‘NewYork’, Loc = ‘Paris’}.
• N u truy xu t theo v trí thì PPROJ là đ y đ
• N u có thêm ng d ng truy các b theo Budget ≤100000 thì PPROJ không
đ y đ . Trong tr ng h p đó ta ph i b xung đ cho PPROJ tr thành đ y
111
đ và lúc này thì ta có PPROJ = {Loc = ‘Toronto’, Loc = ‘NewYork’, Loc
= ‘Paris’, Budget ≤100000, Budget >100000}
Ví d 6.7: Xét PROJ có các ng d ng truy xu t theo v trí và ngân sách nh
trong ví d 6.6
• T p PPROJ nh ví d 6.6 là đ n gi n và c c ti u.
• N u b xung thêm v t đ n gi n PName = ‘Xây d ng’ vào PPROJ thì làm
cho t p v t này không c c ti u vì không có ng d ng nào truy xu t đ n
m nh do nó sinh ra.
đ
Khi m t t p v t là c c ti u thì t t c các v t trong đó đ u sinh ra phân m nh
c truy xu t b i ít nh t m t ng d ng, ta g i nh ng v t đó là có liên đ i.
B
c 1: Thu t toán tìm t p v t đ y đ và c c ti u.
Quy t c c b n v DD&CT: M t quan h ho c m t m nh đ c phân ho ch
thành ít nh t hai ph n và chúng đ c truy xu t khác nhau b i ít nh t m t ng d ng.
Ta g i fi c a PR là m nh fi đ
c sinh ra t m t v t h i s c p trong PR.
Thu t toán COM_MIN
u vào
R là quan h ; PR là t p v t đ n gi n.
u ra
PR’ là t p v t đ n gi n và c c ti u.
Begin
Tìm m t v t pi ∈PR sao cho pi phân ho ch R theo quy t c c b n
DD&CT;
PR’ = {pi};
PR = PR –{pi};
F = {fi} /* fi là m nh h i s c p sinh ra b i pi*/
Do
Begin
Tìm m t pj∈PR sao cho pj phân ho ch m t m nh fk c a PR’
theo quy t c c b n DD&CT ;
PR’ = PR’ ∪{pj} ;
PR = PR –{pj} ;
F = F∪{fj} ; /* fj sinh ra b i pj */
112
If ∃ pk∈PR’ là m t v t không có liên đ i then
Begin
PR’ = PR’ -{pk} ;
F = F-{fk}
End ;
End ;
Until PR’ là đ y đ
End.
B
c 2 : Tính t p v t h i s c p t t p đ y đ và c c ti u.
Vi c tính toán này r t d nh ng hay d n đ n nh ng t p v t h i s c p r t l n
do vi c tính máy móc. Vi c gi n c t p v t h i s c p đ c th c hi n b c th 3.
B
c 3 : Lo i b nh ng v t h i s c p vô ngh a.
Vi c này đ u tiên ph i xác đ nh nh ng v t mâu thu n v i t p các phép kéo
theo. Ví d , PR’ = {p1, p2} v i Att là thu c tính và {V1, V2} là mi n thu c tính c a Att
ta có th gi thi t :
p1 : Att = V1 và p2 : Att = V2
V y ta có các phép kéo theo
(Att = V1) ⇒ ⎡(Att = V2)
⎡(Att = V1 ) ⇒ (Att = V2)
Ta có các v t h i s c p đ
c tính theo quy t c:
m1: (Att = V1) ∧ (Att = V2 )
m2: (Att = V1) ∧ ⎡(Att = V2 )
m3: ⎡(Att = V1) ∧ (Att = V2 )
m4: ⎡(Att = V1) ∧ ⎡(Att = V2 )
Các v t m1 và m4 mâu thu n v i các phép kéo theo chúng ta đã xác đ nh
và vì th chúng ta s lo i nó ra kh i PR’.
B
trên
c 4: Thu t toán tìm t p v t h i s c p có ngh a.
Thu t toán PHORIZONTAL
u vào
R là môt quan h
u ra
M là t p các v t h i s c p có ngh a.
113
Begin
PR’ = COM_MIN (R, PR) ;
Tính t p M các v t h i s c p t PR’ ;
Tính t p các I các phép kéo theo gi a các pi ∈ PR’ ;
For m i mi ∈ M Do
If mi mâu thu n v i I then M = M – {mi}
End.
Ví d 6.8 : Gi s có quan h PAY và PROJ ph i phân m nh ngang nguyên
th y
Gi s ch có m t ng d ng truy xu t PAY, m u tin nhân viên đ c l u tr t i
hai n i. M t n i qu n lý thông tin c a các nhân viên có l ng cao h n 3500 và n i kia
là các nhân viên có l ng t 3500 tr xu ng. Vì v y câu v n tin c a ng d ng s đ c
truy xu t c hai n i. T p v t đ n gi n dùng đ phân ho ch PAY :
p1 : Sal ≤ 3500
p2 : Sal > 3500
T đó ta có 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 kh i đ u i=1 ta có PR’ = {p1}. ây chính là t p đ y đ và c c ti u vì p2
không phân ho ch f1 là m nh h i s c p đ c sinh ra t p1. V y chúng ta có các v t
h i s c p sau :
m1 : Sal ≤ 3500
m2 : ⎡(Sal ≤ 3500) t
ng đ
ng v i (Sal > 3500)
Cu i cùng chúng ta có các m nh ngang nguyên th y c a PAY đ
theo m1 và m2:
PAY2
c phân ho ch
PAY1
Title
Sal
Title
Sal
Ks. i n
4000
Ks. C khí
3500
Ks. H th ng
7000
Ks. L p trình
2000
Gi s có hai ng d ng truy xu t đ n PROJ. M t ng d ng truy xu t theo v trí,
ch ng h n ta có câu truy v n:
Select
From
Where
PName, Budget
PROJ
Loc = Value
114
T đó ta có:
PPROJ = { p1: Loc = ‘Toronto’; p2: Loc = ‘New York’; p3: Loc = ‘Paris’}
M t ng d ng khác truy xu t theo ngân sách, ta thêm vào các v t :
p4: Budget ≤ 100000 và p5: Budget > 100000
Cu i cùng ta có t p các v t đ n gi n là:
PPROJ = { p1: Loc = ‘Toronto’; p2: Loc = ‘New York’; p3: Loc = ‘Paris’; p4:
Budget ≤ 100000; p5: Budget > 100000}
Th c hi n thu t toán COM_MIN v i PPROJ ta th y t p PPROJ là đ y đ và c c
ti u.
Xây d ng t p v t h i s c p M:
m1: Loc = ‘Toronto’ ∧ Budget ≤ 100000
m2: Loc = ‘Toronto’ ∧ Budget > 100000
m3: Loc = ‘New York’ ∧ Budget ≤ 100000
m4: Loc = ‘New York’ ∧ Budget > 100000
m5: Loc = ‘Paris’ ∧ Budget ≤ 100000
m6: Loc = ‘Paris’ ∧ Budget > 100000
m7: p1 ∧ p2 ∧ p3 ∧ p4 ∧ p5
...
Các phép kéo theo hi n nhiên:
i1: p1 ⇒ ⎡p2 ∧ ⎡p3
i5: p5 ⇒ ⎡p4
i2: p2 ⇒ ⎡p1 ∧ ⎡p3
i6: ⎡p4 ⇒ p5
i3: p3 ⇒ ⎡p1 ∧ ⎡p2
i7: ⎡p5 ⇒ p4
i4: p4 ⇒ ⎡p5
Xét trong t p M ch có các v t h i ch a hai v t đ n gi n là không x y ra
mâu thu n v i các phép kéo theo, vì v y chúng ta lo i b h t các v t h i ch gi l i
các v t đó. Nh v y chúng ta có t p v t h i s c p cu i cùng là:
M = {m1, m2, m3, m4, m5, m6}
115
Phân m nh ngang nguyên th y quan h PROJ theo M (l u ý là PROJ1 và
PROJ6 là r ng) chúng ta có:
PROJ2
PROJ3
PNo
PName
P1
Thi t b
Budget
Loc
PNo
150000 Toronto
P2
PROJ4
PName
CSDL
Budget
Loc
125000 NewYork
PROJ5
PNo
PName
P3
Games
Budget
Loc
PNo
75000 NewYork
P4
PName
CAD
Budget
Loc
100000 Paris
2.2.3. Phân m nh ngang d n xu t.
Phân m nh ngang d n xu t đ c đ nh ngh a d a trên m t s phân m nh ngang
m t quan h thành viên c a m t đ ng n i d a theo phép toán ch n trên quan h ch
nhân c a đ ng n i đó, hay ta còn g i đó là s phân m nh quan h thành viên d a trên
c s phân m nh quan h ch nhân.
Cho tr c m t đ ng n i L, ta có: Owner (L) = S và Member (L) = R.
ngh a các m nh ngang d n xu t c a R nh sau:
nh
Ri = R θ Si v i i=1..s
trong đó s là s l ng các m nh ngang trên R, Si = δFi(S) là m nh ngang nguyên th y
đ c xây d ng t v t h i s c p Fi, θ là phép liên k t b ng trên khóa k t n i c a ch
nhân và thành viên.
Ví d 6.9: xét s đ quan h PAY v i EMP có đ
phép liên k t b ng θ: PAY.Title = EMP.Title.
đ
ng k t n i L1, ta đ nh ngh a
Trên quan h PAY ta có MPAY = { m1: Sal ≤ 3500; m2: Sal >3500} t đó PAY
c chia thành các m nh h i s c p PAY1 và PAY2.
PAY1 = δSal ≤ 3500 (PAY)
PAY2 = δSal > 3500 (PAY)
Ta có các m nh ngang d n xu t: EMP1 = EMP θ PAY1
EMP2 = EMP θ PAY2
EMP1
ENo
E1
EMP2
EName
John
Title
Ks. i n
ENo
E4
EName
Bush
Title
Ks. L p trình
116
E2
Mary
Ks. H th ng
E3
Bill
Ks. C khí
E5
Blair
Ks. H th ng
E6
Tom
Ks. i n
E7
Algor
Ks. C khí
E8
David
Ks. i n
S đ liên k t c a c s d li u sau khi phân m nh:
PAY1
Title
PAY2
Title
Sal
L11
Sal
L12
EMP1
ENo EName Title
EMP2
ENo EName Title
L2
PROJ
PNo PName Budget
L3
ASG
ENo
PNo
Resp
Dur
Ta có m t s nh n xét quan tr ng sau đây:
+ Thu t toán phân m nh d n xu t c n có t p các phân ho ch quan h ch nhân thành viên, t p v t liên k t quan h gi a ch nhân và thành viên.
+ N u m t quan h là thành viên c a nhi u h n m t ch nhân thì v n đ s tr
nên ph c t p h n.
+ Phân m nh d n xu t s gây nên phân m nh lan truy n.
2.3. Ph
ng pháp phân m nh d c.
Ý ngh a c a phân m nh d c là t o ra các quan h nh h n đ sao cho gi m t i
đa th i gian th c hi n c a các ng d ng ch y trên m nh đó. Vi c phân m nh d c là
ho t đ ng chia m t quan h R thành các m nh con R1, R2, ..., Rn sao cho m i m nh
con ch a t p con thu c tính và ch a c khóa c a R. V i cách đ t v n đ nh v y thì
117
vi c phân m nh d c không ch là bài toán c a h c s d li u phân tán mà còn là bài
toán c a ngay c h c s d li u t p trung.
Phân m nh d c là m t bài toán h t s c ph c t p, ng i ta đã ch ng minh đ c
r ng n u quan h có m thu c tính không ph i là thu c tính khóa thì s l ng các m nh
d c đ c phân ra là s Bell th m (kí hi u B(m)), s này t ng r t nhanh v i s m l n
và đ t đ n mm. Ch ng h n m=10 thì B(m)≈115.000, v i m=15 thì B(m)≈109, v i m=30
thì B(m)≈1023. Vì v y bài toán phân m nh d c ph i s d ng đ n các thu t gi i
heuristic. Có hai ph ng pháp chính đã đ c nghiên c u đó là ph ng pháp nhóm và
ph ng pháp tách, trong hai ph ng pháp thì ph ng pháp tách t ra có s t i u h n.
Ph ng pháp nhóm: Kh i đ u b ng t p các m nh, m i m nh có m t thu c tính,
t i m i b c ghép m t s m nh l i cho đ n khi th a mãn m t tiêu chu n nào đó.
Ph ng pháp tách: T i m i b c tìm m t phân ho ch có l i cho vi c truy xu t
c a ng d ng trên các thu c tính c a nó.
Thông tin dùng đ phân m nh d c có liên quan đ n các ng d ng, m t m nh
d c th ng ch a các thu c tính th ng xuyên đ c truy xu t chung b i m t ng d ng,
ng i ta tìm cách l ng hóa khái ni m này b ng m t s đo g i là “ái l c” (affinity – ái
l c ho c s lôi cu n). S đo này có th tính đ c khi ta tính đ c t n s truy xu t t i
các thu c tính đó c a ng d ng. Trên c s khái ni m “ái l c” và tính đ c đ s d ng
thu c tính c a các câu v n tin c a ng d ng ng i ta đã xây d ng đ c gi i thu t tách
r t h u hi u.
G i Q = {q1, q2, . . ., qt} là t p các câu v n tin mà ng d ng s truy xu t trên
quan h R(A1, A2, . . ., An). V i m i câu v n tin qi và thu c tính Aj chúng ta s đ a ra
m t giá tr s d ng thu c tính, kí hi u là use (qi, Aj) đ c đ nh ngh a nh sau:
1 n u Aj đ
c v n tin qi s d ng
use (qi, Aj) =
0 trong tr
ng h p ng
c l i.
các giá tr use (qi, *) r t d xác đ nh n u chúng ta bi t đ
CSDL.
c các ng d ng ch y trên
Ví d 6.10: Xét quan h PROJ, gi s các ng d ng s d ng câu v n tin SQL
truy xu t đ n nó:
q1: Tìm ngân sách c a d án theo mã s .
SELECT
FROM
WHERE
Budget
PROJ
PNo = V
118
q2: Tìm tên và ngân sách c a t t c các d án.
SELECT
FROM
PName, Budget
PROJ
q3: Tìm tên c a d án theo v trí.
SELECT
FROM
WHERE
PName
PROJ
Loc = V
q4: Tìm t ng ngân sách d án t i m i v trí.
SELECT
FROM
WHERE
Sum (Budget)
PROJ
Loc = V
thu n ti n ta kí hi u A1 = PNo, A2 = PName; A3 = Budget; A4 = Loc. Chúng
ta có ma tr n sau đây
A1
A2
A3
A4
q1
1
0
1
0
q2
0
1
1
0
q3
0
1
0
1
q4
0
0
1
1
Ta nh n xét r ng giá tr s d ng không ch a thông tin v đ l n c a t n s
d ng, s đo này n m trong đ nh ngh a v s đo ái l c thu c tính aff (Ai, Aj)
∑
aff (Ai, Aj) =
k : use ( q
k
, A i ) = 1 ∧ use ( q
k
,A
∑
j
)=1 ∀ S
ref ( q k ). acc
l
ng
(qk )
l
trong đó ref(qk) là s truy xu t đ n các thu c tính (Ai, Aj) cho m i ng d ng c a qk t i
v trí Sl và acc(qk) là kí hi u s đo t n s truy xu t ng d ng. K t qu tính toán đ c
m t ma tr n vuông nxn và ta g i nó là ma tr n ái l c thu c tính AA.
Ví d 6.11: Ti p t c v i ví d trên và đ cho đ n gi n chúng ta gi s ref(qk) =
1 cho t t c qk và Sl. S đo t n s truy xu t ng d ng gi thi t nh sau:
acc1(q1) = 15
acc1(q2) = 5
acc1(q3) = 25
acc1(q4) = 3
acc2(q1) = 20
acc2(q2) = 0
acc2(q3) = 25
acc2(q4) = 0
acc3(q1) = 10
acc3(q2) = 0
acc3(q3) = 25
acc3(q4) = 0
119
Nh v y chúng ta tính s đo ái l c gi a các thu c tính A1 và A3 và b i vì ng
d ng duy nh t truy xu t đ n c hai thu c tính này là q1 nên ta có:
∑ ∑
aff(A1, A3) =
1
3
k =1
l =1
accl(qk) = acc1 (q1) +acc2 (q1) + acc3 (q1) = 45
Ma tr n ái l c thu c tính đ y đ nh sau:
AA =
A1
A2
A3
A4
A1
45
0
45
0
A2
0
80
5
75
A3
45
5
53
3
A4
0
75
3
78
Thu t toán t nhóm.
M c tiêu c a thu t toán này là tìm m t ph ng pháp nào đó đ nhóm các thu c
tính c a m t quan h l i d a trên các giá tr ái l c thu c tính trong AA. Ý t ng chính
c a thu t toán là t m t ma tr n ái l c thu c tính AA sinh ra m t ma tr n ái l c t CA
d a trên các hoán v hàng và c t, hoán v đ c th c hi n sao cho s đo ái l c chung
AM là l n nh t.
AM =
n
n
i=1
j=1
∑ ∑
aff(Ai,Aj).[aff(Ai,Aj-1) + aff(Ai,Aj+1) + aff(Ai-1,Aj) +aff(Ai+1,Aj)]
trong đó aff(A0,Aj) = aff(Ai,A0) = aff(An+1,Aj) = aff(Ai,An+1) = 0 là các đi u ki n biên
khi m t thu c tính đ c đ t vào CA vào bên trái c a thu c tính c n trái ho c v bên
ph i c a thu c tính c n ph i trong các hóan v c t, t ng t c n trên d i đ i v i hoán
v hàng. Vì ma trân ái l c AA có tính đ i x ng nên công th c trên có th thu g n:
AM =
n
n
i=1
j=1
∑ ∑
aff(Ai,Aj).[aff(Ai,Aj-1) + aff(Ai,Aj+1)]
Chúng ta đ nh ngh a c u n i (bond) gi a hai thu c tính Ax và Ay là:
n
bond(Ax,Ay) = ∑ aff(Az,Ax).aff(Az,Ay)
z =1
120
d a vào đ nh ngh a đó chúng ta có th vi t l i AM nh sau:
n
AM =
∑
[bond(Aj,Aj-1) + bond(Aj,Aj+1)]
j =1
Bây gi chúng ta xét dãy thu c tính nh sau:
A1 ... Ai-1
Ai Aj Aj+1 ... An
AM’
AM’’
s đo ái l c chung cho các thu c tính này là:
AMold = AM’+AM ’’+ bond(Ai-1,Ai)+bond(Ai,Aj)+bond(Aj,Ai)+bond(Aj,Aj+1)
= AM’+AM ’’+ bond(Ai-1,Ai)+bond(Aj,Aj+1)+ 2bond(Ai,Aj)
Khi đ t m t thu c tính m i Ak gi a các thu c tính Ai và Aj thì s đo ái l c
chung m i là:
AMnew = AM’+AM ’’+ bond(Ai-1,Ai)+
bond(Ai,Ak)+bond(Ak,Ai)+bond(Ak,Aj)+bond(Aj,Ak)+bond(Aj,Aj+1)
= AM’+AM ’’+ bond(Ai-1,Ai)+bond(Aj,Aj+1)+
2bond(Ai,Ak) + 2bond(Ak,Aj)
óng góp th c cho s đo ái l c chung khi đ t Ak gi a Ai và Aj là:
cont(Ai,Ak,Aj) = AMnew – AMold = 2bond(Ai,Ak) + 2bond(Ak,Aj) - 2bond(Ai,Aj)
Ví d 6.12: V i ma tr n AA đ c tính
thu c tính A4 vào gi a các thu c tính A1 và A2:
trên, tính đóng góp th c khi chuy n
cont(A1,A4,A2) = 2bond(A1,A4) + 2bond(A4,A2) - 2bond(A1,A2)
Ta có:
bond(A1,A4) = 45*0 + 0*75 + 45*3 + 0*78 = 135
bond(A4,A2) = 11865
bond(A1,A2) = 225
vì v y: cont(A1,A4,A2) = 2*135 + 2*11865 – 2*225 = 23550
Thu t toán n ng l
ng n i BEA (Bond Energy Algorithm)
Thu t toán n ng l
đ
ng n i đ
c th c hi n qua ba b
c.
B1. Kh i gán. t và c đ nh m t trong các c t c a AA vào trong CA. C t 1
c ch n trong thu t toán này.
121
B2. Th c hi n l p. L y l n l t m t trong n-i c t còn l i (i là s c t đã đ t vào
trong CA) và th đ t chúng vào i+1 v trí còn l i trong ma tr n CA. N i đ t đ c ch n
sao cho nó đóng góp nhi u nh t cho s ái l c chung đ c mô t
trên. Vi c l p đ c
k t thúc khi không còn c t nào đ đ t
đ
B3. S p th t hàng. M t khi th t c t đã đ c xác đ nh, các hàng c ng c n
c đ t l i đ các v trí t ng đ i c a chúng phù h p v i các v trí t ng đ i c a c t
Thu t toán BEA
u vào:
AA ma tr n ái l c thu c tính
u ra:
CA ma tr n ái l c t .
Begin
/* Kh i gán */
CA(*,1) := AA(*,1) ;
CA(*,2) := AA(*,2) ;
index := 3 ;
While index <= n Do /*Ch n v trí t t nh t cho thu c tính AAindex */
Begin
For i :=1 To index -1 Do tính cont (Ai-1,Aindex,Ai);
tính cont (Aindex-1, Aindex, Aindex+1);
loc := n i đ t đ
c ch n b i giá tr cont l n nh t
For j := index DownTo loc Do CA(*,j) := AA(*,j-1);
CA(*,loc) := AA(*,index);
index := index + 1
End
S p th t các hàng theo th t t
ng đ i c a c t.
End.
Ví d 6.13. Ti p t c v i nh ng k t qu tính toán nh ng ví d trên, chúng ta
xem xét quá trình gom t các thu c tính c a quan h PROJ.
Kh i đ u chúng ta đ t c t 1 và 2 c a AA vào ma tr n CA. Ti p theo chúng ta
xét c t 3 (thu c tính A3), có ba cách đ t mô t theo v trí là 3-1-2, 1-3-2 ho c 1-2-3.
Chúng ta tính đóng góp cho s đo ái l c chung c a m i kh n ng này :
122
Th t 0-3-1 :
cont(A0,A3,A1) = 2bond(A0,A3) + 2bond(A3,A1) - 2bond(A0,A1)
chúng ta bi t r ng bond(A0,A1) = bond(A0,A3) = 0, vì v y:
cont(A0,A3,A1) = 2bond(A3,A1) = 2(45*48+5*0+53+45+3*0) = 8820
Th t 1-3-2 :
bond(A1,A3) = bond(A3,A1) = 4410
bond(A3,A2) = 890
bond(A1,A2) = 225
cont(A1,A3,A2) = 2bond(A1,A3) + 2bond(A3,A2) - 2bond(A1,A2) = 10150
Th t 2-3-4 :
bond(A1,A4) = 890
bond(A3,A4) = bond(A2,A4) = 0
cont(A2,A3,A4) = 2bond(A2,A3) + 2bond(A3,A4) - 2bond(A2,A4) = 1780
Trong nh ng cách tính toán trên l u ý r ng c t A0 và c t A4 là các v trí r ng
c a ma tr n CA trong ng c nh hi n t i, không đ c nh m l n v i thu c tính A4.Ta
th y th t 1-3-2 có s đóng góp l n nh t nên v trí này đ c ch n.
A1
A2
A1
A3
A2
A1
45
0
A1
45
45
0
A2
0
80
A2
0
5
80
A3
45
5
A3
45
53
5
A4
0
75
A4
0
3
75
(a)
(b)
A1
A3
A2
A4
A1
45
45
0
0
A2
0
5
80
A3
45
53
A4
0
3
(c)
A1
A3
A2
A4
A1
45
45
0
0
75
A3
45
53
5
3
5
3
A2
0
5
80
75
75
78
A4
0
3
75
78
(d)
123