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 chính trong bước 3.2là xác định làm thế nào để thực hiện các truy vấn con bằng
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.