Chiến lược Contact X Services và Services X Contact bị cắt bỏ (pruned) bởi vì đâylà những sản phẩm của tích Đề-các nên sẽ thay thế bởi các chiến lược khác. Contact ⊳⊲ServiceRecord và ServiceRecord⊳⊲ Services cũng bị cắt bỏ vì giả sử chúng chi phí cao hơn chiến lược tương tự là ServiceRecord ⊳⊲
Contact và Service⊳⊲ServiceRecord.
Hai khả năng còn lại được đưa ra ở cấp độ thứ ba của cây thứ tự nối là (ServiceRecord ⊳⊲ Contact) ⊳⊲ Services và (Servies ⊳⊲ ServiceRecord) ⊳⊲
Contact. Thứ tự nối có tổng tổng cộng tốt nhất là thứ tự có chi phí nhỏ hơn, như vậy (Servies ⊳⊲ ServiceRecord) ⊳⊲ Contact có chỉ mục sẽ có lợi trên thuộc tính chọn và truy cập trực tiếp đến các bộ giá trị nối của ServiceRecord và Contact vì vậy, nó được chọn với các phương pháp truy cập sau đây :
Chọn Servies bằng việc sử dụng chỉ mục trên ServieName
Sau đó nối với ServiceRecord bằng cách sử dụng chỉ mục trên ServiceID
Sau đó nối với Contact bằng cách sử dụng chỉ mục trên ContactID
3.3.2 Thuật toán tối ưu toàn cục
(Services⊳⊲ServiceRecord) ⊳⊲ Contact
(ServiceRecord⊳⊲Contact) ⊳⊲ Serv ce
Services X Contact pruned Services ⊳⊲ ServiceRecord ServiceRecord ⊳⊲ Services pruned ⊳⊲ ServiceRecord Contact Contact X Services pruned Contact ⊳⊲ServiceRecord pruned Services ServiceRecord Contact
3.3.2.1 Thuật toán phân tán INGRES(D- INGRES)
Thuật toán phân tán INGRES là sự mở rộng của thuật toán INGRES trong tối ưu cục bộ (xử lý tập trung), nó sử dụng chiến lược tối ưu vấn tin động. Hàm mục tiêu (Objective Function) của thuật toán này nhằm tối ưu chi phí giao tiếp giữa các trạm và thời gian đáp ứng truy vấn. Lưu ý rằng thuật toán tối ưu hóa truy vấn này bỏ qua các chi phí truyền dữ liệu đến các trạm nhận kết quả và sử dụng phương pháp phân mảnh ngang.
Đầu vào của thuật toán là một vấn tin phép tính và thông tin về loại mạng, vị trí và kích thước mỗi mảnh. Thuật toán này thực hiện bởi trụ sở chính(master trạm), nơi mà truy vấn được phát đi[13, 15].
Thuật toán 3.3: Thuật toán phân tán INGRES(Dynamic*-QOA)[15]
Đầu vào: MRQ: truy vấn trên n quan hệ
Đầu ra: kết quảtruy vấn con cuối cùng
Bắt đầu:
for mỗi truy vấn có thểphân rã ORQitrong MRQdo
run(ORQi) (1)
{MRQ phân rã thành n truy vấn tối giản}
MRQ'_list ←REDUCE(MRQ) (2)
whilen ≠0 do {n là sốtruy vấn tối giản} (3)
{chọn truy vấn tối giản tiếp theo liên quan đến mảnh nhỏnhất}
MRQ'←SELECT_QUERY(MRQ'_list) (3.1)
{xác định mảnh tương ứng đểtruyền và xửlý MRQ'}
Fragment-site-list ←SELECT_STRATEGY(MRQ'); (3.2)
{chuyển mảnh được chọn F tới trạm xửlý Stương ứng}
for mỗi cặp(F, S) trong Fragment-site-listdo
di chuyển đoạn F đến trạm S (3.3)
run(MRQ') (3.4)
n ← n – 1
{dữliệu ra của thuật toán là kết quảcủa MRQ' cuối cùng}
Kết thúc
Việc tối ưu hóa truy vấn được về cơ bản thực hiện tại bước 3 trong thuật toán phân tán INGRES. Trong thuật toán này, các truy vấn con được sản sinh tùy thuộc vào một số thành phần và trật tự phụ thuộc của chúng. Khi mối quan hệ liên quan đến một truy vấn con có thể được phân mảnh và được lưu trữ tại các trạm khác nhau, truy vấn con không thể được chia nhỏ hơn nữa. Khó khăn
vấn liên quan đến n quan hệ, các mảnh từ n-1 quan hệ sẽ được sẽ được chuyển tới trạm của mảnh còn lại và nhân bản tại đó. Hơn nữa, các quan hệ có thể được chia thành nhiều mảnh để tăng tính song song. Chiến thuật này được gọi là phân mảnh và nhân bản, nghĩa là thực hiện thay thế các mảnh chứ không phải tất cả các bộ như thuật toán INGRES tập trung.
Việc lựa chọn các quan hệ còn lại và số lượng của các trạm xử lý phụ thuộc vào hàm mục tiêu và lược đồ giao tiếp. Nếu số trạm xử lý tăng, thời gian trả lời truy vấn sẽ giảm bằng xử lý song song nhưng tổng thời gian sẽ tăng.
Ví dụ 3.6: Xét Nghiệp vụ 2.1 trong phần 2.5, q là truy vấn “Lấy về danh sách
các nhân viên thuộc quận Cầu giấy và có trạng thái là đang hoạt động”
Các quan hệ có liên quan đến q bao gồm: Contact, Organisation, Department, Team. Các quan hệ này được phân mảnh tại hai trạm khác nhau như sau:
Trạm 1 Trạm 2 Organisation Contact
Department Team
Có một vài chiến lược để thực thi truy vấn như sau:
(1). Thực thi truy vấn nối Organisation ⊳⊲(Department⊳⊲ Team ⊳⊲ Contact) bằng cách di chuyển Organisation sang trạm 2.
(2). Thực thi truy vấn (Department ⊳⊲ Team ⊳⊲ Contact) ⊳⊲
Organisation) bằng cách chuyển (Department ⊳⊲ Team ⊳⊲ Contact) sang trạm 1.
(3). Thực thi truy vấn (Organisation) ⊳⊲ (Department ⊳⊲ Team ⊳⊲ Contact) bằng cách chuyển Organisation và (Department ⊳⊲ Team ⊳⊲ Contact) sang trạm chủ nơi phát ra tín hiệu vấn tin
Lựa chọn chiến nào cho phù hợp cần được cân nhắc phụ thuộc vào kích thước của kết quả trung gian. Nếu size(Department ⊳⊲ Team ⊳⊲ Contact) lớn hơn size(Organisation) thì chiến lược thứ nhất sẽ được ưu tiên hơn và ngược lại. Trên thực tế, size (Organisation) = 6 * 900 bản ghi tức là khoảng 5400bytes, trongkhi đó kích thước size(Department ⊳⊲ Team ⊳⊲ Contact) lại lớn hơn rất nhiều lần vì vậy chiến lược thứ nhất sẽ được lựa chọn.
3.3.2.2 Thuật toánphân tán SYSTEM R*
Thuật toán tối ưu hóa truy vấn phân tán SYSTEM R* là sự mở rộng của thuật toán tối ưu hóa truy vấn tập trung SYSTEM R, SYSTEM R* chỉ áp dụng cho những bài toán mà toàn bộ quan hệ được phân tán, những bài toán mà quan hệ được phân mảnh hoặc nhân bản thì không phải là một lựa chọn phù hợp [15]. Trụ sở chính là nơi khởi tạo và phán tán truy vấn, lựa chọn trạm sẽ thực thi truy
vấn, xác định thứ tự phép nối, phương thức truyền tải dữ liệu. Còn trạm địa phương sẽ thực hiện tối ưu hóa cục bộ.
Thứ tự của phép nối và truyền tải dữ liệu giữa các trạm khác nhau là những vấn đề quan trọng được xử lý bởi trụ sở chính. Có hai phương thức để truyền tải dữ liệu liên trang:
Truyền toàn bộ: toàn bộ quan hệ được gửi tới trạm nối và được lưu trữ tạm thời. Phương thức này có đặc điểm là có thể truyền một lượng lớn dữ liệu, có ít thông điệp và thực hiện tốt nhất trong trường hợp số quan hệ là nhỏ.
Lấy khi cần: quan hệ bên ngoài (tức là quan hệ xuất hiện đầu tiên trong câu truy vấn giữa hai quan hệ) được quét liên tục và với mỗi bộ mà giá trị được nối thì sẽ gửi tới trạm của quan hệ bên trong (tức là quan hệ có liên quan của phép nối) để thực thi truy vấn, dữ liệu truy vấn được sẽ được gửi lại trạm của quan hệ bên ngoài.
Hàm tối ưu của thuật toán này là giúp giảm tổng thời gian truy vấn, bao gồm cả thời gian xử lý cục bộ tại các trạm và thời gian giao tiếp giữa các trạm.
Thuật toán 3.4. Thuật toán phân tán SYSTEM R* (Static*-QOA) [15]
Đầu vào: QT: cây truy vấn {QT: query tree}
Đầu ra:strat: chiến lược có chi phí thấp nhất
Bắt đầu
for mỗi quan hệri∈ QT do
for mỗi đường dẫn truy cập APijtớirido
tính chi phí (APij)
best_APi←APijvới chi phí nhỏ nhất
formỗi thứ tự (ri1, ri2,..., rin) với i = 1,..., n!do
xây dựng chiến lược(...((best APi1⊳⊲ri2) ⊳⊲ri3) ⊳⊲ ...⊳⊲ rin)
tính chi phí của chiến lược
strat←chiến lược với chi phí thấp nhất
formối trạm k lưu trữ một quan hệ liên quan trong QTdo
LSk←chiến lược cục bộ (chiến lược, k);
send (LSk, trạm k) {mỗi chiến lược cục bộ được tối ưu tại trạm k}
Kết thúc
Giả sử quan hệ bên ngoài r thực hiện nối với quan hệ bên trong s trên thuộc tính A, sẽ có bốn chiến lược nối. Trong mỗi chiến lược này, LT (local
đơn gian, các chiến lược này không quan tâm đến thời gian sản sinh kết quả. Ký hiệu dlà trung bình các bộ của s khớp với một bộ của r:
d = ( ⋉ )
( ) (card: cardinality)
Chiến lược 1: chuyển toàn bộ quan hệ bên ngoài tới trạm của quan hệ bên trong
rồi thực hiện nối. Tổng chi phí (Total cost) trong chiến lược này như sau:
Total_cost= LT(lấy các bộ card(r)từ r) + CT(size(r))
+ LT(lấy các bộ dtừ s) * card(r)
Chiến lược 2: chuyển toàn bộ quan hệ bên trong tới trạm của quan hệ bên ngoài. Trong trường hợp này, các bộ dữ liệu nội bộ không thể được nối khi chúng được truyền đến nơi, và cần phải được lưu trữ trong một quan hệ tạm thời
t. Vì vậy, tổng chi phí của chiến lược này như sau:
Total cost= LT(lấy các bộcard(s)từ s) + CT(size(s)) + LT(lưu trữ các bộ card(s)trong t)
+ LT(lấy các bộ card(r)từ r) + LT(lấydbộtừ t) * card(r)
Chiến lược 3: lấy các bộ cần thiết của quan hệ bên trong cho mỗi bộ của quan
hệ bên ngoài. Trong trường hợp này, mỗi bộ trong r, giá trị thuộc tính nối sẽ chuyển tới trạm của s. Sau đó, d bộ dữ liệu của smà phù hợp với giá trị được lấy ra và gửi đến các trang trạmcủa rđể được nối khi nhận được. Vì vậy, tổng chi phí của chiến lược này như sau:
Total cost= LT(lấy các bộ card(r)từ r) + CT(length(A)) *card(r)
+ LT(lấy dbộ từ s) * card(r)+ CT(d * length(s)) *card(s)
Chiến lược 4: Di chuyển cả hai quan hệ đến một trạm thứ ba và thực hiện nối tại
đó. Trong trường hợp này quan hệ bên trong sẽ được chuyển đầu tiên đến trạm thứ ba và được lưu trữ trong một mối quan hệ tạm thời t. Sau đó, quan hệ bên ngoài được chuyển đến và thực hiện phép nối với t. Vì vậy, tổng chi phí của chiến lược này như sau:
Total cost= LT(lấy các bộ card(s)từ s) + CT(size(s))
+ LT(lưu các bộ card(s)trong t) + LT(lấy các bộ card(r)từ r) + CT(size(r)) + LT(lấy dbộ từ t) * card(r)
Phần trên giới thiệu hai thuật toán tối ưu truy vấn toàn cục: thuật toán phân tán Ingres (D-INGRES) và thuật toán R*. Các thuật toán này đều phụ thuộc vào các yếu tố như hàm mục tiêu, chiến lược tối ưu, kiểu mạng. Dưới đây là bảng so sánh, đánh giá về hai thuật toán trên [13]:
Bảng 3.1 So sánh các thuật toán
toán tiêu lược giao tiếp nối nửa mảnh D- Ingres Tổng thời gian trả lời vấn tin Tối ưu động Chuẩn hoặc quảng bá Thông điệp
Chi phí truyền tải
Chi phí xử lý Không Ngang R* Tổngchi phí đo lường Tối ưu tĩnh Chuẩn hoặc cục bộ Thông điệp
Chi phí truyền tải
dữ kiệu
Chi phí I/O và CPU
Không Không
CHƯƠNG 4. CÀI ĐẶT THỰC NGHIỆM 4.1 Hệ thống mạng của cơ sở dữ liệu
Hệ thống AP SD đã được cài đặt thực nghiệm trên môi trường mạng LAN, dữ liệu được phân tán tại các trạm và phân mảnh như đã phân tích trong Chương 3. Về môi trường triển khai, cấu hình, dữ liệu được mô tả như sau:
- Trạm thứ nhất là trạm chủ nơi phát ra các yêu cầu vấn tin
Tiêu chí Thông tin Ghi chú
Địa chỉ Ip máy/Tên miền 192.168.1.35/
1FWADIEUNT1-LT
Hệ điều hành Windows 7
Vi xử lý Intel core i3
Bộ nhớ chính (RAM) 4GB
Hệ quản trị CSDL SQL Server 2008 R2
- Trạm thứ hai đặt tên CSDL là APSD_GM(AP Service Directory General Manager), chứa các bảng BusinessType, County, Organisation và SrvInformation (xem Hình 2.6):
Tiêu chí Thông tin Ghi chú
Địa chỉ Ip máy/Tên miền 192.168.1.36/ 1FWADIEUNT1
Hệ điều hành Windows 7
Vi xử lý Pentium ® Dual-Core
Bộ nhớ chính (RAM) 2GB
Hệ quản trị CSDL SQL Server 2008 R2
Tiêu chí Thông tin Ghi chú
Địa chỉ Ip máy/Tên miền 192.168.1.37/ 1FWADIEUNT1
Hệ điều hành Windows 7
Vi xử lý Pentium ® Dual-Core
Bộ nhớ chính (RAM) 2GB
Hệ quản trị CSDL SQL Server 2008 R2
Luận văn sử dụng tính năng phân tán dữ liệu của SQL Server 2008 R2 (Publication), và cơ chế Linked Server cho phép kết nối từ xa đến một máy chủ cơ sở dữ liệu khác: