资 源 简 介
实验描述:分布式数据库的算法partition的具体实现。即通过该算法找到关系数据库最优分裂点,使得结果最优。
算法思想:
1、 首先根据所输入的attribute usage matrix得到AQ( )
2、 对CA矩阵中划分点预先设在n-1处,并将属性列分成两个集合,TA和BA,TA中的元为:{ A1 、A2 …… An-1 },BA中的元素为:{ An}
3、 确定集合TQ、BQ和OQ,其中TQ={ qj| AQ(qi) TA},BQ= TQ={ qj| AQ(qi) BA}, OQ=Q-{TQ BQ}。
4、 计算出CTQ、CBQ、COQ这些值,其中CTQ= ,CBQ= ,COQ=
5、 通过划分点的第次移动分别计算出z=CTQ*CBQ-COQ2
6、 对取到的z的最大值处标记,为分割点
7、 对CA进行调整,重复计算得到最终z的最大值点,对CA矩阵进行划分
8、 对上述算法进行修改,将得到的最大z值的分割点和次大的分割点都记录下来,得到两个分割,则将原有的属性集划分成三部分。
该算法的目的是找到独立存取的属性集合或者分别的应用集。比如说,如果可以找到两个属性A1,A2,他们只是被q1读取,而A3,A4被q2,q3读取,这样在分裂的时候可以确定。算法就是找到这些组。另外为了简单化起见,我命令refj(qi)全部等于1.