Các phương pháp thiết kế CSDL phân tán

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng mô hình cơ sở dữ liệu phân tán cho hệ thống quản lý vật tư tại công ty FPT telecom hà nội (Trang 35 - 48)

a) Phương pháp thiết kế từ trên xuống (top- down)

Hình 2.6 Phương pháp thiết kế CSDL phân tán top-down [1]

Có 2 phương pháp thiết kế CSDL phân tán: Phương pháp tiếp cận từ trên xuống (top - down) và phương pháp tiếp cận từ dưới lên (bottom – up).

Phương pháp thiết kế từ trên xuống được thể hiện bởi hình 2.6. Phương pháp thiết kế này cho phép thiết kế đi từ tổng thể đến chi tiết. Hay nói cách khác nó phân một hệ thống lớn thành các hệ thống con theo các bước sau:

Phân tích các yêu cầu nhằm định nghĩa môi trường hệ thống và thu thập các yêu cầu về dữ liệu cũng như các nhu cầu xử lý của các trạm có sử dụng CSDL. Phân tích yêu cầu cũng xác định xem hệ thống đầu cuối sẽ như thế nào so với các mục tiêu của một hệ quản trị CSDL phân tán đã được phân tích. Những mục tiêu này được định nghĩa theo các vấn đề về hiệu quả hoạt động, độ tin cậy, tính có sẵn, tính kinh tế, và tính linh hoạt.

Hồ sơ ghi chép các yêu cầu là nguyên liệu cho hai hoạt động song song: thiết kế khung nhìn và thiết kế khái niệm. Thiết kế khung nhìn là định nghĩa các giao diện cho người sử dụng ở các trạm. Thiết kế khái niệm là một tiến trình kiểm tra và xác định rõ hai nhóm quan hệ: Phân tích chức năng và phân tích thực thể. Phân tích chức năng là xác định các chức năng của hệ thống và đưa ra các chức năng cơ sở. Phân tích thực thể là xác định các tập thực thể, các thuộc tính và các mối quan hệ giữa chúng. Trong các hoạt động thiết kế khái niệm và thiết kế khung nhìn, người sử dụng cần phải đặc tả các thực thể dữ liệu và phải xác định các ứng dụng sẽ chạy trên CSDL cũng như các thông tin thống kê về những ứng dụng này. Thông tin thống kê bao gồm đặc tả về tần số ứng dụng, khối lượng các thông tin khác nhau,… Lược đồ khái niệm toàn cục và thông tin về kiểu mẫu truy xuất thu được trong thiết kế khung nhìn sẽ là nguyên liệu cho bước thiết kế phân tán. Mục tiêu của giai đoạn này là thiết kế các lược đồ khái niệm cục bộ bằng cách phân tán các thực thể cho các vị trí của hệ thống phân tán. Ta chia quan hệ thành nhiều quan hệ nhỏ hơn gọi là các mảnh (fragment) và phân tán các mảnh này. Hoạt động thiết kế phân tán gồm hai bước: Phân mảnh (fragmentation) và cấp phát (allocation). Thiết kế vật lý là ánh xạ lược đồ khái niệm cục bộ sang các thiết bị lưu trữ vật lý có sẵn tại các vị trí tương ứng. Nguyên liệu cho quá trình này là lược đồ khái niệm cục bộ và thông tin về kiểu mẫu truy xuất các mảnh. Hoạt động phát triển và thiết kế luôn là quá trình liên tục, đòi hỏi phải theo dõi, hiệu chỉnh thường xuyên. Vì thế chúng ta cũng đưa vấn đề quan sát và theo dõi như một hoạt động chính trong quá trình này. Cần chú ý rằng chúng ta không chỉ theo dõi vấn đề cài đặt cơ sở dữ liệu mà còn

phải quan sát theo dõi tính thích hợp của các khung nhìn của người sử dụng. Kết quả này có tác dụng phản hồi, tạo tiền đề cho tái thiết kế về sau.

b) Phương pháp thiết kế từ dưới lên (bottom – up)

Phương pháp thiết kế trên xuống thực sự có hiệu quả khi xây dựng một hệ thống mới. Trong thực tế, một số CSDL đã tồn tại trước được tổ chức trong môi trường tập trung và CSDL phân tán được phát triển bằng cách liên kết chúng lại thành một CSDL mới thống nhất (các DBMS địa phương khác nhau đã được sử dụng). Các bước thiết kế:

• Chọn một mô hình dữ liệu chung để mô tả lược đồ tổng thể

• Chuyển mỗi lược đồ địa phương theo mô hình dữ liệu chung đã chọn

• Tích hợp các lược đồ địa phương vào lược đồ tổng thể.

2.4 Phân mảnh

Đơn vị truy xuất của các ứng dụng không phải là toàn bộ quan hệ mà thường là một mảnh. Việc phân rã một quan hệ thành nhiều mảnh, mỗi mảnh được xử lý như một đơn vị, sẽ cho phép thực hiện nhiều giao dịch đồng thời. Việc phân mảnh các quan hệ sẽ cho phép thực hiện song song một câu vấn tin bằng cách chia nó ra thành một tập các câu vấn tin con hoạt tác trên các mảnh. Nếu các ứng dụng có các khung nhìn được định nghĩa trên một quan hệ cho trước nằm tại những vị trí khác thì có hai cách chọn lựa đơn vị phân tán: hoặc là toàn bộ quan hệ hoặc quan hệ được lưu ở một vị trí có chạy ứng dụng. Việc phân mảnh dữ liệu có một số hạn chế sau:

• Nếu ứng dụng có những yêu cầu ngăn cản việc phân rã thành các mảnh để được sử dụng độc quyền, thì những ứng dụng có các khung nhìn được định nghĩa trên nhiều mảnh sẽ bị giảm hiệu suất hoạt động.

• Nếu một khung nhìn đòi hỏi thông tin ở nhiều mảnh thì việc truy xuất dữ liệu để nối lại sẽ có chi phí cao.

Trong CSDL các quan hệ chính là các bảng, việc phân mảnh là quá trình tìm kiếm các cách khác nhau để chia một bảng thành nhiều bảng nhỏ hơn. Có ba kiểu phân mảnh tương ứng với việc chia quan hệ: Phân mảnh dọc, phân mảnh ngang và phân mảnh hỗn hợp.

Phân mảnh ngang (horizontal fragmentation) : Phân mảnh ngang chia một quan hệ theo các bộ, vì vậy mỗi mảnh là một tập con của quan hệ . Có hai loại phân mảnh ngang là phân mảnh ngang nguyên thủy và phân mảnh ngang dẫn xuất.

- Phân mảnh ngang nguyên thủy: của một quan hệ được thực hiện dựa trên các vị từ được định nghĩa trên quan hệ. Là tập các vị tư đơn giản đầy đủ và cực tiểu là bước đầu tiên trong thiết kế phân mảnh ngang nguyên thủy. Thuật toán bắt đầu bằng cách tìm một vị từ có liên đới và phân hoạch quan hệ đã cho. Vòng lặp do- until thêm các vị từ vào Pr’, đảm bảo Pr’ có tính cực tiểu tại mỗi bước. Bước tiếp theo của thiết kế phân mảnh ngang nguyên thủy là tìm tập các vị từ hội sơ cấp được định nghĩa trên các vị từ trong Pr'. Các vị từ hội sơ cấp xác định các mảnh cho cấp phát. Tuy nhiên, các vị từ hội sơ cấp có thể rất lớn, tỷ lệ hàm mũ theo số lượng các vị từ đơn giản. Vì vậy cần phải loại bỏ những mảnh không có ý nghĩa, bằng cách xác định những vị từ mâu thuẫn với tập các phép kéo theo (Implication).

Ví dụ 2.1 : Phân mảnh nguyên thủy quan hệ Warehouse. Xét quan hệ quản lý vật tư tại các Warehouse (Kho) .

Warehouse 1 = σcode_warehouse = “Các mã warehouse mà vị trí 1 quản lý”(Warehouse) Warehouse 2 = σcode_warehouse = “Các mã warehouse mà vị trí 2 quản lý” (Warehouse) Warehouse 3 = σcode_warehouse = “Các mã warehouse mà vị trí 3 quản lý” (Warehouse)

- Phân mảnh ngang dẫn xuất: là việc phân mảnh một quan hệ theo kết nối bằng nhau (Equijoin) hoặc kết nối nửa bằng nhau (Semijoin) đến các quan hệ khác trong cơ sở dữ liệu. Việc quyết định chọn phân mảnh nào tối ưu hơn cần dựa trên hai tiêu chuẩn sau:

- Phân mảnh có đặc tính kết nối tốt hơn - Phân mảnh sử dụng cho nhiều ứng dụng hơn

Từ đó nhận thấy phân mảnh dẫn xuất có thể xảy ra dây chuyền, trong đó một quan hệ được phân mảnh như là hệ quả của một phân mảnh cho một quan hệ khác, và đến lượt nó lại làm cho các quan hệ khác phải phân mảnh. Một quan hệ có thể có nhiều cách phân mảnh. Chọn lựa một lược đồ phân mảnh nào cho tối ưu phụ thuộc vào ứng dụng và cấp phát.

Ví dụ 2.2: Phân mảnh dẫn xuất quan hệ Materials theo quan hệ warehouse. Materials _in 1= Materials _in ⊳⊲Warehouse1

Materials _in 2 = Materials _in ⊳⊲Warehouse2 Materials _in 3 = Materials _in ⊳⊲Warehouse3

Phân mảnh dọc (vertical fragmentation) :Phân mảnh dọc là chúng ta gom những thuộc tính thường được truy xuất chung với nhau vào một mảnh. Để tiến

hành phân mảnh dọc chúng ta cần một số thông tin có liên quan đến ứng dụng (các câu truy vấn) và các quan hệ giữa các thuộc tính, giữa các ứng dụng với các thuộc tính:

- Ma trận sử dụng thuộc tính: biểu diễn mối liên hệ giữa các câu truy vấn và các thuộc tính.

- Ma trận lực hút AA: Đo lực hút giữa 2 thuộc tính (Ai,Aj).

- Ma trận lực hút tụ nhóm: đã gom nhóm các thuộc tính lại với nhau (các thuộc tính có số đo lực hút gần bằng nhau thì được xếp kề nhau).

Lý do chính trong tập trung là sử dụng nó làm một công cụ thiết kế, cho phép các vấn tin ảnh hưởng đến các quan hệ nhỏ hơn, vì thế giảm bớt số truy xuất và tiết kiệm bộ nhớ. Phân mảnh dọc phức tạp hơn phân mảnh ngang do tổng số chọn lựa có thể có của phân mảnh dọc rất lớn. Vì vậy để có được lời giải tối ưu cho bài toán phân mảnh dọc thực sự rất khó, vì thế người ta hay dùng phương pháp heuristic. Ví dụ 2.3:

PROJ1 : Thông tin về kinh phí của đề án PROJ2 : Thông tin về tên và vị trí của đề án

PROJ

PNO PNAME BUDGET LOC

P1 Instrumentation 150000 Montreal P2 Database Develop, 135000 New York P3 CAD/CAM 250000 New York P4 Maintenance 310000 Paris P5 CAD/CAM 500000 Boston

PROJ1 PROJ2

PNO BUDGET PNO PNAME LOC

P1 150000 P1 Instrumentation Montreal

P2 135000 P2 Database Develop, New York

P3 250000 P3 CAD/CAM New York

P4 310000 P4 Maintenance Paris

P5 500000 P5 CAD/CAM Boston

Hình 2.7 Phân mảnh dọc

Phân mảnh hỗn hợp (hybrid fragmentation) : Trong nhiều trường hợp, phân mảnh ngang hoặc phân mảnh dọc đơn giản cho một lược đồ CSDL không đủ đáp ứng các yêu cầu từ ứng dụng. Trong trường hợp đó phân mảnh dọc có thể thực hiện

sau một số mảnh ngang hoặc ngược lại, sinh ra một lối phân hoạch có cấu trúc cây. Bởi vì hai chiến lược này được áp dụng lần lượt, lựa chọn này được gọi là phân mảnh hỗn hợp.

Hình 2.8 Mô hình Phân mảnh hỗn hợp

Các tính chất phân mảnh

Một vấn đề quan trọng của phân mảnh ảnh hưởng đến hiệu năng thực hiện vấn tin là phân mảnh CSDL đến mức độ nào ? Thực tế mức độ phân mảnh có thể từ thái cực không phân mảnh nào đến thái cực phân mảnh thành từng bộ (trường hợp phân mảnh ngang) hoặc thành từng thuộc tính (trường hợp phân mảnh dọc). Có ba qui tắc trong phân mảnh đảm bảo CSDL không thay đổi ngữ nghĩa khi 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 một hoặc vài mảnh nào đó.

Tính tái thiết (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 tái thiết yêu cầu “hợp” các phân mảnh của quan hệ r để khôi phục 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:

1 n i i r r   

Trong đó toán tử ∆ hay đổi tuỳ theo từng loại phân mảnh. Khả năng tái thiết một quan hệ từ các mảnh của nó cũng phải đảm bảo rằng các ràng buộc định nghĩa theo sự phụ thuộc dữ liệu phải được bảo toàn.

Tính tách biệt (disjointness): Cho quan hệ r bất kỳ. Giả sử r được phân rã thành các mảnh r1, r2, ... , 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ảnh dọ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ính tách biệt chỉ áp dụng với các thuộc tính không khoá.

2.5 Cấp phát (allocation problem)

Giả sử CSDL đã được phân mảnh thích hợp và cần phải quyết định cấp phát các mảnh cho các vị trí trên mạng. Khi dữ liệu được cấp phát, nó có thể được nhân bản hoặc chỉ duy trì một bản duy nhất. Một CSDL không nhân bản gọi là cơ sở dữ liệu phân hoạch, có chứa các mảnh được cấp phát cho các vị trí, trong đó chỉ tồn tại một bản duy nhất cho mỗi mảnh trên mạng. Kiểu cơ sở dữ liệu nhân bản có hai dạng:

• Cơ sở dữ liệu nhân bản hoàn toàn: trong đó toàn bộ CSDL đều có bản sao ở mỗi vị trí.

• Cơ sở dữ liệu nhân bản một phần, trong đó 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. Số lượng các bản sao của các mảnh có thể là tham số (input) cho các thuật toán cấp phát (allocation algorithm) hoặc là biến quyết định (decision variable) mà giá trị của nó được xác định bằng thuật toán này.

Để tối ưu hóa việc cấp phát dữ liệu cần thỏa mãn các yêu cầu sau:

Chi phí nhỏ nhất: Trong quá trình trao đổi dữ liệu và sử dụng không gian lưu trữ sao cho thời gian là nhỏ nhất.

Hiệu năng lớn nhất: Giảm thiểu thời gian trễ và tăng tối đa lưu lượng hệ thống ở mỗi vị trí.

Lý do nhân bản là nhằm đảm bảo được độ tin cậy và hiệu quả cho các câu vấn tin chỉ đọc. Nếu có nhiều bản sao của một mục dữ liệu thì chúng ta vẫn có cơ hội truy xuất được dữ liệu đó ngay cả khi hệ thống có sự cố. Hơn nữa các câu vấn tin chỉ đọc truy xuất đến cùng một mục dữ liệu có thể được thực hiện song song vì các bản sao có mặt tại nhiều vị trí. Ngược lại, trong CSDL nhân bản các câu vấn tin cập nhật có thể gây nhiều rắc rối vì phải đảm bảo các bản sao phải được cập nhật chính xác. Vì vậy quyết định nhân bản cần được cân nhắc và phụ thuộc vào tỉ lệ giữa các câu vấn tin chỉ đọc và câu vấn tin cập nhật. Quyết định này hầu như ảnh hưởng đến tất cả các thuật toán của hệ quản trị CSDL phân tán và các chức năng kiểm soát khác.

2.5.1 Bài toán cấp phát

Giả sử có tập các mảnh FF = {F1, ... , Fn } và mạng bao gồm các vị trí SS ={

S1,... , Sm } mà trên đó có tập ứng dụng QQ = {q1 ,..., ql} đang chạy. Bài toán cấp phátlà tìm phân phối tối ưu của FF cho SS. Vấn đề cấp phát phải đảm bảo tối ưu và được thể hiện thông qua 2 tham số:

Chi phí nhỏ nhất: Hàm chi phí gồm có chi phí lưu mỗi mảnh Fitại vị trí Sj, chi phí vấn tin Fi tại vị trí Sj, chi phí cập nhật Fitại tất cả mọi vị trí chứa nó và chi phí truyền dữ liệu. Bài toán cấp phát cố gắng tìm lược đồ cấp phát với hàm chi phí tổ hợp thấp nhất.

Hiệu năng: Chiến lược cấp phát được thiết kế nhằm duy trì hiệu năng hữu hiệu. Các chiến lược đã biết là giảm thời gian đáp ứng và tăng tối đa lưu lượng hệ thống tại mỗi vị trí.

Một lược đồ cấp phát hoàn hảo là là lược đồ cho trả lời câu vấn tin trong thời gian ngắn nhất mà vẫn duy trì chi phí xử lý thấp nhất. Do tính phức tạp của bài toán nên người ta mới chỉ giải quyết những trường hợp đơn giản.

Để bài toán đơn giản hơn, giả sử rằng:

1. Tập các ứng dụng Q chỉ có khả năng vấn tin cập nhật (Update Query) và vấn tin chỉ đọc (Retrieval only Query). Trên mảnh Fk bao gồm các đại lượng sau:

U = {u1,u2,…,um}, với ui là lưu lượng cập nhật tại Si cho Fk

2. Giả sử C(T) = {c12, c13, c1m, …, cm-1,m}, với cij là chi phí truyền một đơn vị cho các yêu cầu chỉ đọc giữa node Si và Sj là không thay đổi.

Chi phí cập nhật và chỉ đọc ký hiệu là:

C’(U) = {c’12, c’13, …, c’1m, …, c’m-1,m} với c’ij là chi phí truyền một đơn vị cho các yêu cầu cập nhật giữa các node Si và Sj,

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng mô hình cơ sở dữ liệu phân tán cho hệ thống quản lý vật tư tại công ty FPT telecom hà nội (Trang 35 - 48)