檢查成功則開始分解。查詢分解按照以下原則進行:
1> 獨立查詢分裂:以所需連接中間件為單位,將查詢分解為一組子查詢,每一組子查詢都對應一個單獨的數據源。
2> 依照相關性進行多庫查詢分裂:兩個中間件數據需要進行匹配的查詢首先分解為對其中單一中間件的獨立子查詢,取出該獨立子查詢的結果數據生成匹配另一個中間件數據的子查詢,從而實現兩個中間件所連接數據需要匹配的查詢操作。
分解實例:
DEFINE[server1.db1.table1=a][server2.db2.table2=b][server3.db3.table3=c]
SELECT [a.*][b.*]
FROM[a][b]
WHERE[a.begintime>'2004-9-8'][a.id>c.id][a.id=b.id] ADDITION[a.di=DISTINCT]
依據分解原則分解過程如下:
1>分解出獨立子查詢,并記為新的查詢單元變量
DEFINE[ SELECT[a.*]FROM[a]WHERE[a.begintime>'2004-9-8']
ADDITION[a.di=DISTINCT] = d ]
2>在獨立子查詢的基礎上進行多庫查詢分裂,每次查詢記為新的查詢單元變量
DEFINE[ SELECT[d.*]FROM[d]WHERE[d.id>c.id] = e]
DEFINE[ SELECT[e.*][b.*]FROM[e][b]WHERE[e.id=b.id] = f]
查詢結束,f記錄查詢結果。
3.2應用描述
國內各航空公司都研發自身的航空信息系統,利用基于WEB服務的異構數據庫集成中間件綜合各大航空公司的數據信息為用戶提供查詢服務。描述如下:
1>首航,東航,南航,川航分別安裝集成中間件,進行本地配置,分別連接到自身的航空信息數據庫,同時配置和其它集成中間件的連接,從而構成一個航空信息共享網絡。
2>客戶透過其中任意一個中間件提供的WEB服務接口,提交查詢,查詢經過分解,路由到網絡上的其它中間件,執行,最終返回結果給客戶端。
文章來源于領測軟件測試網 http://www.kjueaiud.com/