Việc thiết kế một hệ thống máy tính phân tán liên quan đến việc đưa quyết định về vịtrí đặt dữ liệu và chương trình trên các miền của một mạng máy tính, cũng như thiết kế cả chính hệ thố
Trang 1Trường Đại học Công Nghệ Thông Tin
Đại học quốc gia TP Hồ Chí Minh
Thiết kế Cơ sở dữ liệu
phân tán
***
HV: Lương Chấn Viễn MHV: CH1101155 Môn: Cơ sở dữ liệu nâng cao GV: PGS.TS Đỗ Phúc
Trang 2MỤC LỤC
QUÁ TRÌNH THIẾT KẾ TOP-DOWN
CÁC VẤN ĐỀ CỦA THIẾT KẾ PHÂN TÁN
Trang 3Việc thiết kế một hệ thống máy tính phân tán liên quan đến việc đưa quyết định về vịtrí đặt dữ liệu và chương trình trên các miền của một mạng máy tính, cũng như thiết
kế cả chính hệ thống mạng đó Trong trường hợp hệ thống cần thiết kế là một hệ quản trị cơ sở dữ liệu phân tán (distributed DBMSs), thì bài toán đặt ra là: việc phân tán của hệ quản tri CSDL và phân tán của những chương trình ứng dụng chạy trên hệ phân tán đó
Việc tổ chức hệ thống phân tán có thể biểu diễn trên hệ trục toạ độ 3 chiều như sau:
1 Chiều biểu diễn về mức độ chia sẻ của dữ liệu
2 Chiều biểu diễn về hành vi của kiểu mẫu truy xuất
3 Chiều biểu diễn về độ thông tin có được của kiểu mẫu truy xuất
Trong đó, chiều về mức độ chia sẻ (1) có những 3 mốc như sau: (1.0) không có chia
sẽ giữa các ứng dụng với nhau, mỗi ứng dụng và dữ liệu của nó thực thị tai một miền duy nhất và không có bất cứ giao tiếp nào với ứng dụng khác hoặc truy cập dữ liệu tại miền khác (1.1) chia sẽ dữ liệu: tức là mọi chương trình được nhân bản tại mỗi site, nhưng dữ liệu thì không Khi đó yêu cầu từ người dung sẽ được xử lý tại chính site của người dùng, và dữ liệu cần thiết sẽ được truyền qua mạng máy tính Và cuối cùng (1.2) là mức độ chia sẽ dữ liệu lẫn chương trình, khi đó, yêu cầu của người dùng có thể được xứ lý tại một site khác và trả kết quả
Dọc theo chiều (2) về hành vi của kiểu mẫu truy xuất gồm 2 cực: (2.0) tĩnh: tức là các kiểu mẫu truy suất của người dùng không thay đổi theo, và cực còn lại (2.1) động: kiểu mẫu truy suất thay đổi theo từng thời kỳ Trên thực tế, kiểu mẫu truy suất
là tĩnh hoàn toàn thì hiếm gặp, ở đây, ta quan tâm đến mức độ thay đổi qua từng thời điểm của kiểu mẫu truy suất
Chiều thứ (3) thể hiện thông tin của ta về kiểu mẫu truy xuất Từ mốc (3.0) là ta không có bất cứ thông tin gì về người dùng sẽ truy cập CSDL như thế nào đến (3.1)
là ta có thể dự đoán được toàn bộ các kiểu truy vấn của người dùng
Trang 41 QUÁ TRÌNH THIẾT KẾ TOP-DOWN
Có 2 chiến lược chính trong việc thiết kế CSDL phân tán là top-down và bottom-up
Ở phần này ta tập trung trình bày về việc thiết kế CSDL theo hướng top-down
Quá trình thiết kế diễn ra như hình vẽ Bắt đầu từ việc phân tích yêu cầu
(requirements analysis) nhằm định nghĩa môi trường của hệ thống, tức ra vạch ra cả
dữ liệu và tiến trình cần thiết có thể cho tất cả người dùng của hệ CSDL Cũng như đưa ra những mục tiêu cho hệ CSDL phân tán đó về hiệu năng, tính đúng đắn, tính kinh tế và tính mở rộng…
Yêu cầu phân tích sẽ được đưa vào 2 hoạt động song song là thiết kế view (view design) và thiết kế khái niệm (concept design) Việc thiết kế view nhằm định nghĩa những giao diện tương tác với người dùng cuối Trong khí đó, việc thiết kế khái niệmxác định những loại thực thể (entity type) và quan hệ giữa những thực thể đó Trong thiết kế khái niệm gồm 2 phần: phân tích thực thể (entity analysis) và phân tích tính năng (functional analysis) liên quan với nhau Phân tích thực thể yêu cầu ta xác định
về cấu trúc thực thể như thuộc tính (attributes) và quan hệ giữa chúng với nhau Phântích tính năng là để xác định nhưng chức năng cơ bản liên quan đến mô hình trên 2
Trang 5Liên hệ giữa việc thiết kế view với thiết kế khái niệm thể hiện thông qua việc tích hợp view (view intergration) Chú ý rằng mô hình khái niệm không những phải có khả năng tích hợp được với những ứng dụng hiện tại, mà ta còn phải xem xét đến những ứng dụng được đưa ra sau này Quá trình tích hợp viem cần bảo đảm rằng yêu cầu về thực thể và quan hệ cho những view được bao phủ với sơ đồ khái niệm.Không những những thông tin về dữ liệu thực thể và những ứng dụng chạy trên đó được cung cấp, ta còn cần những số liệu thống kê về như tần suất sử dụng của ứng dụng… Những quá trình trên tương ứng với việc thiết kế của một hệ CSDL tập trung.Khi sơ đồ khái niệm toàn cục GCS (Global cemceptual schema) và thông tin về kiểu mẫu truy cập được thu thập, bước tiếp theo ta tiến đến việc thiết kế phân tán
(Distributed Design) Mục tiêu của giai đoạn này, cũng chính là phần trình bày của bài báo cáo, là thiết kế những sơ đồ khái niệm cục bộ LCSs (Local conceptual schemas) bởi việc phân tán các thực thể trên các site của hệ thống phân tán
Việc phân tán không chỉ dừng ở mức phân tán các quan hệ, mà còn chia nhỏ chúng tathành các “mảnh” (fragments) và phân tán những mảnh đó Khi đó việc thiết kế gồm
2 bước: phân mảnh và bố trí các mảnh
Bước cuối cùng của việc thiết kế là thiết kế vật lý (physical design) tức ánh xạ các sơ
đồ khái niệm cục bộ được tìm ra ở bước trước vào các thiết bị lưu trữ vật lý tương ứng ở mỗi site
Quá trình này được lặp lại khi đưa vào thực tế do những biến động của yêu cầu thực
tế Qua một thời gian quan sát, ta cần đưa ra những điều chỉnh hợp lý cho từng giai đoạn
Trang 62 CÁC VẤN ĐỀ CỦA THIẾT KẾ PHÂN TÁN
Mục tiêu của phần này là đưa ra những giải thích cụ thể của tiến trình thiết kế phân tán mà ta đã trình bày ở phần trước Trong phần này, ta trả lời các câu hỏi liên quan sau:
1 Tại sao cần phân mảnh?
2 Phân mảnh như thế nào?
Tuy nhiên, vấn đề quan trong là có một số đơn vị thích hợp cho việc phân tán Nhưngmột quan hệ lại không phải là một đơn vị thích hợp Vì (1) ứng dụng thường truy xuất đến một tập con của quan hệ Ta có thể coi mỗi tập con vậy là một đơn vị truy xuất (2) là giả sử ứng dụng cần truy xuất đến quan hệ mà nằm ở một site khác Khi
đó, nếu không phân mảnh thì (2.1) toàn bộ toàn hệ chỉ nằm tại một site khác, và lượng thông tin liên lạc giữa các site sẽ lớn Hay ngược lại (2.2) quan hệ được nhân bản tại mỗi site và ta phải đối mặt với việc lãng phí dung lương lưu trữ
Cuối cùng (3) việc phân rã quan hệ thành nhiều mảnh và mỗi mảnh xử lý như một đơn vị cho phép ta thực hiện nhiều giao dịch đồng thời Hơn thế nữa, ta còn có thể thực thi song song một câu truy vấn bằng cách chia nó thành những câu truy vấn nhỏ tương ứng với các mảnh
2.2 CÁC KIỂU PHÂN MẢNH
Có hai cách phân mảnh: phân mảnh theo chiều ngang, phân mảnh theo chiều dọc
Ví dụ: Xét CSDL như sau:
Trang 7Ta có thể tách theo chiều nganh quan hệ PROJ thành 2 quan hệ PROJ1 chứa các thông tin về dự án có kinh phí dưới 200000 USD, và PROJ2 chứa các thông tin về dự
án có kinh phí lớn hơn 200000 USD
Hay tách quan hệ PROJ theo chiều dọc (giữ nguyên thuộc tính khoác) thành 2 quan
hệ PROJ1 chứa các thông tin về kinh phí dự án, và PROJ2 chứa các thông tin về tên
và vị trí dự án
Trang 8Ngoài ra, ta có thể lồng ghép nhiều phân mảnh trên 1 quan hệ Nếu lồng ghép 2 kiểu phân mảnh khác nhau thì ta gọi là phân mảnh hỗn hợp (hybrid fragmentation).
2.3 TÍNH ĐÚNG ĐẮN CỦA PHÂN MẢNH
TÍNH ĐẦY ĐỦ (COMPLETENESS)
Cho quan hệ R bất kỳ Giả sử R được phân mảnh thành các mảnh
FR= { R1, … , R2} Khi đó tính đầy đủ yêu cầu mỗi mục dữ liệu trong R có thể tìm thấy trong 1 mảnh Ri trong các mảnh của R
TÍNH TÁI TẠO (RECONSTRUCTION)
Cho quan hệ R bất kỳ Giả sử R được phân mảnh thành các mảnh
FR= { R1, … , R2} Khi đó, tồn tại một toán tử quan hệ ∇ sao cho
NHÂN BẢN
Kiểu CSDL nhân bản có hai dạng:
- Nhân bản đầy đủ: khi đó toàn bộ CSDL đều có bản sao ở mỗi site
Trang 9- Nhân bản từng phần: khi đó các mảnh được phân tán đến các vị trí, mỗi mảnh có thể có nhiều bản sao nằm ở các vị trí khác nhau Khi đó việc quản trị cơ sở dữ liệu khá phức tạp, khó thực thi.
3 PHƯƠNG PHÁP PHÂN MẢNH
Như đã nói ở phần trước, có 2 kiểu phân mảnh ngang và phân mảnh dọc Ở đây ta trình bày về 2 phương pháp phân mảnh này
3.1 PHÂN MẢNH NGANG
Phân mảnh ngang phân hoạch quan hệ theo các bộ Mỗi mảnh là một tập con của các
bộ của quan hệ Có hai loại phân mảnh ngang: phân mảnh ngang nguyên thuỷ (primary horizontal fragmentation), và phân mảnh ngang được suy Phân mảnh ngang nguyên thủy được thực hiện dựa trên các vị từ được định nghĩa bởi quan hệ
đó Phân mảnh ngang được suy (derived horizontal fragmentation) là sự phân hoạch quan hệ dựa trên vị từ định nghĩa theo một quan hệ khác Trước khi thực hiện phân mảnh, chúng ta cần thu thập thông tin cần thiết
3.1.1 YÊU CẦU THÔNG TIN
trong đó R gọi là owner, S gọi là member: owner ( L)=R, member ( L)=S
Ví dụ: liên kết L1 có owner( L1) =PAY và member( L1) = EMP
THÔNG TIN VỀ ỨNG DỤNG
Trang 10Yêu cầu thông tin của ứng dụng gồm cả thông tin định tính lẫn định lượng Thông tinđịnh tính định hướng cho việc phân mảnh, trong khi thông tin định lượng được sử dụng chủ yếu trong mô hình cấp phát Những thông tin định tính cơ bản gồm các vị
từ được câu truy vấn của người dùng
Cho quan hệ R[ A1, …, An] trong đó Ai là các thuộc tính của quan hệ Một vị từ đơn p có dạng
sơ cấp trong thuật toán thiết kế không làm mất tính tổng quát
Cho tập các vị từ đơn cho trước Pr={ p1, … , pm}, ta định nghĩa tập các vị từ hội tốitiểu (minterm predicates) M={m1, … , mr} là:
(2) Tần số truy cập dữ liệu (access frequency) của ứng dụng q: acc (q)
3.1.2 PHÂN MẢNH NGANG NGUYÊN THUỶ
Phân mảnh ngang nguyên thuỷ được định nghĩa bằng một phép toán chọn trên các quan hệ owner trong lược đồ CSDL
Trang 11Với quan hệ R, các mảnh ngang là:
TÍNH ĐẦY ĐỦ (COMPLETE)
Tập các vị từ đơn giản Pr gọi là đầy đủ nếu và chỉ nếu xác suất mỗi ứng dụng truy
xuất đến một bộ bất kỳ thuộc về một mảnh hội sơ cấp (minterm fragment) nào đó được định nghĩa theo Pr đều bằng nhau
TÍNH TỐI TIỂU (MINIMAL)
Cho tập các vị từ đơn giản Pr Ta nói một vị từ là có liên đới (relevant) trong việc
xác định phân mảnh, nếu nó ảnh hưởng đến việc mảnh f bị phân thành f1 và f2 thì phải có ít nhất một ứng dụng truy xuất đến f1 và f2 có xác suất khác nhau
Nếu tất cả các vị từ trong Pr đều có liên ứng thì Pr là tối tiểu
Qui tắc 1: Một quan hệ hoặc một mảnh được phân hoạch thành ít nhất hai phần khác nhau và được ít nhất một ứng dụng truy cập các bộ ới xác suất khác nhau
THUẬT TOÁN COM_MIN
Input: quan hệ R, tập các vị từ đơn Pr
Output: P r' tập các vị từ đơn đầy đủ và tối tiểu
- Nếu ∃ pk∈ P r' không liên ứng thì loại pk ra khỏi P r'
Cho đến khi P r' đầy đủ
Trang 12Tiếp theo ta suy ra tập M các vị từ hội sơ cấp định nghĩa bởi tập P r' vừa tìm được.
THUẬT TOÁN PHORIZONTAL
Input: quan hệ R, tập các vị từ đơn đầy đủ và tối tiểu Pr
Output: tập các vị từ hội tối tiểu M
Xác định tập M các vị từ hội tối tiểu
Xác định tập I các phép kéo theo giữa các vị từ đơn p ∈ Pr.
Khử các minterm mẫu thuẫn ra khỏi M
3.1.3 PHÂN MẢNH NGANG ĐƯỢC SUY
Phân mảnh ngang được suy được định nghĩa trên một quan hệ member của một liên kết L dựa theo phép chọn trên quan hệ owner của L Ta cần lưu ý hai điểm sau: (1) đường nối giữa quan owner và member được định nghĩa bằng một phép đẳng nối (equijoin) (2) đẳng nối có thể được cài đặt nhờ các phép bán nối (semijoin)
Cho trước đường nối L, trong đó owner (L)=S và member (L)=R, các mảnh ngang được suy của R được định nghĩa là
Phân mảnh dọc phức tạp hơn so với phân mảnh ngang Điều này do số khả năng phânmảnh dọc rất lớn Nếu quan hệ có m thuộc tính không khoá, thì số mảnh có thể bằng
B(m), số Bell thứ m Với m lớn B (m) mm
3.2.1 YÊU CẦU THÔNG TIN
Những thông tin chính cần cho phân mảnh dọc có liên quan tới các ứng dụng Vì phân mảnh dọc đặt vào một mảnh các thuộc tính thường được truy xuất chung với nhau, ta cần xác định một độ đo khái niệm “tru xuất chung” Số đo này gọi là ái lực (affinity) của thuộc tính, chỉ mức độ liên đới giữa các thuộc tính
Yêu cầu dữ liệu chính có liên quan đến các ứng dụng là tần suất truy xuất (access frequency) của chúng Gọi Q={ q , … , q } là tập các struy vấn của người dùng sẽ
Trang 13chạy trên quan hệ R( A1, , An) Với mỗi câu truy vấn qi và mỗi thuộc tính Aj ta
định nghĩa giá trị sử dụng (attribute usage value) use( qi, Aj) =1 nếu thuộc tính Aj
được sửa dụng trong truy vấn qi
Ta định nghĩa số đo ái lực thuộc tính (attribute affinity measure) giữa hai thuộc tính
Ai và Aj của quan hệ R( A1, , An) ứng với tập ứng dụng Q={ q1, … , qk} là
aff ( Ai, Aj) = ∑
q ∈Q use(q , A i)∧use(q , A j)
∑
s ∈S
refs(q) accs(q)
Trong đó refs(q ) là số lượng các truy cập đến thuộc tính Ai, Aj cho mỗi thực
thi của ứng dụng q Và accs(q ) là tần suất sử dụng của truy vấn tại site s Ta
thấy aff ( Ai, Aj) càng lớn khi Ai và Aj được sử dụng chung càng nhiều
Khi đó ta có thể xây dựng ma trận ái lực AA mà mỗi phần tử ở dòng i cột j là
aff ( Ai, Aj)
3.2.2 THUẬT TOÁN GOM NHÓM
Nhiệm vụ cơ bản trong việc xây dựng thuật toán phân mảnh dọc là tìm cách nào đó
để nhóm các thuộc tính của quan hệ dựa trên ma trận ái lực Ta cần tìm hoán vị các
hàng và cột ma trận ái lực để tạo thành ma trận CA (clustered affinity matrix) sao cho
số đo ái lực toàn cục AM (global affinity measure) là lớn nhất Ta định nghĩa:
aff ( Ai, Aj) ( aff ( Ai, Aj−1)+ aff ( Ai, Aj +1)+ aff ( Ai +1, Aj)+ aff ( Ai−1, Aj) )
Vì ma trận ái lực đối xứng nên
Trang 14Khi đó ta cần tìm vị trí chèn Ak sao cho max cont( Ai, Ak, Aj).
THUẬT TOÁN BEA
Input: ma trận affinity AA.
Output: ma trận CA
Khởi tạo: cố định 2 cột bất kỳ từ AA vào CA.
Với mỗi cột Ak còn lại
- Tìm vị trí l sao cho cont ( Ai, Ak, Aj) là lớn nhất
- Chèn Ak vào vị trí l
Xem ví vụ ở phần chương trình demo
3.2.3 THUẬT TOÁN PHÂN HOẠCH
Mục đích của việc phân mãnh dọc là tìm những tập thuộc tính được truy xuất cùng nhau bởi các ứng dụng Ta có thể tách các thuộc tính thành m tập con Ở đây, ta chỉ xét việc tách thành 2 tập con
Do ma trận CA đã được gom nhóm nên ta chỉ cần tìm 1 điểm chia theo thứ tự đã xét như sau:
Trang 15Ta ký hiệu TA là tập các thuộc tính nằm bên trái điểm chia, BA là tập các thuộc tính nằm bên phải điểm chia.
Ta gọi AQ (q )= { Ai:use ( q , Ai) =1 } là tập tất cả các thuộc tính Ai được sử dụng trong truy vấn q Khi đó:
TQ= { q : AQ (q )⊆TA } là tập các truy vấn chỉ sử dụng các thuộc tính trong TA
BQ= { q : AQ( q) ⊆BA } là tập các truy vấn chỉ sử dụng các thuộc tính trong BA
OQ=Q−(TQ ∪ BQ) là tập các truy vấn chỉ sử dụng cả những thuộc tính trong
Trang 16Xem ví dụ ở chương trình Demo.
CHƯƠNG TRÌNH DEMO
Chương trình thể hiện quá trình phân mảnh dọc quan hệ R bởi thuật toán gom cụm BEA và thuật toán phân hoạch PARTITON Chương trình được viết trên nền Web bởi ngôn ngữ đặc tả HTML và ngôn ngữ lập trình Javascript, có thể chạy trên các trình duyệt web hiện đại hiện nay như Chrome, Opera hay Firefox và Safari
Trang 17Chương trình gồm 2 phần:
- phần nhập dữ liệu đầu vào bên trái và
- phần trình bày lời giải bên phải
Hình 1 Giao diện của chương trình
Trang 18Trong đó phần nhập dữ liệu đầu vào yêu cầu nhập số lượng các thuộc tính của quan
hệ R, số lượng các câu lệnh truy vấn và số các site của hệ thống phân tán Chương trình quy ước các thuộc tính của quan hệ của R là A1, … , An và các câu truy vấn
Q1, … ,Qm Yêu cầu về thông tin ứng dụng còn có ma trận USE và ma trận ACC
Do trong thuật toán BEA lúc khởi tạo cố định 2 cột tương ứng với 2 thuộc tính Ai và
Aj, vì thế, người dùng có thể chọn 2 thuộc tính tương ứng với 2 cột cố định ban đầu.Phần trình bày lời giải sẽ trả trình bày gồm các phần:
- yêu cầu thông tin: viết lại ma trân USE và ma trận ACC từ dữ liệu đầu vàocũng như tính tổng tần suất truy cập trên các site của truy vấn q Ở đây quy ước refs( q)=1, ∀ site s∈ S.
Solve
4 4 3