DA = (DA1 DA2) * ( MADA, VT(DA3 DA4))
Ta có cây phân mảnh của quan hệ toàn cục DA:
Nút gốc (quan hệ DA) được phân mảnh dọc gom tụ dư thừa thành hai mảnh:
+ mảnh thứ nhất được phân mảnh ngang thành hai mảnh tạo ra nút lá khác tương ứng với các mảnh DA1, DA2.
+ mảnh thứ nhất được phân mảnh ngang thành hai mảnh tạo ra nút lá khác tương ứng với các mảnh DA3, DA4.
Ví dụ 2.10: Cây phân mảnh của quan hệ toàn cục NV trong ví dụ 2.8
- Với lược đồ phân mảnh và biểu thức tái tạo
NV1 = MAP 10 ( MANV, HOTEN, MAQL, MAP (NV))
Có thể bạn quan tâm!
- Điều Kiện Đúng Đắn Để Phân Mảnh Dữ Liệu
- Cây Phân Mảnh Dẫn Xuất Của Hệ Thống Quản Lý Dự Án
- Cơ sơ dữ liệu phân tán - 9
- Truy Xuất Csdl Ql Dự Án Khi Ddbms Với Trong Suốt Vị Trí
- Truy Xuất Csdl Ql Kinh Doanh Khi Ddbms Với Trong Suốt Ánh Xạ Cục Bộ
- Truy Xuất Csdl Sau Khi Nhập Vào Tất Cả Các Giá Trị
Xem toàn bộ 312 trang tài liệu này.
NV2 =MAP >10 AND MAP < 20 ( MANV, HOTEN, MAQL, MAP (NV)) NV3 =MAP 20 ( MANV, HOTEN, MAQL, MAP (NV))
NV4 = MANV, HOTEN, LUONG, THUE (NV)
NV = (NV1 NV2 NV3) MANV = MANV MANV, LUONG, THUE (NV4)
Ta có cây phân mảnh của quan hệ toàn cục NV:
Nút gốc (quan hệ NV) được phân mảnh dọc thành hai mảnh:
+ một mảnh tương ứng với nút trái của cây (NV4);
+ mảnh khác được phân mảnh ngang tạo ra ba nút lá khác tương ứng với các mảnh NV1, NV2, và NV3.
2.2. Tính trong suốt phân mảnh dùng cho các ứng dụng chỉ đọc
2.2.1. Các mức trong suốt phân tán
Tính trong suốt được hiểu như là việc che khuất đi các thành phần riêng biệt đối với người sử dụng và người lập trình ứng dụng.
Trong phần này, chúng ta phân tích các mức độ trong suốt khác nhau có thể được cung cấp bởi một DBMS cho các ứng dụng chỉ đọc.
Các mức trong suốt phân tán:
- Trong suốt phân mảnh (fargmentation transparency): Là trong suốt cao nhất cho phép người sử dụng hoặc người lập trình ứng dụng làm việc trên các quan hệ toàn cục mà không cần biết dữ liệu có được phân tán hay không.
- Trong suốt vị trí (location transparency): Là trong suốt thấp hơn cho phép người sử dụng hoặc người lập trình ứng dụng làm việc trên các mảnh mà không biết các mảnh được đặt tại các nơi nào.
- Trong suốt ánh xạ cục bộ (local mapping transparency): Là một đặc tính quan trọng trong hệ thống DBMS không đồng nhất, là ánh xạ từ các thao tác cơ bản được sử dụng bởi chương trình ứng dụng thành các thao tác cơ bản được sử dụng bởi DBMS cục bộ.
- Không trong suốt (no transparency).
2.2.2. Chương trình cho các ứng dụng chỉ đọc
- Viết theo ngôn ngữ tựa PASCAL (PASCAL- like language) có nhúng các lệnh SQL.
- Các thủ tục chuẩn:
Read(terminal,
+ terminal: là tên tập tin (việc nhập xuất được thực hiện tại thiết bị đầu cuối thì tên tập tin terminal sẽ được sử dụng)
+ iv1,…,ivn: là danh sách các tham số nhập
+ ov1,…,ovn: là danh sách các tham số xuất
- Cách khai báo các tham số (nhập, xuất) trong ứng dụng:
+ $Variable_Name
+ Tham số nhập xuất hiện trong mệnh đề Where
+ Tham số xuất xuất hiện trong mệnh đề Select
- Lệnh truyền dữ liệu: Send
- Kiểm tra kết quả truy vấn: sử dụng biến logic #FOUND, có giá trị là true khi kết quả của truy vấn là khác rỗng.
- Kiểm tra các thao tác: sử dụng biến #OK, có giá trị là true chỉ khi thao tác đã được thực hiện đúng bởi DBMS (các biến này thường được gọi là „các mã điều kiện‟ trong các DBMS).
- Lệnh SQL: Định nghĩa một thao tác cơ bản truy xuất CSDL Ví dụ 2.11: Xét truy vấn
read(terminal, $MADA); select TENDA Into $TENDA from DA
where MADA = $MADA; if #FOUND then
write (terminal, $TENDA)
else write (terminal, “Không tìm thấy”)
Thủ tục:
- Nhận biến $MADA như là một tham số
- Chọn tên dự án có mã dự án là giá trị của $MADA
- Trả về tên này cho chương trình tựa – Pascal thông qua biến $TENDA.
Ví dụ 2.12: Xét hệ thống quản lý dự án của một công ty phát triển phần mềm trong ví dụ 1.5. Giả sử công ty có văn phòng ở Nam Định, Hà Nội.
Giả sử ta có:
- Lược đồ phân mảnh:
DA 1=VT = “Nam Định” (DA) DA 2=VT = “Hà Nội” (DA)
HS1= HS
HS2= HS
- Lược đồ định vị:
HS.MaDA= DA.MaDADA1 HS.MaDA= DA.MaDADA2
Nơi 1: Nam Định; Nơi 2: Hà Nội; Nơi 3: Miền Bắc DA1, HS1 ở nơi 1
DA2, HS2 ở nơi 2, nơi 3
Giả sử có các ứng dụng:
a) Ứng dụng 1: Cho biết tên dự án, vị trí của dự án có mã dự án được nhập từ thiết bị đầu cuối.
b) Ứng dụng 2: Cho biết tên dự án được triển khai bởi nhân viên có mã nhân viên được nhập từ thiết bị đầu cuối. Giả sử dự án này được thực hiện bởi một nhân viên.
Ví dụ 2.13: Xét hệ thống quản lý kinh doanh của một công ty, với
- Lược đồ toàn cục:
NV(MANV, HOTEN, LUONG, THUE, MAQL, MAP) PH(MAP, TENP, MIEN, MAQL)
NCC(MANCC, TENNCC, DC) MH(MAMH, TENMH, DVT, MAU) KD(MANCC, MAMH, MAP, SL, DG)
Trong đó: MANV-Mã nhân viên, HOTEN-Họ tên, LUONG-Lương của nhân viên, THUE-Mức thuế, MAQL-Mã nhà quản lý (Mã trưởng phòng), MAP-Mã phòng, TENP-Tên phòng, MIEN-Vùng miền, MANCC-Mã nhà cung cấp, TENNCC-Tên nhà cung cấp, DC-Địa chỉ nhà cung cấp, MAMH-Mã mặt hàng, TENMH-Tên mặt hàng, DVT-Đơn vị tính, MAU-Màu, SL-Số lượng, DG-Đơn giá.
- Lược đồ phân mảnh:
NV1 =MAP ≤10 ( MANV, HOTEN, MAQL, MAP (NV))
NV2 =MAP >10 AND MAP < 20 ( MANV, HOTEN, MAQL, MAP(NV)) NV3 =MAP 20 ( MANV, HOTEN, MAQL, MAP(NV))
NV4 = MANV, HOTEN, LUONG, THUE (NV) PH1=MAP ≤ 10(PH)
PH2=MAP >10 AND MAP < 20 (PH) PH3=MAP 20 (PH)
NCC1=DC = „Miền Bắc‟ (NCC) NCC2=DC = „Miền Nam‟(NCC)
KD1 = KD MANCC = MANCC NCC1 KD2 = KD MANCC = MANCC NCC2
- Lược đồ định vị:
Nơi 1: Miền Bắc; Nơi 2: Miền Nam; Nơi 3: Miền Trung; Nơi 4: Trường Xa; NCC1 ở nơi 1, nơi 2
NCC2 ở nơi 2
KD1 ở nơi 3 KD2 ở nơi 4
Giả sử có các ứng dụng:
a) Ứng dụng 1: Cho biết tên nhà cung cấp có mã nhà cung cấp được nhập từ thiết bị đầu cuối.
b) Ứng dụng 2: Cho biết số nhà cung cấp có địa chỉ được nhập từ thiết bị đầu cuối.
c) Ứng dụng 3: Cho biết tên nhà cung cấp mà họ cung cấp một mặt hàng có mã mặt hàng được nhập từ thiết bị đầu cuối. Giả sử một mặt hàng chỉ được cung cấp bởi một nhà cung cấp
1) Trong suốt phân mảnh (fargmentation transparency)
- Khi dữ liệu được phân mảnh thì việc truy nhập vào dữ liệu được thực hiện bình thường như chưa bị phân tán (làm việc trên quan hệ toàn cục) mà không cần biết quan hệ toàn cục có bị phân tán hay không và không ảnh hưởng đến người sử dụng.
- Trong suốt phân mảnh liên quan đến:
+ Lược đồ toàn cục
+ Quan hệ toàn cục
- DDBMS thực hiện truy xuất các CSDL tại một nơi bất kỳ trong tất cả các nơi, mà nơi này hoàn toàn được xác định bởi hệ thống.
- Ứng dụng hoàn toàn không bị ảnh hưởng bởi bất kỳ thay đổi nào trong tất cả các lược đồ nằm dưới lược đồ toàn cục trong kiến trúc tham chiếu.
Cấu trúc chương trình
- Bước 1: Nhận một tham số từ chương trình tựa- Pascal
Read(terminal, $iv1,…, $ivn)
- Bước 2: Truy xuất CSDL
Select fn1 Into $ov1,…., fnn Into $ovn
From R1, R2,…,Rn
Where
Trong đó:
+ fn1,….,fnn là tên các trường
+ R1, R2,…, Rn là các quan hệ toàn cục
- Bước 3: Trả về kết quả như là một tham số
If #FOUND then
Write (terminal, $ov1, …., $ovn)
else write (terminal, “Không tìm thấy”)
Ví dụ 2.14 : Xét hệ thống quản lý dự án trong ví dụ 2.12
Hình 2.3 cho thấy cách thức mà ứng dụng truy xuất CSDL quản lý dự án khi DDBMS cung cấp trong suốt phân mảnh.
Hình 2.3. Truy xuất CSDL Quản lý dự án khi DDBMS với trong suốt phân mảnh
a) Với ứng dụng 1:
Read(terminal, $MADA);
Select TENDA Into $TENDA, VT Into $VT From DA
Where MADA = $MADA; If #FOUND then
Write (terminal, $TENDA, $VT);
Else write (terminal, “Không tìm thấy”);
Chương trình này nhập một mã dự án và tìm tên dự án, vị trí của dự án có mã được nhập. DDBMS diễn dịch thao tác cơ bản này bằng cách truy xuất các CSDL tại một nơi bất kỳ trong ba nơi, mà nơi này hoàn toàn được xác định bởi hệ thống. Xuất phát từ quan điểm của tính trong suốt phân tán, ứng dụng tham chiếu đến tên quan hệ toàn cục DA mà hoàn toàn không quan tâm đến CSDL được phân tán. Bằng cách này, ứng dụng hoàn toàn không bị ảnh hưởng bởi bất kỳ thay đổi nào trong tất cả các lược đồ nằm dưới lược đồ toàn cục trong kiến trúc tham chiếu.
b) Với ứng dụng 2:
Read(terminal, $MANV);
Select TENDA Into $TENDA, VT Into $VT From DA, HS
Where MANV = $MANV and DA.MADA= HS.MADA;
If #FOUND then
Write (terminal, $TENDA, $VT);
Else write (terminal, “Không tìm thấy”);
Chương trình này nhập một mã nhân viên và tìm tên dự án, vị trí của dự án được thực hiện bởi nhân viên có mã được nhập. DDBMS diễn dịch thao tác cơ bản này bằng cách truy xuất các CSDL tại một nơi bất kỳ trong ba nơi, mà nơi này hoàn toàn được xác định bởi hệ thống. Xuất phát từ quan điểm của tính trong suốt phân tán, ứng dụng tham chiếu đến tên quan hệ toàn cục DA, HS mà hoàn toàn không quan tâm đến CSDL được phân tán và truy vấn toàn cục chứa một phép kết nối.
Ví dụ 2.15: Xét hệ thống quản lý kinh doanh trong ví dụ 2.13
Hình 2.4 cho thấy cách thức mà ứng dụng truy xuất CSDL quản lý kinh doanh khi DDBMS cung cấp trong suốt phân mảnh.
Hình 2.4. Truy xuất CSDL QL Kinh doanh khi DDBMS với trong suốt phân mảnh
a) Với ứng dụng 1:
Read(terminal, $MANCC); Select TENNCC Into $TENNCC From NCC
Where MANCC = $ MANCC;
If #FOUND then
Write (terminal, $TENNCC);
Else write (terminal, “Không tìm thấy”);
Chương trình này nhập một mã nhà cung cấp và tìm tên nhà cung cấp có mã được nhập. DDBMS diễn dịch thao tác cơ bản này bằng cách truy xuất các CSDL tại một nơi bất kỳ trong hai nơi, mà nơi này hoàn toàn được xác định bởi hệ thống. Xuất phát từ quan điểm của tính trong suốt phân tán, ứng dụng tham chiếu đến tên quan hệ toàn cục NCC mà hoàn toàn không quan tâm đến CSDL được phân tán.
b) Với ứng dụng 2:
Read(terminal, $DC);
Select DC, COUNT(MANCC) Into $SONCC
From NCC
Where DC = $DC; Group by DC
If #FOUND then
Write (terminal, $SONCC);
Else write (terminal, “Không tìm thấy”);
Chương trình này nhập một địa chỉ và đưa ra số nhân viên của địa chỉ đó. DDBMS diễn dịch thao tác cơ bản này bằng cách truy xuất các CSDL tại một nơi bất kỳ trong hai nơi, mà nơi này hoàn toàn được xác định bởi hệ thống.
c) Với ứng dụng 3:
Read(terminal, $MAMH); Select TENNCC Into $TENNCC From NCC, KD
Where MAMH = $MAMH and NCC.MANCC=KD.MANCC;
If #FOUND then
Write (terminal, $TENNCC);
Else write (terminal, “Không tìm thấy”);
Chương trình này nhập một mã mặt hàng và tìm tên nhà cung cấp đã cung cấp mặt hàng có mã được nhập. DDBMS diễn dịch thao tác cơ bản này bằng cách truy xuất các CSDL tại một nơi bất kỳ trong hai nơi, mà nơi này hoàn toàn được xác định bởi hệ thống và truy vấn toàn cục chứa một phép kết nối.
2) Trong suốt vị trí (location transparency)
- Nếu DDBMS cung cấp tính trong suốt vị trí mà không có tính trong suốt phân mảnh, người sử dụng không cần biết về vị trí vật lý của dữ liệu mà có quyền truy cập đến dữ liệu tại bất kỳ vị trí nào.
- Các thao tác để lấy hoặc cập nhật dữ liệu từ xa được tự động thực hiện bởi hệ thống tại điểm đưa ra yêu cầu.
- Trong suốt vị trí liên quan đến:
+ Lược đồ phân mảnh
+ Mảnh
- Ứng dụng này độc lập với những thay đổi trong lược đồ định vị, nhưng nó phụ thuộc vào những thay đổi trong lược đồ phân mảnh, bởi vì cấu trúc phân mảnh được kết hợp chặt chẽ trong ứng dụng.
- Tính trong suốt vị trí rất có ích, bởi vì nó cho phép các ứng dụng không xét đến mỗi mảnh có các bản nhân nào. Do đó nó cho phép các bản nhân được di chuyển từ nơi này đến nơi khác và cho phép tạo ra bản nhân mới mà không ảnh hưởng đến ứng dụng.
- Khi có tính trong suốt vị trí mà không có tính trong suốt phân mảnh thì các ứng dụng sẽ chạy rất hiệu quả trên cấu trúc phân mảnh.
- DDBMS thực hiện truy xuất theo các cách sau:
+ Tìm kiếm trên mảnh 1; Nếu DDBMS trả về biến điều khiển #FOUND là false thì việc tìm kiếm này được thực hiện tương tự đối với mảnh 2; Và cứ tiếp tục tìm kiếm trên các mảnh còn lại.
+ Việc tìm có thể thực hiện một cách đồng thời trên tất cả các mảnh; điều này nhằm để khai thác cơ chế song song hóa của hệ thống phân tán; tuy nhiên, điều này không thay đổi đặc tính phân tán trong suốt.
Trong trường hợp kết quả tìm kiếm được lấy từ nhiều quan hệ toàn cục thì sử dụng các chiến lược sau:
+ Sử dụng chiến lược vét cạn: Mỗi mảnh của quan hệ toàn cục này được kết nối với mỗi mảnh của quan hệ toàn cục kia để đưa ra các thông tin cần tìm.
+ Xét nội dung thông tin của lược đồ phân mảnh: Mỗi mảnh của quan hệ toàn cục này được kết nối với mỗi mảnh tương ứng của quan hệ toàn cục kia dựa trên lược đồ phân mảnh để đưa ra các thông tin cần tìm.
Cấu trúc chương trình
- Bước 1: Nhận một tham số từ chương trình tựa- Pascal
Read(terminal, $iv1,…, $ivn)
- Bước 2: Truy xuất CSDL