高速访问ORC外部表的方法和系统技术方案

技术编号:38831688 阅读:11 留言:0更新日期:2023-09-17 09:51
本发明专利技术涉及ORC文件访问技术领域,提供一种高速访问ORC外部表的方法和系统,本发明专利技术的方法包括:获取待扫描的ORC文件,构建所述ORC文件的预读列表,将所述待扫描的ORC文件和构建的预读列表并传递至存储层;采用存储引擎根据构建的预读列表对所述待扫描的ORC文件进行预读处理;对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,对预读处理的速度进行动态控制。本发明专利技术的高速访问ORC外部表的方法和系统,可以提升ORC外部表的查询性能,在不增加开发工作量的基础上提高查询效率。高查询效率。高查询效率。

【技术实现步骤摘要】
高速访问ORC外部表的方法和系统


[0001]本专利技术涉及ORC文件访问
,尤其涉及一种高速访问ORC外部表的方法和系统。

技术介绍

[0002]在openGauss上实现一种ORC外部表,通过ORC外部表可以在openGauss上直接访问ORC数据,避免在关系数据库和大数据平台各保存一份数据带来的存储开销,有效提高查询效率。在openGauss上实现ORC外部表,通常是复用cstore存储引擎和列存表的机制,创建一个ORC外部表,将ORC元数据转换为ORC外部表元数据,将ORC格式数据转换为CU格式数据,然后利用列存表现有的解析器、规划器、执行器来实现ORC外部表的SQL查询功能。
[0003]目前openGauss上列存表的扫描方式,无论是顺序扫描还是索引扫描都与cstore存储引擎中CU的存储格式相关。以列为单位来扫描CU文件,可以充分利用cstore以列来存储组织CU格式数据的优势,但是ORC文件是以stripe为单位来组织数据的,如果使用该方式来扫描ORC文件的数据,会在扫描同一个stripe的每列数据时都引发对同一个stripe数据的读取,且不利于ORC数据的缓存。
[0004]因此,如何提供一种更加高效的openGauss数据库外部列存表的访问方法,成为亟待解决的技术问题。

技术实现思路

[0005]有鉴于此,为了克服现有技术的不足,本专利技术旨在提供一种高速访问ORC外部表的方法和系统。
[0006]根据本专利技术的第一方面,提供一种高速访问ORC外部表的方法,包括:
[0007]获取待扫描的ORC文件,构建所述ORC文件的预读列表,将所述待扫描的ORC文件和构建的预读列表并传递至存储层;
[0008]采用存储引擎根据构建的预读列表对所述待扫描的ORC文件进行预读处理;
[0009]对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,对预读处理的速度进行动态控制。
[0010]优选的,本专利技术高速访问ORC外部表的方法中,获取待扫描的ORC文件,构建所述ORC文件的预读列表,包括:
[0011]获取待扫描的ORC文件的数据块的定位信息,根据获取的待扫描的ORC文件的数据块的定位信息构建预读列表。
[0012]优选的,本专利技术高速访问ORC外部表的方法中,获取待扫描的ORC文件的数据块的定位信息,根据获取的待扫描的ORC文件的数据块的定位信息构建预读列表,包括:获取待扫描的ORC文件的文件路径以及stripe序号,根据获取的ORC文件路径和stripe序号,定位ORC文件中的数据块,生成相应的定位信息,根据所述生成的定位信息构建预读列表。
[0013]优选的,本专利技术高速访问ORC外部表的方法中,采用存储引擎根据构建的预读列表
对所述待扫描的ORC文件进行预读处理,包括:采用存储引擎启动预读线程,预读线程根据预读列表对所述待扫描的ORC文件进行读取和转换,将转换后的数据缓存至存储层的Cache中。
[0014]优选的,本专利技术高速访问ORC外部表的方法中,采用存储引擎启动预读线程,预读线程根据预读列表对所述待扫描的ORC文件进行读取和转换,将转换后的文件缓存至存储层的Cache中,包括:预读线程根据预读列表对所述待扫描的ORC文件进行异步且并行的读取,将读取的ORC数据块转换为CU数据,并将转换后的CU数据缓存至存储层的Cache中。
[0015]优选的,本专利技术高速访问ORC外部表的方法中,对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,对预读处理的速度进行动态控制,包括:采用扫描器对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,当存储层的Cache缓存空间小于缓存阈值,暂停对ORC文件的预读处理,删除存储层Cache中已扫描ORC文件对应的缓存,直至存储层的Cache缓存空间大于等于缓存阈值,恢复对ORC文件的预读处理。
[0016]优选的,本专利技术高速访问ORC外部表的方法中,对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,对预读处理的速度进行动态控制,还包括:
[0017]在采用扫描器对经过预读处理的ORC文件进行扫描过程中,实时获取存储层中Cache缓存空间的空闲值和扫描器下发的预读任务所需要的缓存空间值;
[0018]当扫描器下发的预读任务所需要的缓存空间值大于存储层Cache缓存空间的空闲值时,减小对ORC文件预读处理的速度,增加删除存储层Cache中已扫描ORC文件对应缓存的速度;
[0019]当扫描器下发的预读任务所需要的缓存空间值小于等于存储层Cache缓存空间的空闲值时,增加对ORC文件预读处理的速度,减小删除存储层Cache中已扫描ORC文件对应缓存的速度。
[0020]优选的,本专利技术高速访问ORC外部表的方法中,对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,对预读处理的速度进行动态控制,还包括:采用扫描器逐行对经过预读处理的ORC文件的数据块进行扫描进行顺序扫描,每扫描一行数据,在存储层删除Cache中已扫描ORC文件对应缓存后,下发新的ORC文件的预读任务。
[0021]优选的,本专利技术高速访问ORC外部表的方法中,对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,对预读处理的速度进行动态控制,还包括:采用扫描器根据索引元组进行回表扫描,每扫描完一组索引元组对应的ORC文件的数据块后,在存储层删除Cache中已扫描ORC文件对应缓存后,下发新的ORC文件的预读任务。
[0022]根据本专利技术的第二方面,提供一种高速访问ORC外部表的系统,包括高速访问ORC外部表的服务端,所述服务端用于获取待扫描的ORC文件,构建所述ORC文件的预读列表,将所述待扫描的ORC文件和构建的预读列表并传递至存储层;采用存储引擎根据构建的预读列表对所述待扫描的ORC文件进行预读处理;对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,对预读处理的速度进行动态控制。
[0023]根据本专利技术的第三方面,提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现本专利技术
第一方面所述的方法。
[0024]本专利技术的高速访问ORC外部表的方法和系统,通过预读处理并以stripe为单位对数据进行扫描,充分利用ORC文件以stripe为单位存储数据的特性,以及存储设备在高并发顺序读取大数据量时的高IO性能优势,提升ORC外部表的查询性能;由于ORC文件中的数据读取到内存后都转换为CU数据,可以复用顺序扫描、索引扫描等扫描方式,在不增加开发工作量的基础上提高查询效率。
附图说明
[0025]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高速访问ORC外部表的方法,其特征在于,所述方法包括:获取待扫描的ORC文件,构建所述ORC文件的预读列表,将所述待扫描的ORC文件和构建的预读列表并传递至存储层;采用存储引擎根据构建的预读列表对所述待扫描的ORC文件进行预读处理;对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,对预读处理的速度进行动态控制。2.根据权利要求1所述的高速访问ORC外部表的方法,其特征在于,获取待扫描的ORC文件,构建所述ORC文件的预读列表,包括:获取待扫描的ORC文件的数据块的定位信息,根据获取的待扫描的ORC文件的数据块的定位信息构建预读列表。3.根据权利要求2所述的高速访问ORC外部表的方法,其特征在于,获取待扫描的ORC文件的数据块的定位信息,根据获取的待扫描的ORC文件的数据块的定位信息构建预读列表,包括:获取待扫描的ORC文件的文件路径以及stripe序号,根据获取的ORC文件路径和stripe序号,定位ORC文件中的数据块,生成相应的定位信息,根据所述生成的定位信息构建预读列表。4.根据权利要求1所述的高速访问ORC外部表的方法,其特征在于,采用存储引擎根据构建的预读列表对所述待扫描的ORC文件进行预读处理,包括:采用存储引擎启动预读线程,预读线程根据预读列表对所述待扫描的ORC文件进行读取和转换,将转换后的数据缓存至存储层的Cache中。5.根据权利要求2所述的高速访问ORC外部表的方法,其特征在于,采用存储引擎启动预读线程,预读线程根据预读列表对所述待扫描的ORC文件进行读取和转换,将转换后的文件缓存至存储层的Cache中,包括:预读线程根据预读列表对所述待扫描的ORC文件进行异步且并行的读取,将读取的ORC数据块转换为CU数据,并将转换后的CU数据缓存至存储层的Cache中。6.根据权利要求1所述的高速访问ORC外部表的方法,其特征在于,对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,对预读处理的速度进行动态控制,包括:采用扫描器对经过预读处理的ORC文件进行扫描,在对经过预读处理的ORC文件进行扫描过程中,当存储层的Cache缓存空间小于缓存阈值,暂停对ORC文件的预读处理,删除存储层Ca...

【专利技术属性】
技术研发人员:那海涛何小栋
申请(专利权)人:北京海量数据技术股份有限公司
类型:发明
国别省市:

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

1