首页 理论教育分布式数据库技术中的本地化查询

分布式数据库技术中的本地化查询

【摘要】:查询分解是把分布演算查询映射到一个全局关系的代数查询上。从代数优化看,使用直接分步骤的算法可以获得一个“好的”结果,但是,进一步看未必是最佳的。换句话说,每次选最好的,不见得最终结果是最佳的。就像有一筐苹果,每天选一个质量最好的苹果吃,不见得是最好的吃法。数据定位决定查询涉及哪些数据片,并将分布查询转化成分片查询。

首先我们讨论离网优化。由于最初的优化不涉及网络问题,所以称为离网优化。在POREL/C-POREL系统中,它处于NUA(离网分析)层。

下面讨论查询分解和数据定位问题。

查询分解是把分布演算查询映射到一个全局关系的代数查询上。在这个层面上,查询分解使用的还是集中式DBMS上的技术,因为此时还不考虑关系分布问题。

从代数优化看,使用直接分步骤的算法可以获得一个“好的”结果,但是,进一步看未必是最佳的。换句话说,每次选最好的,不见得最终结果是最佳的。就像有一筐苹果,每天选一个质量最好的苹果吃,不见得是最好的吃法。因为随着时间的流逝,苹果的质量在不断地变坏,有些最初符合食用标准的苹果老轮不上吃,最后变得不符合食用标准而被丢弃。

数据定位的工作是分析输入,然后将全局关系上的查询进行分解。数据定位是将全局关系上分解后的查询作为输入,再将数据分布信息应用到查询上,并绑定到确切的数据上。数据定位决定查询涉及哪些数据片,并将分布查询转化成分片查询。

查询分解是查询处理的第一个阶段,它把关系演算查询转换成关系代数查询。这里的输入/输出都是指全局关系,不涉及数据分布。因此,查询分解在集中式系统和分布式系统中是一样的。我们先假设查询的语法都是正确的,当这个阶段成功完成时,输出的查询语义也是正确的。

我们把查询分解分成如下步骤。(www.chuimin.cn)

第一步:查询规范化(normalization)。

第二步:查询分析(analysis)。

第三步:约简冗余(elimination of redundancy)。

第四步:重写(rewriting)。

第一步、第三步、第四步与等价变换相关,前三步的查询基本上可以用关系演算(如SQL)描述,最后一步变换成关系代数形式。