【技术实现步骤摘要】
一种基于分组向量的哈希多表连接实现方法
本专利技术涉及一种基于分组向量的哈希多表连接实现方法,特别是关于一种面向OLAP应用中数据分布特征而优化设计的多表连接方法。
技术介绍
分析型SQL查询中主要包括选择、投影、连接、分组、聚集操作,在OLAP应用中,查询通常表示为在维表上按给定的选择条件投影出GROUP-BY属性,与事实表外键连接后对事实表度量列的指定属性执行分组聚集计算。传统关系数据库的查询树中选择和投影操作被下推到底层表节点,然后按查询树路径依次执行连接操作,迭代生成连接结果记录,并对连接结果记录进行哈希分组聚集计算。例如下面SQL查询命令执行过程如图1所示:selectsum(lo_revenue),C_nation,S_nationfromlineorder,customer,supplierwherel_CK=C_custkeyandl_SK=S_suppkeyandC_region=’AMERICA’andS_region=’ASIA’groupbyC_nation,S_nation;SQL命令中的where子句在customer和supplier表中选择出满足条件的记录并投影出GROUP-BY属性和相应的连接属性,然后创建相应的哈希表用于连接操作。SQL命令中事实表投影出相应的属性并依次与customer表和supplier表执行连接操作,生成带有GROUP-BY分组属性和聚集属性的连接记录,最后通过哈希分组操作进行聚集计算。传统的迭代流水查询处理模型在OLAP查询处理时存在的主要缺点如下:1.事实表记录依次执行与customer表产生的 ...
【技术保护点】
1.一种基于分组向量的哈希多表连接实现方法,其特征在于包括以下步骤:1)对SQL查询命令进行改写,将一个完整的SQL查询命令划分为选择‑投影‑分组‑连接操作和聚集操作两个子任务;2)选择‑投影‑分组‑连接操作子任务用于创建生成SQL查询命令中GROUP‑BY语句对应的分组向量,并创建向量索引作为选择‑投影‑分组‑连接操作子任务的输出结果;3)聚集操作子任务执行基于向量索引的聚集计算,并将聚集计算结果存储在与分组向量等长的分组向量聚集器对应的单元中;4)将分组向量聚集器中的聚集计算结果与步骤2)创建的分组向量合并,作为SQL查询命令的结果集输出。
【技术特征摘要】
1.一种基于分组向量的哈希多表连接实现方法,其特征在于包括以下步骤:1)对SQL查询命令进行改写,将一个完整的SQL查询命令划分为选择-投影-分组-连接操作和聚集操作两个子任务;2)选择-投影-分组-连接操作子任务用于创建生成SQL查询命令中GROUP-BY语句对应的分组向量,并创建向量索引作为选择-投影-分组-连接操作子任务的输出结果;3)聚集操作子任务执行基于向量索引的聚集计算,并将聚集计算结果存储在与分组向量等长的分组向量聚集器对应的单元中;4)将分组向量聚集器中的聚集计算结果与步骤2)创建的分组向量合并,作为SQL查询命令的结果集输出。2.如权利要求1所述的一种基于分组向量的哈希多表连接实现方法,其特征在于:所述步骤1)中,所述选择-投影-分组-连接操作子任务中,选择、投影、分组操作作用在维表上,用于创建连接操作的维表哈希表;连接操作执行事实表外键列与所述维表哈希表之间的多表连接操作,并生成向量索引作为连接操作的输出结果;所述聚集操作子任务执行事实表度量列上基于所述向量索引的聚集计算任务,得到聚集计算结果。3.如权利要求2所述的一种基于分组向量的哈希多表连接实现方法,其特征在于:所述步骤2)中,所述向量索引是一个与分组聚集计算表等长的向量数据结构,所述向量索引中空值单元表示该单元对应的表中的记录不参与分组聚集计算,非空单元则表示该单元对应的表中的记录参与分组聚集计算;所述向量索引的单元值参照所述分组向量,所述分组向量对应GROUP-BY语句产生的分组属性集合,所述分组属性集合中的每个分组属性成员对应一个分组向量单元,分组属性成员ID设置为所述分组向量的下标地址,所述向量索引的非空单元中记录对应的分组向量单元地址,通过所述向量索引的单元值直接映射到分组向量对应的单元进行聚集计算。4.如权利要求3所述的一种基于分组向量的哈希多表连接实现方法,其特征在于:所述步骤2)中,创建所述向量索引的连接操作包括三种实现方法:哈希预分组连接方法、基于多维分组映射的连接方法以及基于稀疏多维数组压缩的连接方法。5.如权利要求4所述的一种基于分组向量的哈希多表连接实现方法,其特征在于:所述哈希预分组连接方法包括以下步骤:执行哈希多表连接操作后,为生成的连接记录的GROUP-BY分组属性创建哈希表,并执行哈希分组操作;创建一个全局序列生成器,从0开始以步长为1递增,为向量索引分配唯一的分组向量ID;对每一个生成的连接记录的GROUP-BY分组属性进行哈希探测,并根据哈希探测结果创建向量索引,具体的:如果哈希表中未探测到相同的GROUP-BY分组属性值,则创建哈希记录,从全局序列生成器中获得当前序列生成器值作为当前分组属性值的ID,然后序列生成器值增加1,并将分组属性值写入当前分组属性值ID对应的分组向量相应的单元中,同时将该分组属性值ID写入向量索引中对应位置的单元中,或者将记录位置ID和分组属性值ID追加到压缩向量索引中;如果哈希表中探测到相同的GROUP-BY分组属性值时,则将该哈希记录的分组属性值ID存储于向量索引对应的单元,或者将记录位置ID和分组属性值ID追加到压缩向量索引中;其中,在获得序列生成器当前值时利用latch对序列值加锁,序列生成器值增加1后释放latch锁。6.如权利要求4所述的一种基于分组向量的哈希多表连接实现方法,其特征在于:所述基于多维分组映射的连接方法,包括以下步骤:对维表进行选择、投影、分组操作后,对投影出来的分组属性值进行动态字典表压缩,将分组属性映射为一个字典向量,字典向量下标作为该维表上的分组属性ID,当维表上有多个分组属性时,每一个分组属性组...
【专利技术属性】
技术研发人员:张延松,张宇,王珊,
申请(专利权)人:中国人民大学,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。