一种列存数据库的物化方法及装置与流程

文档序号:12748124阅读:984来源:国知局
一种列存数据库的物化方法及装置与流程

本发明属于列存数据库技术领域,尤其是涉及一种列存数据库的物化方法及装置。



背景技术:

随着大数据分析和数据挖掘等领域的不断发展,数据库处理的数据量越来越大,远远超出了内存的范围,为了有效处理数据,出现了新型的列存数据库。列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于小批量的数据处理,常用于联机事务型数据处理。它将数据按照逻辑列的形式集中进行存储,能够获得更高的压缩比,减少数据访问时不必要的磁盘I/O。

晚期物化策略,是指在数据库的操作过程中,将命中的数据位置(我们称之为行号索引)记录下来,而不是把最终需要的数据都提前物化到内存中。这种策略能更好地利用数据库的列存特性,避免无效I/O,有效利用内存,整体提高查询性能。

但是在某些场景下,如join操作,晚期物化使用的行号索引的顺序比较杂乱无序,没有规律,会引起大量的重复I/O。列存储的方式通常是同一列的数据被划分为若干个数据块,每个数据块中的记录个数相同,这样做的好处是分散管理,节省内存。当需要的数据块命中时,会从磁盘该数据块到内存中,当其他数据块命中同时内存不足时,又会将该数据块从内存中释放。join算子使用的晚期物化策略,是将不同维度命中的数据行号索引记录下来,在最终物化时根据这些行号索引进行物化,从磁盘读取数据。当数据比较分散时,有的维度就会出现读取->释放->读取->释放......的重复I/O操作。导致性能严重下降,查询时开销大。



技术实现要素:

本发明实施例提供了一种列存数据库的物化方法及装置,以解决现有技术中超大规模数据量下列存数据库运用晚期物化策略导致性能严重下降的技术问题。

一方面。本发明实施例提供了一种列存数据库的物化方法,包括:

按照列存数据库物化需要的行号索引进行排序,将排序后的数据进行物化;

将物化的数据根据物化序号排序,按照所述行号索引对数据进行物化。

进一步的,所述方法还包括:

按照物化序号进行排序;

将排序结果作为顺序数据源。

另一方面,本发明实施例还提供了一种列存数据库的物化装置,包括:

第一排序单元,用于按照列存数据库物化需要的行号索引进行排序,将排序后的数据进行物化;

第二排序单元,用于将物化的数据根据物化序号排序,按照所述行号索引对数据进行物化。

进一步的,所述装置还包括:

第三排序单元,用于按照物化序号进行排序;

数据源生成单元,用于将排序结果作为顺序数据源。

本发明实施例提供了一种列存数据库的物化方法及装置,通过将乱序的行号索引排序,提前将该维度数据物化,以避免频繁的重复I/O。然后通过高效的排序算法将物化的数据调整顺序,使原来的维度可以顺序物化。最后将原来的乱序行号索引换成顺序的索引,基于新的数据物化。提高了join后物化的性能,减少了大量的重复I/O。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的列存数据库的物化方法的流程示意图;

图2是本发明实施例二提供的列存数据库的物化方法装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图1为本发明实施例一提供的分列存数据库的物化方法的流程图,本实施例可适用于数据量很大,内存仅能缓存住部分数据,同时行号索引乱序比较严重时,对列存数据库进行物化的情况,该方法可以由列存数据库的物化装置来执行,该装置可由软件/硬件方式实现,并可集成于列存数据库中。

参见图1,所述分布式数据库系统数据的分发方法,包括:

S110,按照列存数据库物化需要的行号索引进行排序,将排序后的数据进行物化。

示例性的,以下述列存数据库为例,t1为数据代码行号索引,假设一个数据块中只包含一行数据,且内存中只能放两条数据,那么下述的I/O次数为:(t1->1)+(t2->1)+(t2->2)+(t1->2)+(t2->1)+(t2->2)+(t1->3)+(t2->1)+(t2->2)+(t1->4)+(t2->1)+(t2->2)+(t1->5)+(t2->1)+(t2->2)=15;归纳为计算公式为:t1.cnt+t1.cnt*t2.cnt=5+5*2=15;而t1.cnt+t1.cnt*t2.cnt≈t1.cnt*t2.cnt;(当t2.cnt比较大时),如t1的数据块为1000,t2的数据块为100,那么I/O次数约为100000次

原来的索引行号是乱序的,如上述实例中的t2维度,排序后的效果如如下所示:

此时根据t2的行号索引物化,只需(t2->1)+(t2->2)=2次读I/O,同时将物化的数据写入磁盘,还需要10(需要物化的行数rows)次写I/O,总结成公式为:t2.cnt次读I/O+需要物化的行数rows次写I/O,即t2.cnt+rows。

S120,将物化的数据根据物化序号排序,按照所述行号索引对数据进行物化。

根据最新的行号索引和新的数据进行最终的物化,物化的结果如下所示:

物化需要读(t1->1)+(t1->2)+(t1->3)+(t1->4)+(t1->5)+rows=t1.cnt+rows次I/O,完成物化。

通过以上步骤,完成了最终的物化,I/O次数为:步骤1中的t2.cnt+rows次+步骤2中的2*rows次+步骤3中的t1.cnt+rows次,计算公式为t1.cnt+t2.cnt+4*rows次;而不做优化前的I/O次数约为t1.cnt*t2.cnt。可以看出,当t1.cnt和t2.cnt比较大时,优化前的I/O次数比优化后高一个数量级。

本实施例通过将乱序的行号索引排序,提前将该维度数据物化,以避免频繁的重复I/O。然后通过高效的排序算法将物化的数据调整顺序,使原来的维度可以顺序物化。最后将原来的乱序行号索引换成顺序的索引,基于新的数据物化。提高了join后物化的性能,减少了大量的重复I/O。

实施例二

图2是本发明实施例二提供的列存数据库的物化方法装置的结构示意图,如图2所示,所述装置包括:

第一排序单元210,用于按照列存数据库物化需要的行号索引进行排序,将排序后的数据进行物化;

第二排序单元220,用于将物化的数据根据物化序号排序,按照所述行号索引对数据进行物化。

进一步的,所述装置还包括:

第三排序单元,用于按照物化序号进行排序;

数据源生成单元,用于将排序结果作为顺序数据源。

本发明实施例提供了一种列存数据库的物化方法及装置,通过将乱序的行号索引排序,提前将该维度数据物化,以避免频繁的重复I/O。然后通过高效的排序算法将物化的数据调整顺序,使原来的维度可以顺序物化。最后将原来的乱序行号索引换成顺序的索引,基于新的数据物化。提高了join后物化的性能,减少了大量的重复I/O。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1