csdl phan tan

94
CSDL PHÂN TÁN Distributed Database Ths. Trần Thanh Hùng [email protected] HÀ NỘI - 2011

Upload: thanhvu

Post on 15-Jan-2016

38 views

Category:

Documents


0 download

DESCRIPTION

aa

TRANSCRIPT

Page 1: CSDL Phan Tan

CSDL PHÂN TÁNDistributed Database

Ths. Trần Thanh Hù[email protected]

HÀ NỘI - 2011

Page 2: CSDL Phan Tan

NỘI DUNG BÀI HỌC

PHẦN I: CÁC HỆ CSDL PHÂN TÁN PHẦN II: CÁC HỆ CSDL HƯỚNG ĐỐI TƯỢNG

Page 3: CSDL Phan Tan

TÀI LIỆU THAM KHẢO

S.Cen & Delagatn, Distributed Database, Principles & System, 1984

I.D Ullman, Principles of Knowledge – base and Database Systems, 1988 (Liên quan hệ suy diễn).

W.Kim, Introduction to Object Oriented Database System, 1991 (Liên quan tới hệ HĐT)

Page 4: CSDL Phan Tan

Chương mở đầu:

MỤC ĐÍCH XÂY DỰNG CSDL PHÂN TÁN

Page 5: CSDL Phan Tan

I. Các hệ thống xử lý tệp truyền thống

Nhược điểm: Dư thừa và dị thường dữ liệu Khó truy nhập, khai thác, tận dụng Không đạt được sự chia sẻ dữ liệu cho nhiều chương trình

khác nhau Độ tin cậy rất thấp Không thể phát triển ứng dụng theo cách tệp truyền thống với

dữ liệu ngày càng lớn và đòi hỏi độ phức tạp cao và dữ liệu dùng chung.

Cần phải ra đời các hệ CSDL

Page 6: CSDL Phan Tan

II. Mục đích ra đời các hệ CSDL

Chia sẻ dữ liệu cho nhiều người dùng Không có dư thừa và dị thường Không lưu trữ dữ liệu lặp đi lặp lại nhiều lần Chia sẻ cho nhiều chương trình, cho nhiều người sử

dụng khác nhau.

=> CSDL hợp nhất này là các hệ CSDL cổ điển truyền thống, tập trung

Page 7: CSDL Phan Tan

II. Mục đích ra đời các hệ CSDL

Ưu điểm Quản lý tập trung dữ liệu (Đặt trong 1 CSDL) Tránh dư thừa, đảm bảo tính nhất quán Cho phép chia sẻ dữ liệu Truy nhập 1 cách hiệu quả An toàn và toàn vẹn dữ liệu

Khi: CSDL rất lớn? Sức ép từ nhiều người sử dụng? Cho phép lặp dữ liệu? Sự tăng trưởng?=> CSDL tập trung không còn thích hợp nữa => cần xây dựng hệ

CSDL phân tán.

Page 8: CSDL Phan Tan

III. Các hệ CSDL phân tán

Thành phần dữ liệu của hệ được đặt tại các vùng địa lý khác nhau, định vị trên các trạm khác nhau => CSDL không còn quá lớn nữa => Có thể sử dụng CSDL truyền thống trên các máy trạm.

Thiết kế tạo lập CSDL Hệ CSDL trợ giúp quyết định

Hệ CSDL suy diễn (Chuyên gia)

Tập các luật Cơ chế suy diễn => Hệ CSDL suy diễn. Mô hình dữ liệu đa chiều + Tập các phép toán xử lý dữ liệu đa

chiều => OLAP (Online Analytical Processing) – Xử lý thông tin trực tuyến.

Không có khả năng lưu trữ và xử lý dữ liệu phi cấu trúc => Mô hình hướng đối tượng => Hệ CSDL HĐT.

Page 9: CSDL Phan Tan

PHẦN I:

CÁC HỆ CSDL PHÂN TÁN

Page 10: CSDL Phan Tan

Chương I. Các khái niệm cơ bản

I. CSDL phân tán? CSDL phân tán là 1 CSDL hợp nhất về logic bao gồm

nhiều CSDL có quan hệ logic với nhau nhưng được trải ra trên nhiều trạm làm việc khác nhau của 1 mạng máy tính.

2 tính chất của 1 hệ phân tán: Quan hệ logic Phân tán trên nhiều trạm làm việc

Tính chất phân tán có thể phân biệt với CSDL tập trung.

Page 11: CSDL Phan Tan

Ví dụ CSDL ngân hàng:

CSDL1

. ADBMS1

Trạm 1 – Terminal 1

CSDL1

. BDBMS2

Trạm 2 – Terminal 2

CSDL3

. CDBMS2

Trạm 3 – Terminal 3

Page 12: CSDL Phan Tan

Ứng dụng địa phương (Trạm – cục bộ)

Ngân hàng: gửi và rút tiền Các CSDL của các chi nhánh không có sự trao đổi CSDL

giữa các chi nhánh. Chỉ 1 tập CSDL cục bộ. Chuyển tiền: => cần ứng dụng phân tán (Tổng thể)

∑ABC = A + B + C = const

=> Dữ liệu được toàn vẹn.

Page 13: CSDL Phan Tan

II. Hệ quản trị CSDL phân tán (Distributed DBMS – DDBMS)

Hệ quản trị CSDL Phân tán là 1 hệ thống cho phép tạo lập CSDL phân tán và điều khiển mọi truy nhập đối với CSDL phân tán này, đặc biệt hệ phải đảm bảo sự phân tán dữ liệu là trong suốt đối với người sử dụng.

Các tác vụ chương trình của DDBMS: Tập chương trình quản trị CSDL địa phương (Quản trị CSDL tại máy

trạm – DBMS địa phương). Tập chương trình quản trị CSDL phân tán Tập chương trình quản trị truyền thông dữ liệu. Tập chương trình quản trị từ điển dữ liệu (Data Directory – DD): Từ

điển dữ liệu chứa thông tin về kho dữ liệu, thông tin về phân tán, các chi tiết liên quan đến sự phân tán.

=> Các thao tác, yêu cầu ở các trạm khác nhau => cập nhật vào từ điển (Như file Log phân tán)

Page 14: CSDL Phan Tan

Từ điển dữ liệu (Data Directory – DD):

Lặp toàn phần: lặp DD tại các trạm, khi các bản sao có yêu cầu -> không thể thực thi được.

Phân tán từ điển: tách ra và lưu trữ trên tất cả các trạm khác nhau => khi có sự thay đổi => có sự cập nhật trên từ điển ở tất cả các trạm => thực hiện 1 cách phân tán

Lặp bộ phận: có những bộ phận được lặp lại

Page 15: CSDL Phan Tan

III. CSDL phân tán thuần nhất và không thuần nhất

CSDL phân tán thuần nhất: là CSDL phân tán được thiết kế bằng cách chia nhỏ 1 CSDL xí nghiệp thành các CSDL địa phương, các CSDL địa phương đó được định vị trên các trạm làm việc khác nhau, tất cả các CSDL địa phương được biểu diễn bởi 1 mô hình dữ liệu (MHDL)và được quản trị bởi 1 phần mềm quản trị dữ liệu địa phương.

CSDL phân tán thuần nhất

CSDL 1

MHDL 1

DBMS 1

Trạm 1

CSDL 2

MHDL 2

DBMS 2

Trạm 2

CSDL n

MHDL n

DBMS n

Trạm n

... ≡

… ≡

The

o cá

ch t

iếp

cận

hướ

ng t

rên

xuốn

g –

(top

– d

own)

Page 16: CSDL Phan Tan

III. CSDL phân tán thuần nhất và không thuần nhất

CSDL phân tán không thuần nhất: là 1 CSDL phân tán được thiết kế bằng cách thiết kế hệ CSDL phân tán từ các CSDL địa phương hiện đang tồn tại, đang hoạt động. Các CSDL địa phương đó có thể được biểu diễn bởi các mô hình khác nhau và được quản trị bởi các phần mềm quản trị dữ liệu địa phương khác nhau.

CSDL phân tán không thuần nhất

CSDL 1

MHDL 1

DBMS 1

Trạm 1

CSDL 2

MHDL 2

DBMS 2

Trạm 2

CSDL n

MHDL n

DBMS n

Trạm n

... ≡

… ≡

The

o cá

ch t

iếp

cận

hướ

ng d

ướ

i lê

n

Page 17: CSDL Phan Tan

III. CSDL phân tán thuần nhất và không thuần nhất

Tại sao có 2 hướng tiếp cận khác nhau? CSDL phân tán thuần nhất: tiếp cận từ trên xuống vì tất cả các

trạm đều xây dựng 1 mô hình như nhau, giống hệt nhau => xây dựng từ trên xuống => Thiết kế phân tán ngay từ đầu.

CSDL phân tán không thuần nhất: Do mỗi trạm xây dựng 1 cách khác nhau => kết hợp lại với nhau thành hệ phân tán. Phù hợp với hệ thống kế thừa từ những Cơ sở vật chất có sẵn.

CSDL phân tán không thuần nhất có nhiều vấn đề cần xử lý do không có sự đồng bộ CSDL ở các trạm.

Page 18: CSDL Phan Tan

IV. Lợi ích của các hệ CSDL phân tán

Giải pháp thích hợp với các xí nghiệp có cơ cấu tổ chức kinh tế phi tập trung.

Giảm chi phí truyền thông Đáp ứng được đối với sự tăng trưởng Tính riêng tư và an toàn cao Độ tin cậy cao hơn Hiệu năng tăng lên …

=> CSDL phân tán = CSDL hợp nhất + Mạng phân tán.

Page 19: CSDL Phan Tan

Chương II. Kiến trúc của CSDL phân tán

Sơ đồ tổng thể

Sơ đồ phân đoạn

Sơ đồ sắp chỗ

…Sơ đồ ánh xạ địa phương 1

Sơ đồ ánh xạ địa phương n

DBMS1 DBMSn

CSDL 1 CSDL n

Trạm 1 Trạm n

CS

DL

phâ

n tá

n kh

ông

thuầ

n n

hấ

t

CS

DL

phâ

n tá

n th

uần

nh

ất Đây là kiến trúc

ở mức tổng thể => Thấy rõ CSDL toàn bộ xí nghiệp => Tách ra các CSDL địa phương (Phân đoạn) => Định vị tại các trạm khác nhau.

Page 20: CSDL Phan Tan

I. Sơ đồ tổng thể

Chứa đựng tập tất cả dữ liệu của xí nghiệp Để xác định sơ đồ cho nó => cần phải lựa chọn mô hình

để biểu diễn nó.

=> Sơ đồ tổng thể = { Tập tất cả các quan hệ tổng thể }

Page 21: CSDL Phan Tan

II. Sơ đồ phân đoạn

Mỗi 1 quan hệ tổng thể được tách thành các bộ phận không bao trùm lên nhau, mỗi 1 bộ phận đó gọi là 1 đoạn của quan hệ tổng thể.

Ánh xạ: {quan hệ tổng thể} - {đoạn}: 1 - nhiều.

Một quan hệ được tách thành nhiều đoạn. Một đoạn chỉ thuộc một quan hệ tổng thể. Ký hiệu:

Quan hệ tổng thể: R Các đoạn: Ri

Để biểu diễn 1 đoạn: Tên quan hệ và chỉ số đoạn hay Ri: đoạn thứ i của R

1 đoạn: đơn vị logic của CSDL phân tán.

Page 22: CSDL Phan Tan

III. Sơ đồ sắp chỗ

Đầu vào là tập các đoạn sau khi phân đoạn. Xét xem mỗi 1 đoạn được định vị tại những trạm làm việc nào, sự định vị đó thông qua ánh xạ: { đoạn } – { trạm } 1 đoạn – 1 trạm: 1 đoạn chỉ có 1 bản sao tại 1 trạm => CSDL phân tán

không bị dư thừa. 1 đoạn có thể được định vị tại 1 hay nhiều trạm (Có nhiều bản sao) ->

CSDL phân tán dư thừa. Lưu ý: có thể xét được CSDL phân tán dư thừa hay không => xét ánh xạ

đoạn – trạm. Ảnh vật lý: của 1 quan hệ tổng thể tại 1 trạm là tập tất cả các đoạn của

quan hệ tổng thể định vị tại trạm đó. Xét ánh xạ giữa {Quan hệ tổng thể, trạm} – { ảnh vật lý }

ánh xạ 1 - 1Ký hiệu: (R,j) – Rj

R – Tên quan hệ, j: chỉ số trạm => Rj là ảnh vật lý của quan hệ R tại trạm j.

Bản sao của 1 đoạn tại 1 trạm: Rij (Bản sao của đoạn Ri tại trạm j).

Page 23: CSDL Phan Tan

IV. Sơ đồ ánh xạ địa phương tại 1 trạm:

Xét ví dụ trạm j Ánh xạ: {Tập tất cả các ảnh vật lý tại trạm j } – {CSDLj} Với CSDL phân tán không thuần nhất => Không cần sơ

đồ sắp chỗ (Vì đã có CSDL địa phương trước đó) và không có sơ đồ phân đoạn. Sơ đồ tổng thể (ko thuần nhất): hợp nhất tất cả các CSDL

phân tán địa phương lại => Rất khó => Có thể có CSDL phân tán không thuần nhất có sơ đồ tổng thể hoặc không có sơ đồ tổng thể (Lựa chọn của người thiết kế tùy thuộc vào độ phức tạp của các CSDL phân tán địa phương và CSDL xí nghiệp chung).

=> Đưa ra quyết định thiết kế.

Page 24: CSDL Phan Tan

V. Các mức trong suốt khác nhau:

CSDL phân tán: Quan tâm tới vấn đề trong suốt đối với người sử dụng.

Người sử dụng đứng trên sơ đồ tổng thể: Sự che giấu của dữ liệu hoàn toàn che giấu với người sử dụng

(không biết dữ liệu được phân đoạn như thế nào). Mức trong suốt phân đoạn: ứng dụng được viết trên quan hệ tổng

thể, và người viết ứng dụng đó không hề biết đến sự phân đoạn và sự sắp chỗ của các đoạn (Có thể thay đổi sự phân đoạn -> Ứng dụng của NSD không hề bị ảnh hưởng) -> gọi là mức trong suốt phân đoạn.

Người sử dụng đứng trên sơ đồ phân đoạn: Mức trong suốt định vị: ứng dụng được viết trên các đoạn chứ

không phải là trên quan hệ tổng thể. Tuy nhiên sự định vị của các đoạn là che giấu đi và không ảnh hưởng ứng dụng của người sử dụng => gọi là mức trong suốt định vị.

Sự thay đổi liên quan đến định vị không thay đổi ứng dụng trên đoạn này.

Page 25: CSDL Phan Tan

V. Các mức trong suốt khác nhau:

Đứng trên sơ đồ sắp chỗ: Mức trong suốt ánh xạ địa phương: người sử dụng phải biểu

diễn ứng dụng không chỉ trên các đoạn mà phải chỉ rõ với bản sao nào của đoạn (Biết sự định vị và chọn trạm), tuy nhiên ứng dụng không phụ thuộc vào sơ đồ ánh xạ địa phương.

Page 26: CSDL Phan Tan

Người sử dụng

Rất nhiều loại người sử dụng (chuyên, không chuyên, người tổng thể, địa phương,…) Không chuyên: Người sử dụng không có kiến thức gì về tin học, là

người sử dụng bình thường muốn làm 1 công việc nào đó. Chuyên nghiệp: là người rành về tin học, sử dụng tin học để giải

quyết vấn đề yêu cầu. Mức trong suốt đối với người dùng:

Chuyên nghiệp: - Mức trong suốt ánh xạ địa phương (ứng dụng phân tán), có thể là

mức trong suốt cho người chuyên nghiệp biểu diễn.- CSDL địa phương (Ứng dụng địa phương) truy nhập vào CSDL địa

phương. Không chuyên:

- Làm việc ở mức trong suốt cao nhất, mức trong suốt phân đoạn (ứng dụng phân tán)

- CSDL địa phương (ứng dụng địa phương).

Page 27: CSDL Phan Tan

DDBMS – Distributed DBMS

Cung cấp các mức trong suốt khác nhau cho các người sử dụng khác nhau Mức trong suốt lặp lại là mức trong suốt mà ứng dụng của

người sử dụng không bị ảnh hưởng sự lặp lại của các bản sao.

Mức trong suốt lặp lại nằm ở giữa 2 mức: mức trong suốt định vị và mức trong suốt địa phương.

Page 28: CSDL Phan Tan

Chương III. Các kiểu phân đoạn dữ liệu

Một số phép toán trên CSDL: Chọn (Select): SLFR

Chiếu (Project): PJXR

Kết nối (Join): R JNF S

Kết nối tự nhiên (Natural Join): R NJN S Hợp (Union): R UN S Trừ (difference): R DF S Giao (Interect): R IN S Nửa kết nối (Semi – Join):

R SJF S = PJAttr(R)(R JNF S) = R’

Attr(R): Tập thuộc tính của R

=> R’ C R

Page 29: CSDL Phan Tan

I. Tiêu chuẩn của 1 kiểu phân đoạn

Đầy đủ: mỗi 1 hạng mục dữ liệu thuộc 1 quan hệ tổng thể thì cũng thuộc 1 trong các đoạn của nó.

Xây dựng lại: đảm bảo phục hồi được các quan hệ tổng thể từ các đoạn của nó.

Rời nhau: Sự bao trùm của các đoạn được tối thiểu hóa.

Page 30: CSDL Phan Tan

II. Phân đoạn ngang đơn giản (phép chọn)

Phân đoạn ngang là phân đoạn cắt quan hệ tổng thể theo chiều ngang (Cắt quan hệ tổng thể theo các bội, mỗi 1 đoạn là 1 tập con các bội của quan hệ)

Ví dụ:

S(S#,SNAME,STATUS,CITY)

Tách quan hệ tổng thể thành các đoạn ngang, mỗi 1 đoạn ngang chứa các hãng ở cùng 1 thành phố. Ký hiệu đoạn:

S1 = SLCity=‘HN’S - site 1,3

q1

S1 = SLCity=‘HCM’S - site 2,4

q2

Page 31: CSDL Phan Tan

II. Phân đoạn ngang đơn giản (phép chọn)

Kiểm tra 3 tiêu chuẩn phân đoạn: Đầy đủ: với mỗi 1 hãng hoặc địa chỉ ở Hà nội hoặc địa chỉ ở

HCMDOM(City) = { ‘HN’, ‘HCM’ }

Xây dựng lại: S = S1 UN S2 Rời nhau: S1 IN S2 = Ø

q1 & q2 loại trừ nhau.

Page 32: CSDL Phan Tan

III. Phân đoạn ngang suy diễn

Thông qua phép nửa kết nối Suy diễn => 1 phân đoạn ngang được suy diễn từ 1 phân

đoạn ngang khác. VD: SP(S#, P#, QTY)

Phân đoạn ngang SP trong đó mỗi 1 đoạn ngang chứa sự cung ứng của các hãng ở cùng 1 thành phố, hay phân đoạn ngang SP được suy diễn từ phân đoạn ngang đối với S.

SP1 = SP SJS# = S# S1 - site 1,3

SP2 = SP SJS# = S# S2 - site 2,4

Page 33: CSDL Phan Tan

III. Phân đoạn ngang suy diễn

Kiểm tra 3 tiêu chuẩn phân đoạn: Đầy đủ: lấy bộ b bất kỳ: b є SP

CM: b є SP1 hoặc b є SP2

=> b.S# xuất hiện trong S1 => b є SP1

hoặc xuất hiện trong S2 => b є SP2

Xây dựng lại: SP = SP1 UN SP2

Rời nhau: giả sử có bộ b: tồn tại b є SP1 IN SP2

=> b.S# xuất hiện trong S1 (b1.S# = b.S#)

xuất hiện trong S2 (b2.S# = b.S#)

mà S1 IN S2 = Ø => b1 # b2

nhưng b1.S# = b2.S# => Là vô lý do S# là khóa của S.

Page 34: CSDL Phan Tan

IV. Phân đoạn dọc (chiếu)

Được áp dụng thông qua phép chiếu

S1 = PJS#,SNAME,CITYS

S2 = PJS#,STATUSS S1: để quản lý về địa chỉ S2: để quản lý về hiện trạng.

Phân đoạn dọc

Tách dọc (I)

Page 35: CSDL Phan Tan

IV. Phân đoạn dọc (chiếu)

Kiểm tra 3 tiêu chuẩn phân đoạn: Đầy đủ: U=Attr(S), U1=Attr(S1), U2=Attr(S2)

Đầy đủ nếu: U = U1 U U2

Xây dựng lại: (S1,S2) --- Tách S

S = S1 NJN S2 ?

Phép tách không làm mất mát thông tin

Nếu U1 ∩ U2 => U1 \ U2 (hoặc U2 \ U1)

Ta có: U1 ∩ U2 = S#

U1 – U2 = {SNAME, CITY}

U2 – U1 = {STATUS}

Do S# là khóa chính => thỏa mãn.

Page 36: CSDL Phan Tan

Kiểm tra 3 tiêu chuẩn phân đoạn:

Rời nhau: U1 ∩ U2 = {S#}

Do S# là khóa => tối thiểu hóa sự bao trùm (Do khóa là duy nhất) => Được chấp nhận.

=> Lặp lại khóa chính trên với mọi đoạn dọc (Chấp nhận).

Nếu khóa chính có nhiều thuộc tính và có kích thước khá lớn, thay vì lặp khóa chính trên hàng dọc, người ta sẽ lặp định danh bộ trên hàng dọc (RowID).

(II) S1=PJS#,SNAME,CITYS

S2=PJS#,SNAME,STATUSS

Kiểm tra điều kiện rời nhau: U1 ∩ U2 = {S#,SNAME}

Nhóm dọc

Page 37: CSDL Phan Tan

Ứng dụng

Đưa ra danh sách tên, hiện trạng của các hãng ở ‘HN’{ SNAME, STATUS } - ở HN

Với kiểu phân đoạn dọc I là ứng dụng phân tán Với kiểu phân đoạn dọc II là ứng dụng địa phương Phân đoạn dọc theo kiểu tách dọc => Chỉ cho lặp khóa (I) Phân đoạn dọc theo kiểu nhóm dọc => ngoài lặp khóa chính

còn có các thuộc tính không phải khóa nữa (II) Ví dụ khi thay đổi tên của hãng S#=‘S1’ là ‘Hai ha’

Với loại (I): Tên chỉ xuất hiện trên đoạn thứ nhất mà thôi => cập nhật S1 (I) => tốt.

Với loại (II): Cập nhật trên S1 và S2 (II) => Đây là ứng dụng địa phương.

Page 38: CSDL Phan Tan

V. Phân đoạn hỗn hợp

Xét ví dụ sau: S1 = SLCITY=‘HN’PJS#,SNAME,CITYS

S2 = SLCITY=‘HCM’PJS#,SNAME,CITYS

S3 = PJS#,STATUSS

Cây phân đoạn: Gốc cây là quan hệ tổng thể Các lá là phân đoạn tổng hợp Các nút là các phép phân đoạn

S

S3

Site 3,4S1,2

S1 S2

Site 1,3 Site 2,4

Dọc

Ngang

S1 = SLq1PJu1S

Page 39: CSDL Phan Tan

Kiểm tra 3 tiêu chuẩn phân đoạn: Phân đoạn dọc S:

Xây dựng lại: S=S1,2 NJN S3

Phân đoạn ngang S1,2: S12 = S1 UN S2

Công thức xây dựng lại: S=(S1 UN S2)NJN S3

VD:P(P#,PNAME,COLOR,WEIGH,CITY)

Có cây phân đoạn I: Cây phân đoạn II: P

P3

Site 1,2P1,2

P1 P2

Site 1,3 Site 2,4

Dọc

Ngang

u1={P#,PNAME,CITY}

u2={P#,COLOR,WEIGH}

q1=CITY=‘HN’

q2=CITY=‘HCM’

q1 q2

u1 u2

u1’={P#,PNAME,CITY}

u2’={P#,PNAME,COLOR,WEIGH}

P

q2q1

P1 P2Site 1 Site3,2

Ngang

Dọcu1 u2 u1’

P3P4

Dọcu2’

Site2,3 Site 4

Page 40: CSDL Phan Tan

Kiểm tra 3 tiêu chuẩn phân đoạn: Viết sơ đồ phân loại, công thức xác định, kiểm tra tính đúng đắn,

công thức xây dựng lại:

a) p1 = SLCity=‘HN’PJP#,PNAME,CityP

p2 = SLCity=‘HCM’PJP#,PNAME,CityP

p3 = PJP#,COLOR,WEIGHTP

b) * Xét phân đoạn dọc P: Tính đầy đủ thỏa mãn vì u1 U u2 = u Tính xây dựng lại thảo mãn vì p = p12 NJN p3

* Xét phân đoạn ngang P12: Đầy đủ thỏa nếu: DOM(City)={‘HN’,’HCM’} Xây dựng lại vì: P12 = P1 UN P2 Rời nhau vì: q1 & q2 loại trừ nhau.

c) P=(p1 UN p2)NJN p3

Page 41: CSDL Phan Tan

Chương IV. Biểu diễn các ứng dụng với 3 mức trong suốt khác nhau

Có 2 ngôn ngữ biểu diễn: Ngôn ngữ tựa Pascal Ngôn ngữ thao tác dữ liệu SQL

Ngôn ngữ tựa pascal: Read(filvar,var) --- Đọc từ terminal ra biến var để xử lý Write(filvar,var) --- Ghi biến var vào terminal. Read(terminal,var) Write(terminal,var)

Thao tác dữ liệu SQL: Select <danh sách cột> tham biến ra

From <danh sách bảng>

Where <điều kiện> Tham biến vào

Page 42: CSDL Phan Tan

Thao tác dữ liệu SQL:

Tham biến vào/ ra có quy cách:

$<tên biến>[ _REL] Nếu có _REL cho vào file

Kết quả của câu lệnh SQL: FOUND _ Biến logic -> True: Nếu kết quả tìm kiếm ≠Ø

-> False: Nếu kết quả tìm kiếm = Ø SEND <dữ liệu> from Site<i> to Site<j>

Page 43: CSDL Phan Tan

I. Ứng dụng chỉ đọc Chỉ tra cứu mà không thay đổi dữ liệu Xét ví dụ sau, giả thiết có:

S S1 (City=‘HN’) - site1,3 S2 (City=‘HCM’) – site2,4

P SP

SP1=SP NJN S1 – site1,3 SP2=SP NJN S2 – site2,4

Câu hỏi 1) Số liệu S# được được đọc vào từ terminal, hãy tra tên của hãng và hiển thị tại terminal

Mức trong suốt phân đoạn: (Chỉ kiểm tra tổng thể S, khi chưa biết mức tổng thể được phân rã những đoạn nào)

read(terminal,$S#); select SNAME into $SNAME from S where S# = $S#; write(terminal,$SNAME);

Ứng dụng này không ảnh hưởng gì về sự phân tán dữ liệu

Page 44: CSDL Phan Tan

Mức trong suốt định vị (S -> S1,S2 -> kiểm tra trên các đoạn), Khi chưa biết các đoạn được định vị.

read(terminal,$S#) select SNAME into $SNAME from S1 where S# = $S#; if not FOUND then select SNAME into $SNAME from S2 where S# = $S#; write(terminal,$SNAME);Hệ quản trị CSDL phân tán: Mức trong suốt định vị

DDBMS S1

S2

S1

S2

Site 1

Site 2

Site 3

Site 4

select SNAMEfrom Swhere S# =$S#(Yêu cầu từ S)

S1

S2

S1

S2

Site 1

Site 2

Site 3

Site 4

Yêu cầu từ bảng S1

Yêu cầu từ bảng S2

Nếu không thấy

DDBMS

Page 45: CSDL Phan Tan

Mức trong suốt ánh xạ địa phương (Khi các đoạn được định vị tại các trạm) Nếu được phát từ trạm 1:

read(terminal,$S#); select SNAME into $SNAME from S1 at site1 where S# = $S#; if NOT FOUND then begin select SNAME into $SNAME from S2 at site4 where S# = $S#; SEND $SNAME from site4 to site1; end; write(terminal,$SNAME); Nếu ứng dụng được chọn từ trạm nào => Hiển thị tại trạm đó.

S1

S2

S1

S2

Site 1

Site 2

Site 3

Site 4

Yêu cầu từ bảng S1

Yêu cầu từ bảng S2

DDBMS

Cây phân đoạn của SS

S3

Site 3,4S1,2

S1 S2

Site 1,3 Site 2,4

Dọc

Ngangq1 q2

u1 u2

u1={S#,SNAME,CITY}

Page 46: CSDL Phan Tan

Xét ví dụ 2: Đưa ra tên và hiện trạng {SNAME,STATUS} của

các hãng cung ứng mặt hàng ‘P1’ tại trạm 2.

Mức trong suốt phân đoạn: (Chỉ tra S,SP)

select SNAME,STATUS into $KQ_REL(SNAME,STATUS)

from S,SP

where S.S# = SP.S# and SP.P# = ‘P1’;

repeat

read($KQ_REL,TEN,HIENTRANG);

write(terminal,TEN,HIENTRANG);

until EOF($KQ_REL);

Biến tệp

Đọc file ra biến

Hiển thị biến tại trạm

Page 47: CSDL Phan Tan

Mức trong suốt phân đoạn: (Chỉ tra S,SP)

S NJN SP

(S1 UN S2) NJN (SP1 UN SP2) NJN S3

((S1 NJN SP1)UN(S1 NJN SP2)UN(S2 NJN SP1)UN(S2 NJN SP2))NJN S3

UNi,j(Si NJN SPj NJN S3) |4 phép kết nối.

Nếu cặp chỉ số i,j khác nhau => Si NJN Sj = Ø

=> Chỉ cần: UNi(Si NJN SPi NJN S3)

Page 48: CSDL Phan Tan

Mức trong suốt định vị

select SNAME,STATUS into $KQ_REL(SNAME,STATUS) from S1,SP1,S3 where S1.S# = SP1.S# and SP1.P# = ‘P1’ and S1.S#=S3.S#; if NOT FOUND then select SNAME,STATUS into $KQ_REL(SNAME,STATUS) from S2,SP2,S3 where S2.S# = SP2.S# and SP2.P# = ‘P1’ and S2.S#=S3.S#; repeat read($KQ_REL,TEN,HIENTRANG); write(terminal,TEN,HIENTRANG); until EOF($KQ_REL);(Thay chỉ số 1 -> 2 của S, SP ta có các trạm khác)

Page 49: CSDL Phan Tan

Mức trong suốt ánh xạ địa phương

select SNAME,STATUS into $KQ_REL(SNAME,STATUS)

from S1 at site3,SP1 at site3, S3 at site3

where S1.S# = SP1.S# and SP1.P# = ‘P1’

and S1.S# = S3.S#;

SEND $KQ_REL from site3 to site2;

repeat

read($KQ_REL,TEN,HIENTRANG);

write(terminal,TEN,HIENTRANG);

until EOF($KQ_REL); Có 2 phương án với S2,SP2,S3 đều có chung trạm 4 (site4).

Phương án 1: chọn trạm 4, truyền kết quả -> gửi về trạm 2 -> chi phí truyền thông tỷ lệ với kết quả.

Phương án 2: truyền S3 tới trạm 2, tính kết quả tại trạm 2 với SP2 và S2 tại trạm 2, kết quả sẽ hiển thị tại site 2.

Page 50: CSDL Phan Tan

Mức trong suốt ánh xạ địa phương

Có thể chọn phương án 1 do có kích thước nhỏ hơn, do: S3=(S#,STATUS) – Tập tất cả các công ty và hiện trạng của nó còn {SNAME,STATUS} là các công ty thỏa P# =‘P1’ -> Đã được lọc -

> Có kích thước bé hơn kích thước S3.

select SNAME,STATUS into $KQ_REL(SNAME,STATUS)

from S2 at site4,SP2 at site4, S3 at site4

where S2.S# = SP2.S# and SP2.P# = ‘P1’

and S2.S# = S3.S#;

SEND $KQ_REL from site4 to site2;

repeat

read($KQ_REL,TEN,HIENTRANG);

write(terminal,TEN,HIENTRANG);

until EOF($KQ_REL);

Page 51: CSDL Phan Tan

II. Ứng dụng cập nhật Khi cập nhật -> phải cập nhật tất cả các bản sao trên tất cả các site. Xét ví dụ 3: Hãng ‘S1’ thay đổi địa chỉ từ ‘HN’ vào ‘HCM’

Mức trong suốt phân đoạn: Cập nhật câu lệnh trên bảng S update S set City=‘HCM’ where S#=‘S1’ Mức định vị: select SNAME into $SNAME from S1 where S#=‘S1’; Delete S1 where S#=‘S1’; ‘Lấy rồi mới xóa Insert into S2: (‘S1’,$SNAME,’HCM’); ‘Sự thay đổi này làm cho sự cung ứng của SP1,SP2 thay đổi Insert into SP2 select * into $TG_REL from SP1 where S#=‘S1’; Delete SP1 where S#=‘S1’; ‘Khi thực hiện cập nhật cần chú ý ảnh hưởng tới các bản sao/đoạn

khác.

Page 52: CSDL Phan Tan

Mức trong suốt ánh xạ địa phương Select SNAME into $SNAME from S1 at site1 where S# =‘S1’; Delete S1 at site1 where S# =‘S1’; Delete S1 at site3 where S# =‘S1’; SEND $SNAME from site1 to site2; Insert into S2 at site2: (‘S1’,$SNAME,’HCM’); SEND SNAME from site1 to site4; Insert into S2 at site4: (‘S1’,$SNAME,’HCM’); select * into $TG from SP1 at site1 where S#=‘S1’; Delete SP1 at site1 where S# =‘S1’; Delete SP1 at site3 where S# =‘S1’;

SEND $TG from site1 to site2; Insert into SP2 at site2 : $TG; SEND $TG from site1 to site4; Insert into SP2 at site4 : $TG;

Page 53: CSDL Phan Tan

Xét ví dụ 4: Hãng ‘S1’ thay đổi tên là ‘Hai ha’

Mức trong suốt định vị:select * from S1 where S# =S1;

if FOUND then update S1 set SNAME = ‘Hai ha’ where S# = ‘S1’ else update S2 set SNAME = ‘Hai ha’ where S# = ‘S1’; Mức trong suốt phân đoạn:

update S1 set SNAME = ‘Hai ha’ where S# =‘S1’; Mức ánh xạ địa phương: select * from S1 at site1 where S# =S1; if FOUND then begin update S1 at site1 set SNAME = ‘Hai ha’ where S# = ‘S1’; update S1 at site3 set SNAME = ‘Hai ha’ where S# = ‘S1’; end else begin update S2 at site2 set SNAME = ‘Hai ha’ where S# = ‘S1’; update S2 at site4 set SNAME = ‘Hai ha’ where S# = ‘S1’; end;

Page 54: CSDL Phan Tan

Bài tập

1. Đưa ra tên mặt hàng, màu sắc {PNAME,COLOR} được cung ứng bởi hãng ‘S1’, được phát ra tại site1.

2. Mặt hàng có số hiệu ‘P1’ thay đổi địa điểm kho hàng vào ‘HCM’

Page 55: CSDL Phan Tan

Chữa bài tậpBài 1: SP1: site1,3

SP2: site2,4

Mức định vị: P NJN SP

=((P1 UN P2)NJN P3)NJN(SP1 UN SP2)

=UN (Pi NJN SPj NJN P3) i=1,2; j=1,2.

P1 SP1 P3 => site 1

P1 SP2 P3 => Phương án 1: P1,P3 – site1, tg -> site1

tg=πs#,p#δS#=‘S1’(SP2)

Phương án 2: P1 – site 2, P3,SP2 – site 2,

Kết quả -> site 1

P2 SP1 P3 => Phương án 1: P1,P3 – site1, tg -> site1

tg=πs#,p#δS#=‘S1’(SP2)

Phương án 2: P1 – site 2, P3,SP2 – site 2,

Kết quả -> site 1

P

P3

Site 1,2P1,2

P1 P2

Site 1,3 Site 2,4

Dọc

Ngang

u1={P#,PNAME,CITY}

u2={P#,COLOR,WEIGH}

q1=CITY=‘HN’

q2=CITY=‘HCM’

q1 q2

u1 u2

Page 56: CSDL Phan Tan

Bài tập 1 (Tiếp)

P2 SP2 P3 => site 1 Trong đó:

S(S#, SNAME, STATUS, CITY) SP(S#, P#, QTY) P(P#, PNAME, CITY, COLOR)

Mức trong suốt phân đoạn:Select PNAME, COLOR into $KQ_REL(PNAME,COLOR)From SP,PWhere (SP.P# = P.P#)and(SP.S# = ‘S1’);Repeat read($KQ_REL, TEN, MAUSAC); write(terminal, TEN, MAUSAC);Until EOF($KQ_REL);

Page 57: CSDL Phan Tan

Bài tập 1 (Tiếp) Mức trong suốt định vị:

select P1.PNAME,P3.COLOR into $KQ_REL(PNAME,COLOR) from SP1,P1,P3

where SP1.S# =‘S1’ and SP1.P# = P1.P# and SP1.P# = P3.P#; if NOT FOUND then select P2.PNAME,P3.COLOR into $KQ_REL(PNAME,COLOR) from SP1,P2,P3

where SP1.S# =‘S1’ and SP1.P# = P2.P# and SP1.P# = P3.P#; if NOT FOUND then select P1.PNAME,P3.COLOR into $KQ_REL(PNAME,COLOR) from SP2,P1,P3

where SP2.S# =‘S1’ and SP2.P# = P1.P# and SP2.P# = P3.P#; if NOT FOUND then select P2.PNAME,P3.COLOR into $KQ_REL(PNAME,COLOR) from SP2,P2,P3

where SP2.S# =‘S1’ and SP2.P# = P2.P# and SP2.P# = P3.P#; Repeat Read($KQ_REL, TÊN, MÀUSẮC); Write(terminal, TÊN, MÀUSẮC); Until EOF($KQ_REL);

Page 58: CSDL Phan Tan

Bài tập 1 (Tiếp) Mức trong suốt ánh xạ địa phương:

Do P NJN SP = ((P1 UN P2)NJN P3)NJN(SP1 UN SP2)

= UN (Pi NJN SPj NJN P3) i=1,2; j=1,2.

=> có các đoạn: P1 SP1 P3 => site1 P1 SP2 P3 => Có 2 phương án:

» PA1: site1» PA2: site2 => chuyển về site1

P2 SP1 P3 => Có 2 phương án:» PA1: site1» PA2: site2 => chuyển về site1

P2 SP2 P3 => site2=> chuyển về site1

Page 59: CSDL Phan Tan

Bài tập 2: Mặt hàng có số liệu ‘p1’ thay đổi kho hàng vào TP HCM

Mức trong suốt phân đoạn:

update P set City=‘HCM’ where P# =P1; Mức trong suốt định vị:

select PNAME into $PNAME

from P1

where P# = ‘P1’;

Delete P1 where P# = ‘p1’;

Insert into P2(P#,PNAME,CITY) values(‘p1’,$PNAME,’HCM’)

/*Sự thay đổi này không làm cho cung ứng các hãng thay đổi*/

Page 60: CSDL Phan Tan

Bài tập 2 (Tiếp): Mức trong suốt ánh xạ địa phương:

Select PNAME,COLOR into $PNAME,$COLOR from P1 at site1 where P# = ‘p1’; Delete p1 at site1 where P# = ‘p1’; Delete p1 at site3 where P# = ‘p1’; send $PNAME,$COLOR from site1 to site2; Insert into P2(P#,PNAME,CITY,COLOR) values(‘p1’,$PNAME,’HCM’,$COLOR); send $PNAME,$COLOR from site1 to site4; Insert into P2(P#,PNAME,CITY,COLOR) values(‘p1’,$PNAME,’HCM’,$COLOR);

Page 61: CSDL Phan Tan

Chương V. Thiết kế CSDL phân tán

Nhắc lại: Lý thuyết thiết kế CSDL quan hệ:

Phụ thuộc hàm -> chuẩn hóa dạng chuẩn 3 (3NF) Phụ thuộc hàm đa trị -> chuẩn hóa dạng chuẩn 4 (4NF) Phụ thuộc hàm kết nối -> chuẩn hóa dạng chuẩn 5 (5NF) Hầu hết CSDL quan hệ đều đưa về dạng chuẩn 3.

Thiết kế CSDL trong môi trương phân tán???

Page 62: CSDL Phan Tan

Chương V. Thiết kế CSDL phân tán

Kiến trúc CSDL phân tán

Sơ đồ tổng thể ={tập sơ đồ quan hệ tổng thể đã được chuẩn hóa}

Sơ đồ phân đoạn

Sơ đồ sắp chỗ

…Sơ đồ ánh xạ địa phương 1

Sơ đồ ánh xạ địa phương n

DBMS1 DBMSn

CSDL 1 CSDL n

Trạm 1 Trạm n

CS

DL

phâ

n tá

n kh

ông

thuầ

n n

hấ

t

CS

DL

phâ

n tá

n th

uần

nh

ất

Page 63: CSDL Phan Tan

Chương V. Thiết kế CSDL phân tán

CSDL phân tán thuần nhất: Để xác định được sơ đồ tổng thể: -> Xác định được tập các

sơ đồ quan hệ tổng thể -> xác định dữ liệu của xí nghiệp (Thế giới thực) -> CSDL quan hệ -> Loại bỏ dư thừa và dị thường -> đưa về chuẩn hóa 3 (3NF).

Thiết kế CSDL trên sơ đồ phân đoạn: Đầu vào: các quan hệ tổng thể Xét sơ đồ tổng thể được tách thành các đoạn như thế nào?

Đầu vào thiết kế sơ đồ sắp chỗ dữ liệu: Đầu vào là các đoạn. Sắp chỗ là sự sắp đặt vật lý tại các trạm -> kết quả bản sao của

các đoạn tại các trạm khác nhau. CSDL phân tán địa phương: đều sử dụng kết quả của thiết

kế CSDL trong nhập môn CSDL tại các site.

Page 64: CSDL Phan Tan

Chương V. Thiết kế CSDL phân tán

Có 2 vấn đề chính trong thiết kế CSDL phân tán là: Thiết kế CSDL trên sơ đồ phân đoạn Thiết kế sắp chỗ 2 bài toán riêng biệt: từ bài toán rất lớn => tách thành 2 bài

toán nhỏ.

Chú ý: Nếu thiết kế CSDL phân tán không thuần nhất Chọn mô hình dữ liệu tổng thể Dịch mô hình dữ liệu địa phương => tổng thể Hợp nhất CSDL địa phương => CSDL phân tán.

Trong phần này ta chỉ tập trung vào thiết kế CSDL phân tán thuần nhất.

Page 65: CSDL Phan Tan

I. Thiết kế phân đoạn dữ liệu

1. Phân đoạn ngang đơn giản: Ri = SLqiR Xác định phân đoạn ngang đơn giản => Xác định các

tiêu chuẩn qi => sao cho phân đoạn ngang đúng đắn. Một số định nghĩa:

Vị từ đơn giản: là phép so sánh giữa 1 thuộc tính với 1 hằng <thuộc tính>Ө<hằng>

Ө là 1 trong 6 phép so sánh: >,<,>=,<=,=,≠ Xét pi là vị từ đơn giản: pi = Ai Өi Ci, trong đó Ai: thuộc tính,

Ci:giá trị hằng, Өi: phép so sánh. P={pi | i=1,m}, m vị từ đơn giản.

Vị từ minterm: là phép hội của các vị từ đơn giản trong đó mỗi 1 vị từ đơn giản hoặc dưới dạng tự nhiên hoặc dưới dạng phủ định, sao cho vị từ minterm không mâu thuẫn.

Page 66: CSDL Phan Tan

Vị từ minterm:

q = ^i=1,mpi* , pi* = pi hoặc pi* = ¬pi

Và q ≠ false m vị từ đơn giản => có tối đa 2m vị từ minterm. Ký hiệu vị từ minterm: {qj | j=1,n}, n<=2m

Kiểm tra các tiêu chuẩn của vị từ minterm không đơn giản.

Đoạn ngang thứ j của R là: Rj = SLqjR, j=1,n

là phép chọn trên quan hệ R với tiêu chuẩn qj.

Page 67: CSDL Phan Tan

Vị từ minterm:

Kiểm tra tính đúng đắn: Đầy đủ: Lấy bộ bất kỳ b є R, với mọi i=1,m

nếu b.Ai Өi Ci = true => pi* = pi

= false => pi* = ¬pi

đặt q=^ipi* => b thỏa mãn q

=> b thuộc đoạn ngang của R có tiêu chuẩn là q Xây dựng lại: R=UNjRj

Rời nhau: với mọi j,k bất kỳ, j≠k

qj=^ipi*, qk=^ipi**

Tồn tại s=1,m : ps* = ps và ps** = ¬ps

=> qj và qk là loại trừ nhau

=> Rj IN Rk = Ø

Page 68: CSDL Phan Tan

Tiêu chuẩn của p:

Đầy đủ: với 2 bộ bất kỳ thuộc cùng 1 đoạn thì được tham chiếu với cùng 1 xác suất (cùng được tham chiếu hoặc không cùng được tham chiếu) với tất cả các ứng dụng.

Tối thiểu: với mọi i=1,m, pi là thích đáng vì tồn tại 2 vị từ minterm khác nhau ở vị trí pi sao cho 2 đoạn đó được tham chiếu 1 cách khác nhau bởi ít nhất 1 ứng dụng.

Page 69: CSDL Phan Tan

Xét ví dụ sau:

Cho bảng quan hệ:

EMP(E#,ENAME,SAL,TAX,JOB,D#), Trong đó: E#: số hiệu nhân công ENAME: Tên nhân công SAL: lương TAX: thuế JOB: công việc D#: số hiệu phòng

Hãy: 1) Đưa ra danh sách nhân công theo phòng

2) Đưa ra danh sách nhân công theo công việc

Page 70: CSDL Phan Tan

Ví dụ (tiếp)

Xác định p (vị từ đơn giản):

{p1:D# =1, p2:JOB=‘CV1’, p3:JOB=‘CV2’} Xác định q (vị từ minterm): Đưa ra tất cả các khả năng xảy ra

q1=p1^p2^p3 q5=¬p1^¬p2^p3

q2=p1^p2^¬p3 q6=¬p1^¬p2^¬p3

q3=p1^¬p2^p3 q7=¬p1^p2^p3

q4=p1^¬p2^¬p3 q8=¬p1^p2^¬p3

Quy tắc loại trừ: Nếu thỏa p2 thì không thỏa p3 và ngược lại

=> luật nào có p2^p3 => mâu thuẫn=>xóa. Thỏa p2 thỏa ¬p3 => p2^¬p3p2 và ngược lại.

Page 71: CSDL Phan Tan

Ví dụ (tiếp)

Ví dụ 1 công nhân b є EMP Phòng 1, CV1 | p1^p2

, CV2 | p1^p3

, CV3 | p1^¬p2^¬p3

Page 72: CSDL Phan Tan

2. Phân đoạn ngang suy diễn (nửa kết nối)

Xét ví dụ sau: SP(S#,P#,QTY), S(S#,SNAME,STATUS,CITY) Các ứng dụng:

1. Đưa ra danh sách {SNAME} cung ứng mặt hàng ‘p1’.

πSNAMEδp# =‘p1’(SP NJN S)

Tổng quát hóa:

R JNF S

Với 2 quan hệ tổng thể là 2 phân đoạn ngang, được định vị trên các trạm khác nhau:

(1) (UNi=1,nRi)JNF(UNj=1,mSj) Ri được định vị trên các trạm khác nhau, để UN được => truyền các đoạn

của nó về 1 trạm chung => sau đó mới UN, tương tự Si. Chi phí truyền thông trong trường hợp nàyKích thước(R)+Kích thước(S)

- Kích thước R: số byte của 1 bộ x lực lượng của bộ.

(2) (UNi,j=1n,1mRi JNF Sj)

Page 73: CSDL Phan Tan

Đánh giá chi phí

Có nxm cặp (Ri,Sj), để thực hiện JN => Truyền 1 đoạn về trạm kia có định vị đoạn kia => Sau đó lại đưa kết quả về 1 trạm thực hiện UN.

=> chi phí trong trường hợp tồi nhất:

Size(R) + size(S) + size(R JNF S)

Thông thường JN 1 số cặp (Ri,Sj) là Ø, thông tin cụ thể cần truy vấn là nhỏ => truyền thông không đáng kể => cần quan tâm nxm cặp.

Đồ thị kết nối: G=(V,E), V-đỉnh, E-cạnh.

V={Ri | i=1,n} U {Sj | j=1,m}

E={(Ri,Sj) | Ri JNF Sj ≠ Ø}

Page 74: CSDL Phan Tan

Các dạng đồ thị kết nối

R1

R2

R3

S1

S2

S3

(a). Dạng đầy đủ (không khuyết tật cạnh nào, khuyết

tật khi Ri JNF Sj = Ø

R1

R2

R3

S1

S2

S3

(b). Tách (có thể tách thành các đồ thị con không giao

nhau)

R1

R2

R3

S1

S2

S3

(c). Đồ thị kết nối đơn giản (là 1 đồ thị con tách được, đồ thị con có đúng 1 cạnh)

Với loại (a) => Dùng kiểu kết nối (1) Với loại (b) => Thực hiện kết nối trên từng đồ thị con một, tùy thuộc dạng để kết

nối. Với loại (c) => Số cạnh min{m,n}, dùng phương án số (2). Kết luận: Mong muốn đồ thị kết nối đơn giản => phải thiết kế sao cho đưa được

về dạng đơn giản (Với kiểu thiết kế phân đoạn ngang suy diễn => đồ thị kết nối đơn giản).

Định lý: Với R,S là 2 quan hệ tổng thể S là phân đoạn ngang đúng đắn R là phân đoạn ngang suy diễn theo điều kiện F của S, thì đồ thị kết nối ở dạng

đơn giản.

Page 75: CSDL Phan Tan

Các ứng dụng:

2. Đưa ra danh sách tên các mặt hàng {PNAME} được cung ứng bởi ‘S1’: πPNAMEδS# =‘S1’(SP NJN P)

P là phân đoạn ngang theo địa điểm kho hàng. SP được phân đoạn ngang suy diễn từ phân đoạn ngang P SPj = SP NJN Pj

Thiết kế phân đoạn ngang cho SP?Các lựa chọn:1. Ứng dụng 1 có tần suất cao hơn, quan trọng hơn ứng dụng 2 => chọn

phân đoạn ngang (1) SPi = SP NJN Si

2. Ứng dụng (2) quan trọng hơn (1) => chọn phân đoạn ngang (2)

SPj = SP NJN Pj

3. Ứng dụng (1) ≈ Ứng dụng (2) => Chọn thiết kế số (3) (3) SPij = (SP NJN Si)NJN Pj Với (1) được chọn => (1) đơn giản, (2) đầy đủ Với (2) được chọn => (1) đầy đủ, (2) đơn giản Với (3) được chọn => (1),(2) tách được.

Page 76: CSDL Phan Tan

3. Phân đoạn dọc (chiếu)

Công thức xác định Ri = PJuiR, i=1,m. Đầy đủ: Ui=1,mui =U, ui=Attr(Ri), U=Attr(R) Xây dựng lại: (R1(u1),…,Rm(um)) – phép tách m không làm mất mát

thông tin. k C ui, i=1,m, k-khóa chính Tách dọc: với mọi i≠j, ui ∩ uj = k Nhóm dọc: tồn tại i,j, i≠j: ui ∩ uj = kUC C chứa thuộc tính không khóa hay C ¢ K

Đầu vào tập các ứng dụng “cập nhật” => {ui’},i=1,k (tập thuộc tính) rời nhau

Tách dọc: ui = ui’ U k, i=1,k Ui=1,kui = u’, u’ c u Đặt u’k+1 = u\u’ , uk+1=u’k+1 U k

Page 77: CSDL Phan Tan

Nhóm dọc

U={A1,A2,…,An} ui’={Ai}, i=1,n

Xét tập các ứng dụng chỉ đọc (không làm thay đổi dữ liệu) => Dj tập con của u chứa nhiều thuộc tính => nhóm các {u’i} => ui

Page 78: CSDL Phan Tan

4. Phân đoạn hỗn hợp (cả ngang lẫn dọc)

Tập các ứng dụng: hầu hết ứng dụng đều là ứng dụng tra cứu.select …

from … where …

(1). Select * from R where Q => SLQR

(2). Select X from R => PJXR

(3). Select X from R where Q => PJXSLQR Ứng dụng gặp theo kiểu (1) => phân đoạn ngang đơn giản (chọn) Ứng dụng gặp theo kiểu (2) => phân đoạn dọc (phép chiếu) Ứng dụng gặp theo kiểu (3) => phân đoạn hỗn hợp

Trong thức tế để đảm bảo tối thiểu hóa dữ liệu trên đường truyền và tránh sự dư thừa không cần thiết => cần phân đoạn theo (3) => phân đoạn hỗn hợp.

Tách ra được các tập thuộc tính mà ứng dụng quan tâm.

Page 79: CSDL Phan Tan

4. Phân đoạn hỗn hợp (cả ngang lẫn dọc)

Thuộc tính cần quan tâm

PJ

SL Attr(R)

Cần kiểm tra tính đúng đắn của phân đoạn hỗn hợp.

Page 80: CSDL Phan Tan

II. Thiết kế sắp chỗ dữ liệu

Đầu vào: {tập các đoạn} (định vị) {tập các trạm} Bài toán sắp chỗ tệp: {tập các tệp}(sắp chỗ){tập các trạm} Nếu xem đoạn là tệp, các tệp độc lập nhau => các đoạn độc lập nhau. Thực tế thường các đoạn không độc lập nhau => ?

R(u), u={u1,…,um}

Các ui tránh sao cho tối thiểu sự trùng lắp thuộc tính.

Ri = PJuiR => tốn kém, dư thừa

=> Nên tối thiểu các phân đoạn dọc.

Đầu vào: {tập các tệp} sắp xếp tại {tập các trạm} Các giả thiết: (để bài toán thực thi được)

Mỗi 1 tệp chỉ được định vị (sắp chỗ) tại đúng 1 trạm => coi như chi phí của các thao tác là như nhau (đọc, cập nhật)=> Không phân biệt đó là thao tác loại gì.

Chi phí truyền thông là như nhau đối với 1 cặp 2 trạm bất kỳ (không phụ thuộc trạm đầu, trạm cuối)

Chi phí của các tính toán địa phương << chi phí tham chiếu từ xa Dung lượng của các trạm là giới hạn => không thể đặt nhiều tệp tại 1 trạm.

Page 81: CSDL Phan Tan

II. Thiết kế sắp chỗ dữ liệu

Các ký hiệu: Có N tệp, tệp được đánh chỉ số i, Si – kích thước tệp i.

Có M trạm, trạm đánh chỉ số j, Cj – dung lượng trạm j.

Có K giao dịch fkj – tần suất của giao dịch k được phát ra tại trạm j.

nki – số các thao tác của giao dịch k yêu cầu tệp i => Vij =∑kfkjxnki => số các thao tác tệp i được phát ra tại trạm j.

FKxM : ma trận tần suất

NKxN : ma trận thao tác

VNxM = NTNxK x FKxM

Page 82: CSDL Phan Tan

Đặt bài toán:

Xij – biến quyết định cho biết tệp i có được định vị tại trạm j hay không.

Xij =1 :Nếu tệp i được định vị tại trạm j

0 :Nếu tệp i không được định vị tại trạm j. ∑jXij = 1 (1)

∑iXij x Si <= Cj (2)

Hàm mục tiêu của bài toán:

∑i,jXij x Vij => max (được định vị max)

Xác định các xij thỏa mãn bài toán.

Page 83: CSDL Phan Tan

Thuật toán

1. Tính J(i) = { j | vij =maxj v’ij }

2. Thử xij = 1 với 1 chỉ số j є J(i)

0 ngược lại

3. Kiểm tra ràng buộc (2) đối với từng trạm Với mọi j (2) thỏa mãn => lời giải bài toán là x ij được gán giá

trị từ bước 2. Tồn tại j mà (2) không thỏa mãn => chọn 1 số tệp (là 1 bài

toán tối ưu, có thể chọn tệp khác ở ngoài trạm đặt vào, miễn sao là tối ưu) đặt tại trạm j sao cho (2) thỏa mãn.

Xóa trạm j và các tệp đã chọn => bài toán được rút gọn.

Lặp lại các bước trên cho đến khi kết thúc.

Page 84: CSDL Phan Tan

Xét ví dụ

i

Si j

1

2

3

4

1

35

1170

970

280

580

2

40

920

180

700

100

3

10

180

700

670

970

4

25

780

400

100

280

5

20

680

380

480

600

6

40

720

100

500

380

Tệp iKích

thước tệp i

Trạm thứ j

Giả thiết Cij=50KB với mọi j=1,4 (giả thiết dung lượng các trạm bằng nhau và bằng 50KB)

∑iSi=170< ∑jCj=200 (do 50x4)Với mọi i, tồn tại j sao cho si<=cj

Bước lặp 1:J(1)=1 => vì v11=max => x11=1

J(2)=1 => vì v21=max => x21=1 J(3)=4 => vì v34=max => x34=1 J(4)=1 => vì v41=max => x41=1 J(5)=1 => vì v51=max => x51=1 J(6)=1 => vì v61=max => x61=1 Các xij khác =0 ở trạm 1 có các tệp {1,2,4,5,6}

=> Tổng kích thước tệp ở trạm 1 > C1

ở trạm 4 có tệp {3}

Vij

i

j

Page 85: CSDL Phan Tan

Các phương án

Phương án 1: tệp 4,5 ở trạm 1 => dung lượng thừa 50-25-20=5KB

Phương án 2: tệp 2 ở trạm 1 => dung lượng thừa 50-40=10KB

Phương án 3: tệp 1 ở trạm 1 => dung lượng thừa 50-35=15KB Với phương án 2,3 ta không chọn, vì với dư thừa này ta có

thể đặt tệp 3 vào đây => giá trị vij tương ứng với tệp 3 là 180, do 180<<970 => không chọn do không tối ưu (chọn max).

Giả sử chọn phương án 1 (dư min)=> xóa dòng 1 và 2 cột 4,5 trong bảng ma trận V.

Page 86: CSDL Phan Tan

Bước lặp 2:

J(1)={2} => vì v12=max => x12=1

J(2)={3} => vì v23=max => x23=1

J(3)={4} => vì v34=max => x34=1

J(6)={3} => vì v63=max => x63=1

Trạm 3 chứa 2 tệp {2,6} => Tổng kích thước tệp ở trạm 3 > C3 (do s2+s6=80>50KB) Phương án 1: tệp 2 ở trạm 3 => dung lượng trạm 3 dư 10KB Phương án 2: tệp 6 ở trạm 3 => dung lượng trạm 3 dư 10KB Chọn phương án 1, vì v23=700 > v63=500, không đưa tệp 3 vào vì

v33=670 nhỏ nhất trong cột 3, nếu đưa vào => sẽ làm giảm mất tính tối ưu, vì mục tiêu ∑sivij=max.

Xóa hàng 2 và cột 3 ở ma trận V.

Page 87: CSDL Phan Tan

Bước lặp 3:

J(1)={2} => vì v12=max => x12=1J(3)={4} => vì v34=max => x34=1J(6)={4} => vì v64=max => x64=1Không còn trạm nào vi phạm ràng buộc (2) => thuật toán dừng.

Kết quả: Tệp 4,5 ở trạm 1 Tệp 1 ở trạm 2 Tệp 3,6 ở trạm 4 Tệp 2 ở trạm 3

Khi chọn 1 phương án trong tập phương án khả dĩ mà ở bước lặp sau không giải quyết được ràng buộc (2) => quay lui.

Đối với trường hợp sắp chỗ các đoạn, nếu các đoạn là độc lập thì ta cũng có thể áp dụng thuật toán này, kết quả ta sẽ bố trí được các đoạn ở các trạm và không dư thừa dữ liệu. Do CSDL phân tán cho phép dư thừa và nếu dung lượng còn trống thì ta có thể bố trí lặp lại 1 số đoạn.

Page 88: CSDL Phan Tan

III. Thiết kế phân tán theo ngữ nghĩa

Phân đoạn ngang đơn giản & phân đoạn ngang suy diễn. Khóa chính – khóa ngoài.

Cây tách => rừng tách (không có 2 cây giao nhau, tức là quan hệ tổng thể không tồn tại ở 2 cây).

P SP

S Phân đoạn ngang S1,S2,S3

S và SP có quan hệ khóa chính – khóa ngoại (P và SP cũng có)

Phân đoạn ngang suy diễn: SP1,SP2,SP3

Sự phân đoạn của S xác định sự phân đoạn của SP (Sự phân đoạn của SP được xác định từ sự phân đoạn của S)

Page 89: CSDL Phan Tan

Chương VI. Tối ưu hóa câu hỏi phân tán

Với CSDL tập trung => tối ưu hóa việc tính toán. Ví dụ: đưa ra danh sách {SNAME,STATUS} của các hãng ở ‘Ha noi’

cung ứng mặt hàng ‘p1’

PJSNAME,STATUSSLP# =‘p1’ ^ CITY=‘HN’(SP NJN S)1. Cây toán tử của câu hỏi: (đi từ gốc đi xuống)

PJSNAME,STATUS

SLP# =‘p1’ ^ CITY=‘HN’

NJNS# = S#

SP S

Đẩy phép chọn xuống 2 nhánh (chọn xuống thực hiện sớm nhất có thể)

Thu được

PJSNAME,STATUS

NJNS# =S#

SP S

SLp# =‘p1’ SLCITY =‘HN’

Xu hướng: nếu có thể đẩy phép chọn và phép chiếu xuống thực hiện sớm nhất có thể. Kết quả thu được biểu thức tối ưu, với các lá là các quan hệ tổng thể => gọi là cây tổng thể “tối ưu”.

Page 90: CSDL Phan Tan

2. Dịch cây tổng thể thành cây đoạn

Do S,SP được phân thành các cây con:

S

S3

Site 1,2S1,2

S1 S2

Site 1,3 Site 2,4

Dọc

Ngang

u1={S#,SNAME,CITY}

u2={S#,STATUS}

q1:CITY=‘HN’

q2:CITY=‘HCM’

q1 q2

u1 u2 SP được phân đoạn ngang suy diễn từ phân đoạn ngang của S (S1,S2):

=> Đồ thị: PJSNAME,STATUS

NJNS# =S#

UN NJN

SLP# =‘p1’ SLCITY =‘HN’

SP1 SP2 UN

S1 S2

S3

Dọc

Ngang

Cây chính tắc

Page 91: CSDL Phan Tan

2. Dịch cây tổng thể thành cây đoạn

Sau phép dịch => cây tổng thể => cây đoạn Cây chính tắc là cây đoạn tồi nhất, nhưng nó vẫn là cây toán tử =>

vẫn dùng các phép toán của đại số quan hệ để tối ưu nó (đẩy, dịch, các phép chiếu, chọn,…)

PJSNAME,STATUS

NJNS# =S#

UN NJNS# = S#

SLP# =‘p1’

SP1 SP2

UN

SLCITY=‘HN’ SLCITY=‘HN’

S3SLP# =‘p1’

S1 S2

Thu được cây đoạn tối ưu

Page 92: CSDL Phan Tan

III. Đại số quan hệ định tính

Quan hệ định tính: cặp [R: qR] R: thân của quan hệ định tính qR: tiêu chuẩn Các bộ R phải thỏa mãn qR

Các phép toán:

1. Chọn: SLF [R: qR] = [SLFR : qR ^ F]

2. Chiếu: PJX [R: qR] = [PJXR : qR]

3. Kết nối: [R: qR]JNF[S: qS] = [R JNF S : qR ^ qS ^ F]

4. Hợp: [R: qR]UN[S: qS] = [R UN S : qR v qS]

5. Trừ: [R: qR]DF[S: qS] = [R DF S : qR]

6. Giao: [R: qR] IN [S: qS] = [R IN S : qR ^ qS]

7. Tích đề các: [R: qR]CP[S: qS] = [R CP S : qR ^ qS]

Đoạn ngang là 1 ví dụ điển hình về quan hệ định tính:

VD: SLCITY=‘HN’S1 [R: qR], trong đó R: S1, qR: CITY=‘HN’

Page 93: CSDL Phan Tan

III. Đại số quan hệ định tính

/* với (1) => qR được đánh giá

với (2) do PJXR => Lấy chiếu tập Attribute(X) => qR có thể không thuộc {X} => qR không được đánh giá.

Tương tự với (3),(4),… (3) R JNF S = SLF(R CP S)

(6) Giao có thể được định nghĩa thông qua phép trừ

Page 94: CSDL Phan Tan

THE END!