检查成功则开始分解。查询分解按照以下原则进行:
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服务接口,提交查询,查询经过分解,路由到网络上的其它中间件,执行,最终返回结果给客户端。
文章来源于领测软件测试网 https://www.ltesting.net/