大数据集块数>Bmemory*Bmemory ,则可以采用多趟归并排序算法
去重复操作 (1)第一趟,划分子集并进行子表排序; 第二趟:归并阶段,在排序的基础上直接将重复记录剔除不输出; (2)算法复杂性:3B® / 4B®
分组聚集操作 GROUP BY (1)第一趟,划分子集并进行子表排序; 第二趟:归并阶段,在排序的基础上,将不重复的记录作为新分组输出,将重复的记录进行分组聚集计算; (2)算法复杂性:3B® / 4B®
基于排序的并、交、和、差 (1) (2)交运算 都需要两趟,需要处理出现次数或去重复 第一趟:划分R和S的子表并排序; 第二趟:R和S的输入之间按要求输出
(3)差运算 都需要两趟,需要处理出现次数或去重复 第一趟:划分R和S的子表并排序; 第二趟:R和S的输入之间按要求输出 (4)基于排序的连接运算
第一趟:散列函数,将原始关系均衡地散列成M-1个子表,并存储。相同散列值的元组一定被映射到相同子集合 第二趟:用另一个散列函数将字表读入内存,在内存当中进行不同操作的处理
散列函数的选择和操作有关
去重复操作 (1) 第一趟:将原始关系通过hp散列成M-1个子表,并存储 第二趟:处理每一个字表,用另一个散列函数hr形成散列数据结构,进行去重复操作 hp:计算元组部分属性值mod M hr:计算整个元组的值mod M (2) 算法复杂性:3B® / 4B®
分组属性 (1)依据分组属性进行散列 第一趟:将原始关系通过hp散列成M-1个子表,并存储 第二趟:处理每一个字表,用另一个散列函数hr形成散列数据结构,进行分组聚集操作
hp:计算分组属性值mod M hr:以分组属性的二进制位串重新计算值,然后MOD M (2) 算法复杂性:3B® / 4B® (3)核心思路:
基于散列的并、交、差操作
基于散列的连接操作 (1)划分子表 (2)存储块映射
