Như vậy, chúng ta có thể định nghĩa một cơ sở dữ liệu phân tán là một tập hợpnhiều cơ sở dữ liệu có liên đới logic và được phân bố trên một mạng máy tính.. • Liên đới logic: dữ liệu có m
Trang 1LỜI MỞ ĐẦU
Trong thời đại ngày nay, tin học là nhu cầu không thể thiếu đối với mọingười trên mọi lĩnh vực Trước đây, khi còn làm việc trên từng máy đơn thì việclưu trữ dữ liệu ngay tại nơi làm việc là một điều dễ hiểu Tuy nhiên, gần đây do sựphát triển nhanh chóng của công nghệ truyền tin, sự lan rộng mạnh mẽ củaInternet, cùng với xu thế toàn cầu hóa trong mọi lĩnh vực, đặc biệt là lĩnh vựcthương mại thì việc lưu trữ dữ liệu tại một máy đơn theo kiểu truyền thống đã lạchậu, bộc lộ nhiều nhược điểm Vì thế, cơ sở dữ liệu phân tán đã thu hút nhiều sựquan tâm của các nhà nghiên cứu trong lĩnh vực công nghệ thông tin
Chính vì lý do trên nên sau khi học xong môn cơ sở dữ liệu nâng cao, em đãchọn đề tài “Xây dựng chương trình tự động phân mảnh dọc trong cơ sở dữ liệuphân tán” Trong phạm vi bài thu hoạch này em xin trình bày tóm tắt những kiếnthức đã học được về cơ sở dữ liệu phân tán và viết một chương trình tự động phânmảnh dọc trong cơ sở dữ liệu phân tán bằng ngôn ngữ C#
Qua đây, em xin chân thành cảm ơn PGS.TS Đỗ Phúc đã tận tình hướngdẫn em môn học bổ ích và đầy ý nghĩa này Em xin cảm ơn các bạn cùng khoá vàcác anh chị khoá trước đã giúp đỡ em tìm tài liệu và góp ý cho em hoàn thành tốtbài thu hoạch này!
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Trang 3
MỤC LỤC
Trang 4NỘI DUNG
CHƯƠNG I: TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN
I.1. Khái niệm về cơ sở dữ liệu phân tán
Xét về mặt logic, cơ sở dữ liệu phân tán là một cơ sở dữ liệu phục vụ cho mộtmục tiêu xác định trong thế giới thực Tuy nhiên, cơ sở dữ liệu này lại được lưu trữtại nhiều vị trí khác nhau, cho nên tên của cơ sở dữ liệu này trên các vị trí vật lý sẽkhác nhau
Ngoài ra, đối tượng khai thác của cơ sở dữ liệu phân tán sẽ nhiều hơn, rộnghơn và có nhiều địa điểm truy xuất hơn
Như vậy, chúng ta có thể định nghĩa một cơ sở dữ liệu phân tán là một tập hợpnhiều cơ sở dữ liệu có liên đới logic và được phân bố trên một mạng máy tính
• Liên đới logic: dữ liệu có một số thuộc tính ràng buộc với nhau, điều này phân biệt
cơ sở dữ liệu phân tán với một tập hợp cơ sở dữ liệu cục bộ hay các tập tin cư trútại các vị trí khác nhau trong một mạng máy tính
• Phân tán: dữ liệu không cư trú trên một vị trí, điều này phân biệt giữa cơ sở dữ liệuphân tán với một cơ sở dữ liệu tập trung, đơn lẻ
I.2. Mô hình về cơ sở dữ liệu phân tán
Mô hình 1(mức thấp): có nhiều máy chủ, các mày này nối với nhau thông quamạn LAN, mỗi máy chủ có một trạm làm việc
Trang 5WS1
WS3 WS2
Trang 6I.3. Đặt trưng của hệ cơ sở dữ liệu phân tán
Hệ quản trị cơ sở dữ liệu tập
trung Hệ quản trị cơ sở dữ liệu phân tán
4 Tính hiệu quả khi truy xuất
dữ liệu Luôn có module tối
ưu hoá câu truy vấn
5 Toàn vẹn dữ liệu, an toàn dữ
liệu, phục hồi dữ liệu sau sự
cố
1 - Kiểm soát dữ liệu tập trung
- Ở mỗi vị trí có một quyền tự chủnhất định về dung lượng cục bộ
2 - Độc lập giữa dung lượng vàchương trình cục bộ
- Tính trong suốt trong cơ sở dữliệu phân tán
3 Vẫn có quyền đưa trùng lắp thôngtin vào nhưng hệ thống phải xácđịnh gốc của dữ liệu là ở đâu
4 - Cục bộ: tối ưu hoá toàn vẹn cụcbộ
- Phân tán: khi lấy dữ liệu phântán vẫn phải đảm bảo tính hiệuquả (lấy nhanh nhất)
5 Phải bảo đảm
6 Phải bảo đảm
Trang 7truy xuất.
I.4. Ưu điểm của cơ sở dữ liệu phân tán
Ưu điểm chính là cho phép chia sẻ thông tin, tài nguyên trong một phạm virộng lớn, giúp cho người thiết kế hệ thống xác định vị trí tối ưu nhất cho việc sắpxếp dữ liệu và xử lý trên hệ thống
Nâng cao tính linh hoạt, mềm dẻo: Các máy tính và dữ liệu được đặt ở những
vị trí sao cho việc khai thác chúng đạt hiệu quả nhất
Tính tự quản và giảm cạnh tranh: Thể hiện thông qua việc phân công hoạtđộng cho các bộ phận, trao vùng nghiệp vụ tự chủ cho từng vị trí cục bộ
Nâng cao mức độ tin cậy: Trong hệ tập trung, khi phần cứng hay phần mềm bịlỗi sẽ làm cho toàn bộ hệ thống ngừng hoạt động Đối với hệ phân tán, những hưhỏng chỉ ảnh hưởng một nhóm nhỏ, do đó khi hư hỏng ở một nhóm nào đó thì chỉ
có một mình nhóm đó ngừng hoạt động,các nhóm khác vẫn hoạt động bình thường.Nâng cao tốc độ và khả năng thi hành: Trong hệ tâp trung, do khối lượng dữliệu lớn, tốc độ thi hành chậm Đối với hệ phân tán, do dữ liệu phân thành các côngviệc riêng trên từng server, vì vậy tốc độ xử lý dữ liệu sẽ nhanh hơn Ngoài ra, các
dữ liệu được lưu trữ ngay tại các vị trí thường xuyên truy cập chúng nhất, do đó sẽgiảm dòng dữ liệu phải trao đổi trên đường truyền Từ đó, cải thiện đáng kể thờigian trả lời cho mỗi yêu cầu ứng dụng từ người dùng
Khả năng mau phục hồi: việc truy xuất dữ liệu không phụ thuộc vào một máyhay một đường nối trên mạng Nếu có bất kỳ một lỗi nào thì sau đó vài cơ sở dữliệu có thể được truy xuất trên các vị trí địa phương, hơn nữa một đường nối này
có thể được thay thế bởi một đường nối khác không có lỗi
Trang 8Dễ dàng trong mở rộng: việc phát triển qui mô hoạt động của đơn vị có thểđạt được một cách dễ dàng bằng cách thêm vào nhiều bộ xử lý trong mạng, thêm
cơ sở dữ liệu vào một nút tại một vị trí trong mạng, hoặc có thể cập nhật phần mềmhoàn toàn độc lập với cấu trúc vật lý bên dưới
I.5. Nhược điểm của cơ sở dữ liệu phân tán
Khó quản lý và an toàn: Trong hệ tập trung, chỉ cần một quyền để bảo đảm antoàn cho mạng Trong hệ phân tán, việc quản lý rất tốn kém vì dữ liệu ở những nơikhác nhau cần các quyền khác nhau
Độ tin cậy và tính hiệu lực sử dụng thấp: Đã từ lâu hệ tập trung đã được sửdụng lâu dài, cho nên có độ tin cậy cao hơn so với hệ phân tán
Thiếu đội ngũ triển khai và hỗ trợ kỹ thuật: Trong hệ tập trung, các nhà cungcấp công cụ, phần mềm và các hỗ trợ kỹ thuật tích hợp trong một gói Hệ phân tánvới nhiều nhà cung cấp khác nhau, để kết hợp lại cần chuyên gia tích hợp Giảiquyết vấn đề này gặp nhiều khó khăn, tốn kém
Kinh tế vì các hệ phân tán bao giờ cũng phức tạp hơn so với các hệ tập trung,nên giá cả thường cũng cao hơn, bao gồm cả phần mềm lẫn phần cứng
Trang 9CHƯƠNG II: THIẾT KẾ CƠ SỞ DỮ LIỆU PHÂN TÁN
II.1. Mục đích của thiết kế cơ sở dữ liệu phân tán
Việc thiết kế cơ sở dữ liệu phân tán ngoài việc thiết kế hệ thống mạng máytính mà hệ cơ sở dữ liệu phân tán sẽ chạy trên chúng, còn phải quyết định xem dữliệu và chương trình sẽ được đặt tại những vị trí nào trong mạng máy tính này.Trong trường hợp hệ thống mạng máy tính đã có sẵn, thì việc thiết kế cơ sở dữliệu phân tán có hai điều chính là:
• Phân tán hệ quản trị cơ sở dữ liệu trên các nút trong mạng máy tính
• Phân tán các chương trình ứng dụng chạy trên các hệ quản trị đó
II.2. Các chiến lược thiết kế cơ sở dữ liệu phân tán
II.2.1 Quá trình thiết kế từ trên xuống
Top – down: là phương pháp thiết kế từ trên xuống và được chia ra làm nhiềugiai đoạn, mỗi giai đoạn đều có nhiệm vụ riêng, giai đoạn này nối tiếp giai đoạnkia, đầu ra của giai đoạn này là đầu vào của giai đoạn kế tiếp
Bao gồm các bước sau:
- Phân tích yêu cầu: thu thập yêu cầu về dữ liệu và xử lý của tất cả mọingười có sử dụng CSDL
- Thiết kế khung nhìn: có nhiệm vụ định nghĩa giao diện cho người dùngcuối
- Thiết kế khái niệm: là quá trình xem xét tổng thể nơi cần cài đặt CSDL
- Thiết kế phân tán: thiết kế các lược đồ khái niệm cục bộ bằng cách phântán các thực thể cho các vị trí của hệ thống phân tán
- Thiết kế vật lý: ánh xạ các lược đồ khái niệm cục bộ sang các thiết bịlưu trữ tương ứng
Trang 10Phân tích yêu cầu
Yêu cầu hệ thống
Thiết kế khái niệm Thiết kế khung nhìn
Khái niệm toàn cục Thông tin truy xuất ĐN lược đồ ngoài
Trang 11II.2.2 Quá trình thiết kế từ dưới lên
Thiết kế từ trên xuống thích hợp với những CSDL thiết kế từ đầu Tuy nhiêntrong thực tế, chúng ta hay gặp những CSDL đã có sẵn, và nhiệm vụ thiết kế làphải tích hợp chúng thành một CSDL Thiết kế từ dưới lên sẽ thích hợp cho tìnhhuống này Khởi điểm của thiết kế từ dưới lên là các khái niệm lược đồ cục bộ.Quá trình này sẽ bao gồm việc tích hợp các lược đồ cục bộ thành lược đồ kháiniệm toàn cục
II.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 rãthành các mảnh Khi đó tính đầy đủ yêu cầu mỗi mục dữ liệu trong r cũng phảiđược lưu trữ trong 1 hoặc vài mảnh nào đó
Tính tái tạo (reconstruction): Cho quan hệ r bất kỳ Giả sử r được phân rãthành các mảnh r1 , , rn Khi đó tính đầy đủ yêu cầu “hợp” các phân mảnh củaquan hệ r trả lại đầy đủ dữ liệu ban đầu của quan hệ r Khái niệm “hợp” ở đây làtoán tử quan hệ ∆ sao cho r = ∆ ri ∀ri Toán tử ∆ thay đổi tuỳ theo từng loạiphân mảnh Khả năng tái thiết một quan hệ từ các mảnh của nó đảm bảo rằng cácràng buộc định nghĩa theo phụ thuộc dữ liệu sẽ được bảo toàn
Tính rời nhau (disjointness): Cho quan hệ r bất kỳ Giả sử r được phân rãthành các mảnh r1 , , rn Khi đó tính tách biệt yêu cầu một mục dữ liệu d nào
đó một khi đã xuất hiện trong mảnh ri thì sẽ không xuất hiện trong mảnh rk khác.Tiêu chuẩn này đảm bảo các mảnh ngang sẽ tách biệt nhau Còn trong phân mảnhdọc thì các thuộc tính khoá chính phải được lặp lại trong mỗi mảnh, vì vậy tínhtách biệt chỉ áp dụng với các thuộc tính không khoá
II.4. Cách cách phát phân mảnh
Không nhân bản: mỗi mảnh nằm trên một vị trí, tồn tại bản sao duy nhất củamột mảnh trên mạng
Trang 12Nhân bản:
• Nhân bản đầy đủ: một mảnh ở một vị trí, toàn bộ cơ sở dữ liệu đều tồn tại ở từng vị trí
• Nhân bản từng phần: mỗi mảnh ở vài vị trí
II.5. Các kiểu phân mảnh dữ liệu
II.5.1 Phân mảnh ngang
II.5.1.1 Phân mảnh ngang nguyên thủy
Định nghĩa : Rj= σFj(R ), 1 ≤ j ≤ w
Với Fj là công thức chọn, thích hợp là minterm predicate
Do vậy, Phân mảnh ngang Ri của quan hệ R gồm tất cả các bộ của R thỏaminterm predicate mi
Cho tập các minterm predicates M, có nhiều phân mảnh ngang của quan hệ Rứng với nhiều minterm predicates Tập các phân mảng ngang cũng được gọi làminterm fragments
Thuật toán:
Cho: Quan hệ R, tập các vị từ đơn Pr
Kết quả: Tập các mảnh của R = {R1, R2,…,Rw} thỏa quy tắc phân mảnh.Yêu cầu :
- Pr phải đầy đủ (complete)
- Pr phải tối tiểu (minimal)
II.5.1.2 Phân mảnh ngang suy dẫn
Chọn link L với owner(L)=S và member(L)=R, các mảnh ngang được suycủa R được định nghĩa như sau: Ri= R <F Si, 1≤i≤w
Với w là số lớn nhất các mảnh được xác định trên R và Si= σFi(S) , Si là cácphân mảnh ngang của owner.Với Fi là công thức theo đó xác định phân mảnhngang nguyên thủy Si
Trang 13Tính đúng đắn của phân mảnh ngang suy dẫn
- Tính đầy đủ
• Toàn vẹn tham chiếu
• Cho R là quan hệ member của link có owner là quan hệ S đượcphân mảnh thành FS = {S1, S2, , Sn} Ngoài ra gọi A là thuộctính kết nối giữa R và S Thì với từng bộ t của R, tồn tại bộ t' của Ssao cho t[A]=t'[A]
- Tái tạo: Giống phân mảnh ngang nguyên thủy
- Rời nhau: Chỉ có join graphs giữa owner và các member fragments
II.5.2 Phân mảnh dọc
II.5.2.1 Định nghĩa
Phân mảnh dọc là hoạt động chia 1 quan hệ R thành các mảnh con R1, R2 , …,
Rn sao cho mỗi mảnh con chứa tập các thuộc tính và chứa cả khóa của R Như vậybài toán 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 hệ cơ sở dữ liệu tập trung
Có hai tiếp cận:
- Nhóm: các thuộc tính tới phân mảnh
- Tách: quan hệ tới phân mảnh
Yêu cầu thông tin:
- Các ái lực thuộc tính (Attribute affinities): độ đo phản ánh các thuộc tínhquan hệ gần nhau Nhận được từ dữ liệu sử dụng ban đầu
- Giá trị sử dụng thuộc tính (Attribute usage values)
II.5.2.2 Ma trận giá trị sử dụng Use
Cho tập các truy vấn Q = {q1, q2,…, qq} chạy trên quan hệ R[A1, A2,…, An]Với mỗi câu truy vấn qi và thuộc tính Aj, sẽ có 1 giá trị sử dụng thuộc tính,
Kí hiệu là use(qi,Aj) được định nghĩa như sau:
Trang 14Các giá trị use(qi,*) rất dễ xác định nếu chúng ta biết được các ứng dụng chạy trên cơ sở dữ liệu
Ví dụ: Xét 4 truy vấn cho quan hệ PROJ
q 1 : Tìm ngân sách của dự án, cho biết mã số dự án
q 2 : Tìm tên và ngân sách của tất cả dự án
q 3 : Tìm tên của các dự án được thực hiện ở thành phố đã cho
q 4 : Tìm tổng ngân sách các dự án được thực hiện ở thành phố đãcho
Dựa theo 4 ứng dụng này ta có thể xác định được giá trị sử dụng các thuộctính Để cho đơn giản ta ký hiệu
A1=PNO, A2=PNAME, A3=BUDGET và A4=LOC
Trang 15Giá trị sử dụng cho ở bảng sau:
1 1 0 0
1 0 1 0
0 1 1 0
0 1 0 1
4 3 2 1
4 3 2 1
q q q q
A A A A
II.5.2.3 Độ đo ái lực Aff
Độ đo phản ánh các thuộc tính quan hệ gần nhau (các thuộc tính được truy xuất chung với nhau)
Độ đo ái lực thuộc tính giữa 2 thuộc tính Ai và Aj của quan hệ R[A1, A2, …, An] ứng với tập quan hệ Q = (q1, q2, …, qq) được định nghĩa như sau:
Với query access là ma trận tần số truy cập Dữ liệu chính có liên quan đến truy vấn (ứng dụng) qi, query access được tính với công thức sau:
Ví dụ: Giả sử từng truy vấn trong ví dụ trước được truy cập trong từng lầnthực hiện
Giả định tần số truy cập là:
T n s truy c p (query access) = ầ ố ậ 3 0 0
25 25 25
0 0 5
10 20 15
4 3 2 1
3 2 1
q q q q
S S S
Trang 16Vì chỉ có ứng dụng q1 truy xuất đến cả hai thuộc tính A1 và A3, nên ta có
aff(A1, A3) = acc1(q1) + acc2(q1) + acc3(q1) = 45Vậy ma trận ái lực như sau:
AA = 0 75 3 78
3 53 5 45
75 5 80 0
0 45 0 45
4 3 2 1
4 3 2 1
A A A A
A A A A
II.5.2.4 Thuật toán năng lượng liên kết BEA (Bond Energy Algorithm)
Thuật toán gom cụm lấy ma trận ái lực AA và tổ chức lại các thứ tự của thuộctính để tạo các cụm có các thuộc tính ứng với cụm có độ ái lực cao hơn cụm khácThuật toán năng lượng liên kết được dùng để gom cụm các thực thể BEAtìm thứ tự các thực thể ( trong trường hợp này là các thuộc tính) sao cho độ đo áilực toàn cục sau là cực đại
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ìmphương tiện nào đó để nhóm các thuộc tính của quan hệ dựa trên ma trận áilực.Thuật toán năng lượng nối BEA là thích hợp vì những lý do sau:
(1) BEA gom các thuộc tính có cùng độ lớn ái lực lại với nhau
(2) Các kết quả tụ nhóm không bị ảnh hưởng bởi thứ tự đưa các mục vàothuật toán
(3) Thời gian tính toán là O(n2) với n là số thuộc tính
(4) Có thể xác định mối liên hệ giữa các nhóm thuộc tính
Trang 17Nhập: Ma trận AA
Xuất: Ma trận ái lực gom cụm CA là một sắp xếp của các hoán vị AA
- Khởi tạo: Đặt và cố định một trong các cột của AA vào CA
- Lặp: Đặt n-i cột còn lại vào i+1 vị trí còn lại trong ma trận CA Đốivới từng cột, chọn vị trí đóng góp (contri bution) lớn nhất vào độ đo ái lực toàncục
75 5 80 0
0 45 0 45
4 3 2 1
4 3 2 1
A A A A
A A A A
Trang 19II.5.2.5 Thuật toán phân hoạch
Mục đích của hành động tách thuộc tính là tìm tập thuộc tính được truy xuấtcùng nhau hoặc hầu như bằng các tập ứng dụng riêng biệt
Cách chia tập các thuộc tính gom cụm {A1, A2, …, An} thành hai (hay nhiềuhơn) các tập {A1, A2, …, Ai} và {Ai, …, An} sao cho không có (hay có tốithiểu) các ứng dụng truy cập cả hai (hay nhiều hơn một) của các tập hợp
Tập các ứng dụng chỉ truy cập TA: TQ = {qi|AQ(qi) ⊆ TA}
Tập các ứng dụng chỉ truy cập BA: BQ = {qi|AQ(qi) ⊆ BA}
Tập các ứng dụng vừa truy cập TA và BA : OQ = {qi|Q\TQ ∪ BQ}
Trang 20Với AQ(qi) = {Aj | use(qi, Aj) = 1}
Tổng số các truy cập đến các thuộc tính bởi các ứng dụng chỉ truy cập TA: Tổng số các truy cập đến các thuộc tính bởi các ứng dụng chỉ truy cập BA:
Tổng số các truy cập đến các thuộc tính bởi ứng dụng truy cập cả TA vàBA:
Tìm điểm chia sao cho (CTQ * CBQ – COQ2) lớn nhất
Thuật toán PARTITION
Đầu vào: ma trận ái lực tụ CA, quan hệ R, ma trận sử dụng thuộc tính ref, ma
trận tần số truy xuất access
Đầu ra: tập các mảnh FR={R1, R2} với R1∩R2 là khoá