列式存储数据的组织方法、装置及存储介质制造方法及图纸

技术编号:24251443 阅读:22 留言:0更新日期:2020-05-22 23:31
本发明专利技术实施例提出一种列式存储数据的组织方法、装置及计算机可读存储介质。其中列式存储数据的组织方法包括:创建列式存储格式的第一组织文件,所述第一组织文件中包括一个行组;获取多个列式存储格式的待拼接文件的数据;将所述待拼接文件的数据,采用重编码组织方式在所述第一组织文件的所述一个行组中进行拼接。本发明专利技术实施例通过拼接列式存储格式的小文件,使得在查询时只需要读单个文件,并且只需要读取一个行组,寻道时间只有一次,从而使查询速度更快,显著减少了因处理大量小文件所导致的数据分析查询时间。

Organization method, device and storage medium of column storage data

【技术实现步骤摘要】
列式存储数据的组织方法、装置及存储介质
本专利技术涉及信息
,尤其涉及一种列式存储数据的组织方法、装置及计算机可读存储介质。
技术介绍
关系型数据是指以关系数学模型来表示的数据,其中,关系数学模型中以二维表的形式来描述数据。关系型数据的数据结构中,通常一行数据由多个属性组成,每个属性是关系表结构中的一列数据。关系型数据库是存储在计算机上的、可共享的、有组织的关系型数据的集合。不同的写文件顺序对应了关系型数据库的不同的存储方式。传统关系型数据库通常采用行式存储。行式存储是将各行放入连续的物理位置,即先存一行数据,再存下一行数据。列式存储是相对于传统关系型数据库的行式存储来说的。列式存储通常将不同数据的同一个属性值存在一起,因为每一个属性在表中是一列数据,所以很直观地将这种存储模型称为列式存储。列存储法的方式主要适合于批量数据处理和即时查询。对于列式存储文件格式,在数据处理过程中,会产生大量的小文件,进而会导致数据分析查询时间增长。parquet是一种列式存储文件格式,以parquet文件为例,在数据ETL(Extract-Transform-Load,中文名称为数据抽取、交互转换和加载)过程中,为了加快数据产出,会使用多个线程并行产出parquet文件。因此并发越高,产出的文件数量也越多,单个文件大小也越小。如何组织种列式存储数据,以提高数据分析查询的效率,是目前亟待解决的问题。
技术实现思路
本专利技术实施例提供一种列式存储数据的组织方法、装置及计算机可读存储介质,以至少解决现有技术中的一个或多个技术问题。第一方面,本专利技术实施例提供了一种列式存储数据的组织方法,包括:创建列式存储格式的第一组织文件,所述第一组织文件中包括一个行组;获取多个列式存储格式的待拼接文件的数据;将所述待拼接文件的数据,采用重编码组织方式在所述第一组织文件的所述一个行组中进行拼接。在一种实施方式中,获取多个列式存储格式的待拼接文件的数据之前,还包括:创建列式存储格式的第二组织文件,所述第二组织文件中包括多个行组。在一种实施方式中,所述方法还包括:将所述待拼接文件的数据,采用二进制流组织方式在所述第二组织文件中进行拼接;在所述第二组织文件拼接完成后,利用所述第二组织文件作为查询文件;在所述第一组织文件拼接完成后,利用所述第一组织文件替换所述第二组织文件作为查询文件。在一种实施方式中,获取多个列式存储格式的待拼接文件的数据,包括:将所述待拼接文件的数据读入内存;将所述待拼接文件的数据,采用重编码组织方式在所述第一组织文件的所述一个行组中进行拼接,包括:从内存中调取所述待拼接文件的数据,并将所述待拼接文件的数据在所述第一组织文件的所述一个行组中进行拼接;和/或,将所述待拼接文件的数据,采用二进制流组织方式在所述第二组织文件中进行拼接,包括:从内存中调取所述待拼接文件的数据,并将所述待拼接文件的数据在所述第二组织文件中进行拼接。在一种实施方式中,将多个所述待拼接文件的数据,采用二进制流组织方式在所述第二组织文件中进行拼接,包括:读取所述待拼接文件的行组,并将所述待拼接文件的行组追加到所述第二组织文件的行组中;更新所述第二组织文件中的底部数据。在一种实施方式中,更新所述第二组织文件中的底部数据,包括:读取所述待拼接文件的底部数据中的元数据,将所述元数据追加到所述第二组织文件的底部数据的元数据中;更新追加的元数据中的偏移量信息;更新所述第二组织文件的底部数据的长度信息。在一种实施方式中,所述方法还包括:在拼接后的组织文件大于预先设置的文件大小阈值的情况下,重新创建一个列式存储格式的组织文件,用于对所述待拼接文件进行拼接,其中,所述组织文件包括所述第一组织文件和/或所述第二组织文件。第二方面,本专利技术实施例提供了一种列式存储数据的组织装置,包括:第一创建单元,用于创建列式存储格式的第一组织文件,所述第一组织文件中包括一个行组;获取单元,用于获取多个列式存储格式的待拼接文件的数据;第一拼接单元,用于将所述待拼接文件的数据,采用重编码组织方式在所述第一组织文件的所述一个行组中进行拼接。在一种实施方式中,所述装置还包括:第二创建单元,用于创建列式存储格式的第二组织文件,所述第二组织文件中包括多个行组。在一种实施方式中,所述装置还包括:第二拼接单元,用于将多个所述待拼接文件的数据,采用二进制流组织方式在所述第二组织文件中进行拼接;第一数据组织管理单元,用于:在所述第二组织文件和所述第一组织文件分别对多个所述待拼接文件进行拼接;在所述第二组织文件拼接完成后,利用所述第二组织文件作为查询文件;在所述第一组织文件拼接完成后,利用所述第一组织文件替换所述第二组织文件作为查询文件。在一种实施方式中,所述获取单元还用于:将所述待拼接文件的数据读入内存;所述第一拼接单元还用于:从内存中调取所述待拼接文件的数据,并将所述待拼接文件的数据在所述第一组织文件的所述一个行组中进行拼接;和/或,所述第二拼接单元还用于:从内存中调取所述待拼接文件的数据,并将所述待拼接文件的数据在所述第二组织文件中进行拼接。在一种实施方式中,所述第二拼接单元包括:行组追加子单元,用于读取所述待拼接文件的行组,并将所述待拼接文件的行组追加到所述第二组织文件的行组中;底部数据更新子单元,用于更新所述第二组织文件中的底部数据。在一种实施方式中,所述底部数据更新子单元还用于:读取所述待拼接文件的底部数据中的元数据,将所述元数据追加到所述第二组织文件的底部数据的元数据中;更新追加的元数据中的偏移量信息;更新所述第二组织文件的底部数据的长度信息。在一种实施方式中,所述装置还包括第二数据组织管理单元,用于:在拼接后的组织文件大于预先设置的文件大小阈值的情况下,重新创建一个列式存储格式的组织文件,用于对所述待拼接文件进行拼接,其中,所述组织文件包括所述第一组织文件和/或所述第二组织文件。在一个可能的设计中,列式存储数据的组织装置的结构中包括处理器和存储器,所述存储器用于存储支持列式存储数据的组织装置执行上述第一方面中列式存储数据的组织方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述列式存储数据的组织装置还可以包括通信接口,列式存储数据的组织装置与其他设备或通信网络通信。第三方面,本专利技术实施例提供了一种列式存储数据的组织装置,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述第一方面中任一所述的方法。第四方面,本专利技术实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一所述的方法。上述技术方案具有如下优点或有益效果:通过拼接列式存储格式的小文件,使得在查询时只需要读单个文件,并且只需要读取一个行组,寻道时间只有一次,从而使查询速度更快,显著减少了因处理大量小文件所导致的数据分析查询时间。上述概述仅仅是为了说明书的目的,并不意图以任何方本文档来自技高网...

【技术保护点】
1.一种列式存储数据的组织方法,其特征在于,包括:/n创建列式存储格式的第一组织文件,所述第一组织文件中包括一个行组;/n获取多个列式存储格式的待拼接文件的数据;/n将所述待拼接文件的数据,采用重编码组织方式在所述第一组织文件的所述一个行组中进行拼接。/n

【技术特征摘要】
1.一种列式存储数据的组织方法,其特征在于,包括:
创建列式存储格式的第一组织文件,所述第一组织文件中包括一个行组;
获取多个列式存储格式的待拼接文件的数据;
将所述待拼接文件的数据,采用重编码组织方式在所述第一组织文件的所述一个行组中进行拼接。


2.根据权利要求1所述的方法,其特征在于,获取多个列式存储格式的待拼接文件的数据之前,还包括:
创建列式存储格式的第二组织文件,所述第二组织文件中包括多个行组。


3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将所述待拼接文件的数据,采用二进制流组织方式在所述第二组织文件中进行拼接;
在所述第二组织文件拼接完成后,利用所述第二组织文件作为查询文件;
在所述第一组织文件拼接完成后,利用所述第一组织文件替换所述第二组织文件作为查询文件。


4.根据权利要求3所述的方法,其特征在于,获取多个列式存储格式的待拼接文件的数据,包括:将所述待拼接文件的数据读入内存;
将所述待拼接文件的数据,采用重编码组织方式在所述第一组织文件的所述一个行组中进行拼接,包括:从内存中调取所述待拼接文件的数据,并将所述待拼接文件的数据在所述第一组织文件的所述一个行组中进行拼接;和/或
将所述待拼接文件的数据,采用二进制流组织方式在所述第二组织文件中进行拼接,包括:从内存中调取所述待拼接文件的数据,并将所述待拼接文件的数据在所述第二组织文件中进行拼接。


5.根据权利要求3所述的方法,其特征在于,将多个所述待拼接文件的数据,采用二进制流组织方式在所述第二组织文件中进行拼接,包括:
读取所述待拼接文件的行组,并将所述待拼接文件的行组追加到所述第二组织文件的行组中;
更新所述第二组织文件中的底部数据。


6.根据权利要求5所述的方法,其特征在于,更新所述第二组织文件中的底部数据,包括:
读取所述待拼接文件的底部数据中的元数据,将所述元数据追加到所述第二组织文件的底部数据的元数据中;
更新追加的元数据中的偏移量信息;
更新所述第二组织文件的底部数据的长度信息。


7.根据权利要求3所述的方法,其特征在于,还包括:
在拼接后的组织文件大于预先设置的文件大小阈值的情况下,重新创建一个列式存储格式的组织文件,用于对所述待拼接文件进行拼接,其中,所述组织文件包括所述第一组织文件和/或所述第二组织文件。


8.一种列式存储数据的组织装置,其特征在于,包括:
第一创建单元,用于创建列式存储格式的第一组织文件,所述第一组织文件中包括一个行组;
获取单元,用于获取多个列式存储格式的待拼接文件的数据;<...

【专利技术属性】
技术研发人员:魏煜桂超贤
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1