Học viện Công nghệ Bưu chính Viễn thông
Khoa Công nghệ thông tin
BÀI TẬP LỚN
Môn: Cơ sở dữ liệu phân tán
Đề tài: Bài toán cấp phát
GV: Phạm Thế Quế
SV: Nhóm 4
Lớp: D08CNTT2
Hà Nội, 2011
MỤC LỤC
Giới thiệu về cấp phát dữ liệu
1. Cấp phát dữ liệu
Thiết kế hệ cơ sở dữ liệu phân tán bao gồm việc phân mảnh dữ liệu và cấp phát dữ
liệu trên các site. Có hai phương pháp phân mảnh dữ liệu là phân mảnh ngang và phân
mảnh dọc, sau quá trình phân mảnh ta thu được một tập các mảnh dữ liệu và công việc
tiếp theo là đặt các mảnh dữ liệu trên các site như thế nào? Đó chính là việc cấp phát
dữ liệu.
Ví dụ ta có một hệ thống xử lý phân tán như hình vẽ. Có ba site trên mạng, tại mỗi site
có một hệ cơ sở dữ liệu chứa các mảnh dữ liệu àm việc chứa các mảnh đó thỏa một
điều kiện nào đó
I.
Site21
Site11
Site31
Cấp phát dữ liệu tùy thuộc vào từng ứng dụng cụ thể, với cùng một tập các mảnh dữ
liệu nhưng với mỗi ứng dụng khác nhau thì cách cấp phát dữ liệu là khác nhau.
Các kiểu cấp phát
Có 3 kiểu cấp phát dữ liệu là: nhân bản hoàn toàn, nhân bản một phần và phân hoạch.
Ví dụ ta có 3 mảnh F1, F2, F3
Nhân bản hoàn toàn: toàn bộ các mảnh đều được đặt ở tất cả các vị trí
Nghĩa là ở site1, site2 và site3 đều có cả 3 mảnh F1, F2, F3
Nhân bản một phần: các mảnh có được sao chép thành nhiều bản nhưng
không phải tất cả các bản được lưu tại tất cả các vị trí
VD: site1 có F1, F2
site2 có F1, F2 , F3 và ở site3 có F3
Không nhân bản (phân hoạch): không có bất kì một bản sao của bất kì mảnh
dữ liệu nào trên mạng, sự tồn tại của một mảnh dữ liệu trên mạng là duy nhất.
VD: site có F1, site2 có F2 và site3 có F3
So sánh giữa các phương pháp nhân bản:
Nhân bản hoàn toàn Nhân bản một phần Phân hoạch
2.
Xử lý truy vấn
Quản lý thư mục
Dễ
Dễ/ không tồn tại
Điều khiển đồng thời Vừa phải
Độ tin cậy
Rất cao
Tính thực tế
Có thể áp dụng
Cùng mức độ khó khăn
Cùng mức độ khó khăn
Khó
cao
Thực tế
Dễ
Thấp
Có thẻ áp dụng
-
-
-
-
II.
Xử lý truy vấn là việc thiết kế các thuật toán để phân tích truy vấn và chuyển
chúng thành một dãy các thao tác dữ liệu.
Quản lý thư mục: thư mục là nơi chứa các thông tin về mô tả và các vị trí về
các mục dữ liệu trong cơ sở dữ liệu
Điều khiển đồng thời: giải quyết việc đồng bộ truy cập vào cơ sở dữ liệu phân
tán, không chỉ quan tâm đến tính toàn vẹn mà còn giải quyết tính nhất quán
trong nhiều bản sao.
Độ tin cậy: tính mất mát dữ liệu và độ chính xác của thông tin
Tính thực tế: việc áp dụng các phương pháp nhân bản trong thực tế.
Bài toán cấp phát
1. Bài toán cấp phát
Giả sử có: một tập các mảnh dữ liệu F={F1, F2,…,Fn}
Một tập các vị trí S={S1, S2,…, Sn}
Một tập các ứng dụng Q={q1, q2,….,qn}
Bài toán cấp phát dữ liệu được phát biểu:
“Tìm một phân phối cho tập các mảnh F cho các vị trí S sao cho khi thực
hiện các ứng dụng Q là tối ưu”
Vậy như thế nào là tối ưu? Tối ưu chính là việc thỏa mãn:
Chi phí nhỏ nhất: bao gồm chi phí lưu trữ mảnh Fi tại node Sj. Chi phí truy
vấn Fi tại vị trí Sj. Chi phí cập nhật Fi tại tất cả các node lưu trữ nó và chi phí
trao đổi thông tin.
Hiệu năng : Duy trì hiệu năng, làm giảm thời gian đáp ứng, tăng tối đa lưu
lượng hệ thống tại mỗi node mạng.
2. Phát biểu lại bài toán
Với một lược đồ cấp phát cho trước bài toán trở thành tính hàm tổng chi phí ứng
với lược đồ đó.Ta có:
Đầu vào:
Tập mảnh dữ liêu:
F={F1, F2,…,Fn}
Tập vị trí :
S={S1, S2,…, Sn}
Tập các ứng dụng:
Q={q1, q2,….,qn}
Thông tin về cơ sở dữ liệu:
Thông tin về cơ sở dữ liệu cho bài toán cấp phát bao gồm:
•
Seli(Fj) : số lượng các bộ của mảnh Fj cần được truy xuất để xử lý câu truy vấn
qi
2.1.
Size(Fj) = card(Fj)*length(Fj): kích thước của mảnh Fj (bytes)
Length (Fj): chiều dài của một bộ trong mảnh Fj
Card(Fj): số bộ của mảnh Fj
Thông tin về ứng dụng
•
RRij: số lần truy xuất đọc do truy vấn qi thực hiện trên mảnh Fj
•
•
•
URij: số lần truy xuát cập nhật ghi trên mảnh Fj
o
(trong bài toán ví dụ ở trên coi nếu ứng dụng có truy cập vào mảnh thì
tần suất truy cập =1)
Ma trận UM thể hiện sự cập nhật mảnh F của các ứng dụng: là một ma trân 2
chiều các phần tử trong ma trận là các giá trị uij nhận các giá trị
Xét cho bài toán ứng dụng ở trên ta được ma trận cập nhật ghi
uij
F1
F2
….
Fn
q1
u11
u12
…
u1n
q2
u21
u22
…
u2n
…
…
…
…
…
qn
un1
un2
…
unn
Ma trận RM thể hiện sự đọc mảnh F của các ứng dụng: là một ma trận hai
chiều chỉ nhận giá trị O và 1. Giá trị của phần tử rij
Xét cho bài toán ứng dụng ở trên ta có ma trận cập nhật đọc
rij
F1
F2
….
Fn
q1
r11
r12
…
r1n
q2
r21
r22
…
r2n
…
…
…
…
…
qn
rn1
rn2
…
rnn
Một vecto O gồm các giá trị o(i) mô tả vị trí đưa ra ứng dụng qi
VD: ứng dụng q3 được đưa ra tại site1 ta có o(3)=1
Giả sử với bài toán trên ta có Vecto O(2,3, 1,1)
Thông tin về vị trí
Trước mỗi bài toán cần cấp phát chúng ta cần phải biết khả năng lưu trữ và xử lý
của mỗi một vị trí lưu trữ trên mạng. Thông tin về vị trí bao gồm:
Chi phí để lưu trữ dữ liệu tại vị trí Sk kí hiệu USCk
USCml
F1
F2
…
Fl
S1
USC11
USC12
…
USC1l
S2
USC21
USC22
…
USC2l
…
…
…
…
…
Sm
USCm1
USCm2
..
USCm1
Chi phí xử lý một đơn vị công việc tại vị trí Sk kí hiệu LPCk
LPCml
S1
S2
…
Sm
F1
LPC11
LPC21
…
LPCm1
F2
LPC12
LPC22
…
LPCm2
…
…
…
…
..
Fl
LPC1l
LPC2l
…
LPCm1
Ma trận thông tin về vị trí
USCk
LPCk
…
…
S1
S2
…
Sm
Thông tin về mạng
Khi truyền dữ liệu giữa hai vị trí trên mạng dữ liệu ở dạng khung (Frame). Chi
phí truyền dữ liệu cũng được tính theo đơn vị trên một khung. Ta kí hiệu g ij là chi
phí truyền một khung giữa hại vị trí S i và Sj. Và fsize() là hàm kích thước tính
theo byte của một khung dữ liệu.
Ta có ma trận thể hiện chi phí truyền khung dữ liệu giữa các vị trí như sau:
gij
S1
S2
…
Sm
S1
g11
g12
…
g1m
S2
g21
g22
…
g2m
…
…
…
…
…
Sm
gm1
gm2
…
gm1
Ma trận cấp phát
xij
S1
S2
…
Sm
2.2.
F1
x11
x21
F2
x12
x22
xm1
xm2
…
Fn
x1n
x2n
xmn
Đầu ra bài toán:
Hàm tổng chi phí
Tổng chi phí cấp phát bao gồm hai thành phần: Chi phí xử lý truy vấn và chi phí
lưu trữ. Được biểu diễn như sau :
Trong đó :
TOC : Tổng chi phí cấp phát dữ liệu.
QPCi : Chi phí xử lý truy vấn của ứng dụng qi
STCjk : Chi phí lưu trữ mảnh Fj tại vị trí Sk.
Chi phí lưu trữ STC cần xét mảnh Fj tại vị trí Sk.
Chi phí xử lý truy vấn QPC trong bài toán cấp phát theo mô hình DAP được chia
thành hai thành phần: Chi phí xử lý (PC) và chi phí truyền dữ liệu (TC). Trong
đó chi phí xử lý (PC) bao gồm ba thành phần: chi phí truy xuất (AC), chi phí duy
trì toàn vẹn (IE) và chi phí điều khiển đồng thời (CC).
Với truy vấn qi bất kỳ ta có:
QPCi = PCi + TCi.
PCi = ACi + IEi + CCi
(1)
TCi = TCUi +TCRi
Phần trình bày phía dưới đây sẽ tính các giá trị trên
2.2.1.
Tính chi phí lưu trữ STC
- Tổng chi phí lưu trữ tại tất cả các vị trí cho tất cả các mảnh
STCjk = USCk * Size(Fj) * xjk
2.2.2.
Chi phí truy xuất AC
Công thức tính:
Hai số hạng đầu là số truy nhập của truy vấn q i đến mảnh Fj .Biểu thức (URij +
RRij) tổng số các truy cập đọc và cập nhật với giá thành xử lý là như nhau. Kí hiệu
tổng cho biết tổng các truy nhập cho tất cả các mảnh được q i tham chiếu. Nhân với
LPCk sẽ cho chi phí truy nhập tại vị trí S k . Nhân xjk cho các giá trị chi phí các
trạm lưu các mảnh.
Chi phí truyền TC
Chi phí cập nhật của hàm truyền dữ liệu TCU
Công thức :
2.2.3.
Số hạng thứ nhất thông báo cập nhật từ vị trí gốc o(i) của q i đến tất
cả các bản sao cần cập nhật. Số hạng thứ hai là thông báo xác nhận.
•
•
Chi phí chỉ đọc của hàm truyền dữ liệu TCR
Công thức áp dụng:
Số hạng thứ nhất trong TCR biểu diễn 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 nhập.
Số hạng thứ hai là truyền các kết quả từ trạm này đến trạm yêu cầu.
Phương trình này khẳng định rằng trong số các trạm có bản sao của cùng một mảnh,
chỉ trạm sinh ra tổng chi phí truyền thấp nhất mới được chọn để thực hiện thao tác
này
Hướng giải quyết bài toán:
Một công ty có các dự án đặt ở các địa điểm khác nhau, công ty quản lý các thông tin
của nhân viên và của dự án bao gồm:
EMP (ENo, EName, Title)
ASG (ENo, PNo, Resp, Dur)
PROJ(PNo, PName, Budget, Loc)
PAY (Title, Sal)
III.
Sal: lương
Loc: địa điểm
ENo: mã nhân viên
Title: chức vụ
Dur: thời hạn
EName: tên nhân viên
Các bảng dữ liệu
PAY
TITLE
SAL
Elect. Eng. 4000
0
Syst. Anal.
3400
Mech.Eng
0
Progamme
2700
r
0
2400
0
PROJ
PNO
PNME
BUDGE
T
LOC
Budget: ngân sách cho DA
Resp: trách nhiệm
PNo: mã dự án
P1
P2
P3
P4
ASG
ENO
E1
E2
E2
E3
E3
E4
E5
E6
E7
E8
Instrumentation
Dabatase
Develop
CAD/ CAM
Maintenance
150000
135000
250000
310000
EMP
ENO
PNO
P1
P2
P3
P4
P2
P1
P3
P2
P1
P4
Monteal
New York
New York
Paris
ENAME
TITLE
RESPE1
J.Doe DUR Elect. Eng
Manager
12 Syst. Anal
E2
M. Smith
Analyst
E3
A.lee 24 Mech.Eng
Analyst
6
E4
J.Mmith
Programmer
Consultant
10
E5
B.Casey
Syst.Anal
Engineer
E6
L.Chu 48 Elect.Eng
Programmer
E7
R.Dvid18 Mech.Eng
Manager
E8
J.Jones24 Syst. Anal
Phân mảnh dữ liệu
Manager
48
Engineer
36
PROJ1=
(LOC=Monteal)(PROJ)
Manager
40BUDGE LOC
PNO
PNAME
P1
T
Instrumentation 150000
Monteal
PROJ2=(LOC=NewYork)(PROJ)
PNO
PNAME
BUDGE
T
LOC
P2
Dabatase
135000
New York
P3
DevelopCAD/
CAM
250000
New York
BUDGE
T
LOC
PROJ3=(LOC=Paris)(PROJ)
PNO
PNAME
P4
Maintenance
310000
ASG1=ASG
PNO(PROJ1)
Paris
ENO
PNO
RESP
DUR
E1
E4
E7
P1
P1
P1
Manager
Programmer
Engineer
12
18
36
ASG2=ASGPNO(PROJ2)
ENO
PNO
RESP
E2
P2
Analyst
E2
P3
Analyst
E3
P2
Engineer
E5
P3
Manager
E6
P2
Manager
DUR
24
6
48
24
48
ASG3=ASGPNO(PROJ3)
ENO
PNO
RESP
DUR
E3
P4
Consultant
10
E8
P4
Manager
40
Công ty có các 3 trang web khác nhau và tại mỗi trang web có các ứng dụng khác
nhau. Chúng ta sẽ xét việc cần những thông tin gì để có thể tiến hành cấp phát dữ liệu
Vậy với bài toán được đưa ra ở trên ta có tập mảnh dữ liệu là:
F={EMP, PAY, PROJ1, PROJ2, PROJ3, ASG1, ASG2, ASG3}
Tập các vị trí
S={S1, S2, S3}
Tập các ứng dụng:
Q1: Lấy ra thông tin các nhân viên làm việc trong các dự án ở NewYok có lương >
3000
SELECT EMP.ENO, EMP.ENAME, EMP.TITLE
FROM EMP, ASG2, PAY
WHERE EMP.ENO=ASG2.ENO AND EMP.TITLE=PAY.TITLE AND PAL>3000
ASG2 ENO ( EMP TITLE (TITLE((PAL>3000)(PAY))))
Q2: Đổi chức danh của nhân viên làm Manager tất cả các dự án thành Analyst
UPDATE ASG1, ASG2, ASG3
SET RESP=” Analyst”
WHERE RESP=”Manager ”
Q3: Lấy danh sách các nhân viên có thời gian làm việc nhiều hơn 2 năm
SELECT EMP.ENO, EMP.ENAME, EMP.TITLE
FROM EMP, ASG1
WHERE EMP.ENO=ASG1.ENO AND DUR>24
SELECT EMP.ENO, EMP.ENAME, EMP.TITLE
FROM EMP, ASG2
WHERE EMP.ENO=ASG2.ENO AND DUR>24
SELECT EMP.ENO, EMP.ENAME, EMP.TITLE
FROM EMP, ASG3
WHERE EMP.ENO=ASG3.ENO AND DUR>24
( EMP ENO σDUR>24 (ASG1)) V (EMP ENO σDUR>24 (ASG2)) V (EMP ENO σDUR>24
(ASG3))
Q4: Tăng kinh phí của các dự án có kinh phí <200000 thêm 1000
UPDATE PNO1, PROJ2, PROJ3
SET BUDGET = BUDGET+1000
WHERE BUDGET<200000
Để đơn giản ta quy về các kí hiệu tương đương
F={F1, F2, F3, F4, F5, F6, F7, F8}
S={S1, S2, S3}
Q={q1, q2,q3, q4}
Phần tiếp theo chúng ta cùng tìm hiểu các thông tin và công thức để tính toán chi phí tìm ra
một mô hình cấp phát tốt nhất có thể.
IV. Hướng giải quyết bài toán
1. Đầu vào bài toán
1.1. Thông tin về cơ sở dữ liệu:
Thông tin về cơ sở dữ liệu cho bài toán cấp phát bao gồm:
• Seli(Fj) : số lượng các bộ của mảnh Fj cần được truy xuất để xử lý câu truy vấn qi
Xét cho bài toán trên:
-Ứng dụng q1 khi thực hiện truy xuất dữ liệu trên 3 mảnh EMP, PAY và ASG2
Sel1(F1)=8
Sel1(F2)=2
Sel1(F6)=5
-Ứng dụng q3 khi thực hiện truy xuất các mảnh EMP, ASG1, ASG2 ASG3
Sel3(F1)=8
Sel3(F6)=1
Sel3(F7)=2
Sel3(F8)=1
• Size(Fj) = card(Fj)*length(Fj): kích thước của mảnh Fj (bytes)
Length (Fj): chiều dài của một bộ trong mảnh Fj
Card(Fj): số bộ của mảnh Fj
VD:
TITLE
SAL
Elect. Eng. 4000
0
Syst. Anal.
3400
Mech.Eng 0
Progamme 2700
r
0
Kích thước
1 bộ là 20
bytes
4 bộ
2400
0
Size= 4*20=80(bytes)
Xét cho bài toán trên ta có size của các mảnh như sau:
Mảnh
F1
F2
F3
F4
F5
F6
F7
F8
1.2.
length
30
20
25
25
25
40
40
40
Card
8
4
1
2
1
3
5
2
Thông tin về ứng dụng
size
240
80
25
50
25
120
200
80
Ma trận UM
Xét cho bài toán ứng dụng ở trên ta được ma trận cập nhật ghi
UM
F1
F2
F3
F4
F5
F6
F7
F8
q1
0
0
0
0
0
0
0
0
q2
0
0
0
0
0
1
1
1
q3
0
0
0
0
0
0
0
0
q4
0
0
1
1
1
0
0
0
Ma trận RM
Xét cho bài toán ứng dụng ở trên ta có ma trận cập nhật đọc
RM
F1
F2
F3
F4
F5
F6
F7
F8
q1
1
1
0
0
0
0
1
0
q2
0
0
0
0
0
1
1
1
q3
1
0
0
0
0
1
1
1
q4
0
0
1
1
1
0
0
0
Giả sử với bài toán trên ta có Vecto O(2,3, 1,1)
1.3.
Thông tin về vị trí
Trước mỗi bài toán cần cấp phát chúng ta cần phải biết khả năng lưu trữ và xử lý của
mỗi một vị trí lưu trữ trên mạng. Thông tin về vị trí bao gồm
Vị trí
USCk
LSCk
S1
2
4
S2
1
3
S3
2
3
1.4.
Thông tin về mạng
S1
S2
S3
S1
0
4
5
S2
4
0
3
S3
5
3
0
Mô hình cấp phát
Ma trận 1
F1
1
1
0
S1
S2
S3
F2
0
1
0
F3
1
0
0
F4
1
0
0
F5
1
0
0
F6
1
0
1
F7
1
1
1
F8
1
0
1
Ma trận 2
Xij
S1
S2
S3
F1
1
1
0
F2
0
1
0
F3
1
0
0
F4
0
0
1
F5
0
1
0
F6
0
1
1
F7
1
0
0
F8
0
1
0
Mục đích của chúng ta sẽ sử dụng các công thức tính chi phí để so sánh giữ hai cách
cấp phát tìm ra cách cấp phát có chi phí nhỏ hơn nó sẽ được chọn cho việc cấp phát
dữ liệu
2. Đầu ra bài toán
2.1.
Tính chi phí lưu trữ STC
- Tổng chi phí lưu trữ tại tất cả các vị trí cho tất cả các mảnh
STCjk = USCk * Size(Fj) * xjk
- Ví dụ : bài toán cấp phát trên :
Dựa vào ma trận cấp phát và ma trận kích thước mảnh Size(F j), chi phí lưu trữ dữ
liệu USCk :
S1
S2
S3
Size
F1
F2
F3
F4
F5
F6
F7
F8
1
1
0
240
0
1
0
80
1
0
0
25
1
0
0
50
1
0
0
25
1
0
1
120
1
1
1
200
1
0
1
80
Theo cách cấp phát 1 Ta có :
US
C
2
1
2
+ Tại S1:
STC1 = STC11 + STC31 + STC41 + STC51 + STC61 + STC71 + STC81
STC1 = 2*240 + 2*25 + 2*50 + 2*25 + 2*120 + 2*200 + 2*80= 1480 dv
+ Tại S2:
STC2 = STC12 + STC22 + STC72
STC2 = 1*240 + 1*80 + 1*200 = 520 dv
+ Tại S3 :
STC3 = STC63 + STC73 + STC83
STC3 = 2*120 + 2*200 + 2*80 = 800 dv
Vậy chi phí lưu trữ :
STC = STC1 + STC2 + STC3 = 1480 + 520 + 800 = 2800 đơn vị lưu trữ.
( Thường tính bằng dung lượng)
Tương tự tính toán với cách cấp phát 2 ta tính được chi phí lưu trữ
STC’= STCj1 + STCj2 + STCj3 = 930+545+340 = 1815 (dv)
a. Tính chi phí truy vấn QPC
b.1. Chi phí truy vấn
Với truy vấn qi bất kỳ ta có:
QPCi = PCi + TCi.
PCi = ACi + IEi + CCi
TCi = TCUi +TCRi
Suy ra :
= ACi + IEi + CCi +TCUi + TCRi
b.2. Chi phí xử lý
Chi phí truy xuất AC
- Công thức tính:
Hai số hạng đầu là số truy nhập của truy vấn q i đến mảnh Fj .Biểu thức (URij + RRij)
tổng số các truy cập đọc và cập nhật với giá thành xử lý là như nhau. Kí hiệu tổng cho
biết tổng các truy nhập cho tất cả các mảnh được q i tham chiếu. Nhân với LPC k sẽ
cho chi phí truy nhập tại vị trí Sk . Nhân xjk cho các giá trị chi phí các trạm lưu các
mảnh.
- Ví dụ: trong bài toán cấp phát đang xét tính theo ma trận 1với các thông tin
F1
F2
F3
F4
F5
F6
F7
F8
S1
S2
S3
1
1
0
U
M
q1
q2
q3
q4
F1
F2
F3
F4
F5
F6
F7
F8
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
1
0
1
0
0
0
1
0
0
0
1
0
0
F4
F5
F6
F7
RM
q1
q2
q3
q4
0
1
0
1
0
0
F1
1
0
1
0
1
0
0
F2
1
0
0
0
F3
0
0
0
1
1
0
0
0
0
0
1
1
0
1
0
0
0
1
1
1
1
0
1
1
0
Vị trí
USCk
LSCk
S1
S2
S3
2
1
2
4
3
3
1
0
1
1
1
1
0
F8
0
1
1
0
Ta có: trong bài toán này tần xuất đọc và cập nhật là bằng 1 nếu ứng dụng đó
có cập nhật hoặc đọc tại mảnh đó.
* Với q1: Tính AC1
Xét tại site S1: có các mảnh F1, F3, F4, F5, F6, F7, F8
AC11 = (0+1)*4 + (0+0)*4 + (0+0)*4 + (0+0)*4 + (0+0)*4+ (0+1)*4 +
(0+0)*4
=8
- Xét tại site S2: có các mảnh F1, F2, F7
AC12 = (0+1)*3 + (0+1)*3 + (0+1)*3
=9
- Xét tại site S3: có các mảnh F6, F7, F8
AC13 = (0+0)*3 + (0+1)*3 + (0+0)*3
=3
AC1 = AC11 + AC12 + AC13
= 8+9+3 = 20 đơn vị truy xuất
-
* Với q2: Tính AC2:
Xét tại site S1: có các mảnh F1, F3, F4, F5, F6, F7, F8
AC21 = (0+0)*4 + (0+0)*4 + (0+0)*4 + (0+0)*4 + (1+1)*4+ (1+1)*4 +
(1+1)*4
= 24
- Xét tại site S2: có các mảnh F1, F2, F7
AC22 = (0+0)*3 + (0+0)*3 + (1+1)*3
=6
- Xét tại site S3: có các mảnh F6, F7, F8
AC23 = (1+1)*3 + (1+1)*3 + (1+1)*3
= 18
AC2 = AC21 + AC22 + AC23
= 24+6+18 = 48 đơn vị truy xuất
-
* Với q3: Tính AC3
Xét tại site S1: có các mảnh F1, F3, F4, F5, F6, F7, F8
AC31 = (0+1)*4 + (0+0)*4 + (0+0)*4 + (0+0)*4 + (0+1)*4+ (0+1)*4 +
(0+1)*4
= 16
- Xét tại site S2: có các mảnh F1, F2, F7
AC32 = (0+1)*3 + (0+0)*3 + (0+1)*3
=6
- Xét tại site S3: có các mảnh F6, F7, F8
AC33 = (0+1)*3 + (0+1)*3 + (0+1)*3
=9
AC3 = AC31 + AC32 + AC33
-
= 16+6+9 = 31 đơn vị truy xuất
* Với q4: Tính AC4
Xét tại site S1: có các mảnh F1, F3, F4, F5, F6, F7, F8
AC41 = (0+0)*4 + (1+1)*4 + (1+1)*4 + (1+1)*4 + (0+0)*4+ (0+0)*4 +
(0+0)*4
= 24
- Xét tại site S2: có các mảnh F1, F2, F7
AC42 = (0+0)*3 + (0+0)*3 + (0+0)*3
=0
- Xét tại site S3: có các mảnh F6, F7, F8
AC33 = (0+0)*3 + (0+0)*3 + (0+0)*3
=0
AC4 = AC41 + AC42 + AC43
= 24+0+0 = 24 đơn vị truy xuất
-
Vậy tổng AC = AC1 + AC2 + AC3 + AC4 = 20+48+31+24= 123 đơn vị truy xuất.
Tương tự tính theo ma trận cấp phát thứ 2 ta có
AC’= AC’1 + AC’2 + AC’3 + AC’4 = 14+26+20+20=80 đơn vị truy xuất
( đơn vị truy xuất thường là thời gian)
Chi phí duy trì toàn vẹn IE
Chi phí điều khiển đồng thời CC.
b.3. Chi phí truyền TC
Chi phí cập nhật của hàm truyền dữ liệu TCU
- Công thức :
Số hạng thứ nhất thông báo cập nhật từ vị trí gốc o(i) của q i đến tất cả
các bản sao cần cập nhật. Số hạng thứ hai là thông báo xác nhận.
-
Ví dụ: trong bài toán cấp phát đang xét tính theo ma trận 1với các thông
tin
F1
1
1
0
S1
S2
S3
U
M
q1
q2
q3
q4
S1
S2
S3
F2
0
1
0
F3
1
0
0
F4
1
0
0
F5
1
0
0
F6
1
0
1
F7
1
1
1
F8
1
0
1
F1
F2
F3
F4
F5
F6
F7
F8
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
1
0
1
0
0
0
1
0
0
0
1
0
0
S1
S2
S3
0
4
5
6
0
3
4
9
0
Ta có: Vecto O(2,3, 1,1)
- Xét câu truy vấn q1
TCU1 = 0
- Xét câu truy vấn q2
TCU2 = [(1+1+1)*5 + 1*3 + (1+1+1)*0] + [(1+1+1)*4 + 1*9 +
(1+1+1)*0] = 18 + 21 = 39
- Xét câu truy vấn q3
TCU3 = 0
- Xét câu truy vấn q4
TCU4 = [(1+1+1)*0 + 0*6 + 0*4] + [(1+1+1)*0 + 0*4 + 0*5]
=0
Vậy TCU = TCU1+ TCU2+ TCU3+ TCU4 = 0+39+0+0
= 39 đơn vị truyền dữ liệu
Tương tự tính theo ma trận 2 ta tính được chi phí
TCU’= TCU’1+ TCU’2+ TCU’3+ TCU’4 = 0+21+0+19= 40 đơn vị truyền
dữ liệu
Chi phí chỉ đọc của hàm truyền dữ liệu TCR
- Công thức áp dụng:
•
Số
hạng thứ
nhất trong TCR biểu
diễn 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 nhập.
• Số hạng thứ hai là truyền các kết quả từ trạm này đến trạm yêu cầu.
Phương trình này khẳng định rằng trong số các trạm có bản sao của cùng một
mảnh, chỉ trạm sinh ra tổng chi phí truyền thấp nhất mới được chọn để thực
hiện thao tác này
Ví dụ: Xét bài toán cấp phát trên vởi ma trận cấp phát 1 và các thông tin
-
F1
1
1
0
S1
S2
S3
RM
q1
q2
q3
q4
S1
F1
1
0
1
0
F2
0
1
0
F3
1
0
0
F2
1
0
0
0
F3
0
0
0
1
F4
1
0
0
F4
0
0
0
1
F5
1
0
0
F5
0
0
0
1
F6
1
0
1
F7
1
1
1
F6
0
1
1
0
F7
1
1
1
0
S1
S2
S3
0
6
4
F8
1
0
1
F8
0
1
1
0
S2
S3
4
5
0
3
9
0
= aji
Đặt
và Vecto O(2,3, 1,1)
* Với ứng dụng q1 :
- Tại mảnh F1 : + Tại S1: d1 = 4+6*a11
Sel1(F1) = 8
Length(F1) = 30
=> a11 = 8*30/20 = 12
Fsize = 20
Vậy : d1 = 4+6*12 = 76
+ Tại S2: d2 = 0
Min1 = 0
- Tại mảnh F2 : + Tại S2: d = 0
Min2 = 0
- Tại mảnh F7 : + Tại S1: d1 = 4+6*a71
Sel1(F7) = 5
Length(F7) = 40
=> a71 = 5*40/20 = 10
Fsize = 20
Vậy : d1 = 4+6*10 = 64
+ Tại S2 : d2 = 0
+ Tại S3 : d3 = 9+3*a71
= 9+3*10 = 39
Min3 = 0
Tổng chi phí đọc: TCR1 = 0+0+0= 0
* Với ứng dụng q2
- Tại mảnh F6 : + Tại S1: e1 = 5+4*a62
Sel2(F6) = 1
Length(F6) = 40
=> a62 = 1*40/20 = 2
Fsize = 20
Vậy : e1 =5+4*2 = 13
+ Tại S3: e3 = 0
Min1 = 0
- Tại mảnh F7 :
+ Tại S1: e1 = 5+4*a72
Sel2(F7) = 2
Length(F7) = 40
=> a72 = 2*40/20 = 4
Fsize = 20
Vậy : e1 = 4+6*10 = 64
+ Tại S2 : e2 = 3+9*a72
= 3+9*4 = 39
+ Tại S3 : e3 = 0
Min2 = 0
- Tại mảnh F8 : + Tại S1: e1 = 5+4*a82
Sel2(F8) = 1
Length(F8) = 40
Fsize = 20
Vậy : e1 = 5+4*2 = 13
+ Tại S3 : e3 = 0
=> a82 = 1*40/20 = 2
Min3 = 0
Tổng chi phí đọc : TCR2 = 0+0+0= 0
* Với ứng dụng q3
- Tại mảnh F1 : + Tại S1: f1 = 0
+ Tại S2: f2 =6+4*a13
Sel3(F1) = 8
Length(F1) = 30
Fsize = 20
Vậy: f2 = 6+4*12= 54
Min1 = 0
=> a13 = 8*30/20 = 12
- Tại mảnh F6 : + Tại S1: f1 = 0
+ Tại S3: f3 = 4+5*a63
Sel3(F6) = 1
Length(F6) = 40
=> a72 = 1*40/20 = 2
Fsize = 20
Vậy: f3 = 4+5*2= 14
Min2 = 0
- Tại mảnh F7 : + Tại S1: f1 = 0
+ Tại S2 : f2 = 6+4*a73
Sel3(F7) = 2
Length(F7) = 40
=> a73 = 2*40/20 = 4
Fsize = 20
Vậy: f2 = 6+4*4= 22
+ Tại S3 : f3 = 4+5*a73
= 4+5*4 = 24
Min2 = 0
- Tại mảnh F8 : + Tại S1: f1= 0
+ Tại S3 : f3 = 4+5*a83
Sel3(F8) = 1
Length(F8) = 40
=> a83= 1*40/20 = 2
Fsize = 20
Vậy : f3 = 14
Min3 = 0
Tổng chi phí đọc : TCR3 = 0+0+0= 0
* Với ứng dụng q4
- Tại mảnh F3 : + Tại S1: h1 = 0
Min1 = 0
- Tại mảnh F4 : + Tại S1: h2 = 0
Min2 = 0
- Tại mảnh F5 : + Tại S1: h1 = 0
Min3 = 0
Tổng chi phí đọc :TCR4 = 0+0+0= 0
Vậy : Tổng chi phí đọc của hàm truyền dữ liệu đối với tất cả các truy vấn là :
TCR = TCR1 + TCR2 + TCR3 + TCR4 = 0
TCR’ = TCR’1 + TCR’2 + TCR’3 + TCR’4 = 0.
Vậy theo ma trận cấp phát 1
TC = TCU + TCR = 39 đơn vị truyền dữ liệu
PC = AC + IE + CC = 123 + …. Đơn vị truy xuất
STC = 2800 đơn vị lưu trữ
• Theo ma trận cấp phát 2
TC = TCU + TCR = 40 đơn vị truyền dữ liệu
PC = AC + IE + CC = 80 + …. Đơn vị truy xuất
STC = 1815 đơn vị lưu trữ.
Kết luận: Theo hai kết quả tính được với hai ma trận cấp phát khác nhau ta có
cách chọn mô hình cấp phát:
1. Nếu ứng dụng quan tâm tới việc lưu trữ dữ liệu ta xét theo chi phí lưu trữ và
chọn ma trận cấp phát thứ 2 (vì 1815 < 2800)
Ma trận cấp phát là:
•
Xij
S1
S2
S3
F1
1
1
0
F2
0
1
0
F3
1
0
0
F4
0
0
1
F5
0
1
0
F6
0
1
1
F7
1
0
0
F8
0
1
0
2. Nếu ứng dụng quan tâm tới việc truyền dữ liệu ta xét theo chi phí truyền dữ
liệu và chọn ma trận cấp phát thứ 1 (vì 39 < 40)
Ma trận cấp phát là:
S1
S2
S3
F1
1
1
0
F2
0
1
0
F3
1
0
0
F4
1
0
0
F5
1
0
0
F6
1
0
1
F7
1
1
1
F8
1
0
1
3. Nếu ứng dụng quan tâm tới việc truy xuất dữ liệu ta xét theo chi phí truy
xuất dữ liệu và chọn ma trận cấp phát thứ 2 (vì 80 < 123)
Ma trận cấp phát
Xij
S1
S2
S3
F1
1
1
0
F2
0
1
0
F3
1
0
0
F4
0
0
1
F5
0
1
0
F6
0
1
1
F7
1
0
0
F8
0
1
0
3. Xây dựng lược đồ cấp phát bằng phương pháp Heuristic
Bài toán cấp phát là một bài toán khó, có độ phức tạp là NP đầy đủ nên có rất nhiều
lời giải cho bài toán này nhưng lại không có lời giải tối ưu nhất, phương pháp em sưu
tầm đưa ra dưới đây là một trong những phương pháp Heuristic(gọi là phương pháp
heuristic vì đây là bài toán có nhiều lời giải và ta không kết luận được đâu là lời giải
đúng hay sai mà chỉ có thể kết luận được lời giải nào tối ưu - tối ưu theo khía cạnh nào
đó mà ta quan tâm - hơn mà thôi ) được sử dụng để đưa ra một lược đồ cấp phát là tối
ưu nhất.
Thuật toán có 3 bước tất cả:
Bước 1: Tạo ma trận khởi tạo là ma trận tối ưu cho truy vấn chỉ đọc, bằng cách:
-
Dựa vào ma trận chỉ đọc RM và vector O (gồm các giá trị o(i) mô tả vị trí
đưa ra câu truy vấn qi)
-
Để ma trận là tối ưu cho cấp phát chỉ đọc thì ta phải cấp phát các mảnh đích
mà nó truy vấn đọc đến tại site đưa ra truy vấn đó
Ví dụ, trong ứng dụng trên ta có:
Ma trận chỉ đọc
RM
F1
F2
F3
F4
F5
F6
F7
F8
q1
1
1
0
0
0
0
1
0
q2
0
0
0
0
0
1
1
1
q3
1
0
0
0
0
1
1
1
q4
0
0
1
1
1
0
0
0
Vector O(2,3, 1,1)
Câu truy vấn q1 thực hiên truy vấn đọc đến các mảnh F 1, F2, F7 mà theo O thì q1
lại được đặt tại S2 nên các mảnh F1, F2, F7 sẽ được cấp phát tại S2. Tương tự với
các câu truy vấn còn lại, ta có ma trận cấp phát sau:
Xij
F1
F2
F3
F4
F5
F6
F7
F8
q3 , q 4
S1
1
0
1
1
1
1
1
1
q1
S2
1
1
0
0
0
0
1
0
q2
S3
0
0
0
0
0
1
1
1
Ma trận này chính là ma trận kết quả của bước 1.
Bước 2: Ta xét đến các yêu cầu cập nhật.
Ta biết rằng bảng cấp phát được khởi tạo ở bước 1 là tốt nhất cho các yêu cầu chỉ đọc
vì nó không chịu bất kỳ tổn thất về chi phí giao tiếp nào. Không có mảnh coppy nào là
cần thiết hơn nữa vì nó sẽ không những không thu được lợi ích của truy vấn chỉ đọc
mà thậm chí còn làm tăng chi phí giao tiếp cho các yêu cầu cập nhật.
Do đó, vấn đề đặt ra trong bước này là làm thế nào để loại bỏ các mảnh copy từ bảng
cấp phát ban đầu mà từ đó giá chi phí giao tiếp sẽ được giảm cho tất cả các truy vấn.
Việc bỏ đi một mảnh copy từ một site sẽ ảnh hưởng lớn đến chi phí giao tiếp của một
số yêu cầu:
-
-
Một truy vấn chỉ đọc địa phương sẽ chịu thiệt hại về giá giao tiếp vì mảnh copy
đích đã bị loại bỏ đi ở site cục bộ này. Một yêu cầu chỉ đọc từ xa sẽ có thể hoặc
không chịu thêm tổn thất về chi phí giao tiếp, điều này phụ thuộc vào liệu truy
vấn có hay không truy cập và mảnh copy đã bị loại bỏ này.
Một yêu cầu cập nhật địa phương không bị ảnh hưởng vì nó sẽ không mất giá
giao tiếp nào đến site này để cập nhật mảnh đã bị loại bỏ nữa. Còn đối với một
yêu cầu cập nhật từ xa, vì mảnh copy đã bị loại bỏ nên cũng không bị tốn thêm
chi phí giao tiếp nào.
Nói ngắn gọn hơn là, khi loại bỏ một mảnh copy từ một site, một yêu cầu chỉ đọc địa
phương sẽ chịu tổn thất về chi phí (ta gọi chi phí tổn thất này là Cost), và một câu truy
vấn chỉ đọc từ xa thì có thể chịu tổn thất hoặc ko. Tuy nhiên một yêu cầu update từ xa
lại được lợi (ta gọi điều được lợi này là Benefit) vì những bản copy đã bị loại bỏ sẽ
không bị truy cập nữa. Bất kể lúc nào, Benefit thu được là lớn hơn Cost phải mất, thì
ta sẽ tiến hành loại bỏ mảnh copy ra khỏi site đó. Quá trình loại bỏ này sẽ được tiếp
tục lặp lại đến khi không có Benefit nào lớn hơn Cost hoặc bản copy hiện tại là duy
nhất trong mạng .
Bước 2 được lặp đi, lặp lại liên tục đến khi tất cả các mảnh được cấp phát ở bước 1 đã
được quét qua.
Ví dụ: