CN115438114B - 存储格式转换方法、系统、装置、电子设备及存储介质 - Google Patents

存储格式转换方法、系统、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115438114B
CN115438114B CN202211395237.5A CN202211395237A CN115438114B CN 115438114 B CN115438114 B CN 115438114B CN 202211395237 A CN202211395237 A CN 202211395237A CN 115438114 B CN115438114 B CN 115438114B
Authority
CN
China
Prior art keywords
column
data
storage
field
memory page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211395237.5A
Other languages
English (en)
Other versions
CN115438114A (zh
Inventor
刘科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN202211395237.5A priority Critical patent/CN115438114B/zh
Publication of CN115438114A publication Critical patent/CN115438114A/zh
Application granted granted Critical
Publication of CN115438114B publication Critical patent/CN115438114B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了一种存储格式转换方法、系统、装置、电子设备及存储介质,应用于存储技术领域,方法应用于协处理器,包括获取主处理器发送的行存储页面数据与配置信息,配置信息包括行存储页面内各列字段的格式信息;根据配置信息对行存储页面数据进行解析获得列描述符,列描述符包括各列字段在行存储页面中的首偏移地址和字段长度;根据列描述符计算获得关于列存储页面的填充信息,填充信息包括各数据列在列存储页面中的首偏移地址和列长度,具有相同字段属性的各列字段组成一个数据列;根据填充信息对列存储页面进行填充,生成列存储页面数据;将列存储页面数据反馈至主处理器。可支持变长字段数据的行列存储格式转换,提高行列转换方法的适用性。

Description

存储格式转换方法、系统、装置、电子设备及存储介质
技术领域
本申请涉及存储技术领域,特别涉及一种存储格式转换方法、系统、装置、电子设备及存储介质。
背景技术
传统的关系型数据库大都采用行存储模式进行数据的存储,采用行存储模式,不同类型与长度的字段连续存储在同一行中,更适合OLTP(On-Line TransactionProcessing,在线事务处理)业务,在队数据库进行增加、删除与修改操作时,能够获得较好的性能。然而,对于OLAP(On-Line Analytical Processing,在线分析处理)业务,在进行数据查询时,行存储模式下需要读取一行内所有数据,再提取有效字段,增加了IO读取的开销与字段解析的开销,在大数据量时会导致较大查询延迟。因此,为了提高数据库的OLAP性能,列存储模式被提出,在列存储模式中数据按列进行存储,在进行OLAP查询业务时,只需读取需要的列即可,减少了IO开销与行列解析开销。然而,列存模式虽然对OLAP业务有着更高的性能,但对于OLTP业务则性能较差。以数据的插入为例:由于数据的输入是按行输入的,列存储模式下,需要先对数据进行行列拆解后,再将数据追加到对应的列中,而行列拆解的过程会导致数据写入性能的下降。
为了兼顾数据库OLTP与OLAP性能,一些研究中采用行列混合的方式,在数据库进行OLTP业务时,数据按照行储存模式存储至磁盘;当数据库进行OLAP业务时,将行存储数据转换为列存储方式,存放在内存或磁盘中。为达到上该目的,需要先实现行列转换功能。相关技术中,行列转换操作大多依赖于CPU进行,在运行过程中需要消耗大量的CPU算力资源。另外,一些使用协处理器进行行列转换的方式,虽然可以大幅降低CPU的算力消耗,但方案中必须预知行的长度,且只能支持定长数据类型,无法支持变长数据类型。然而,大部分关系型数据库中,都存在变长数据,并且允许每一行的长度都不相同,无法在计算前预知行的长度。因此,该实现方法虽然可以获得较高的数据吞吐率,但无法处理变长数据,限制了其适用场景。
因此,如何实现可支持变长字段数据的行列存储格式转换,提高行列转换方法的适用性是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种存储格式转换方法,该存储格式转换方法可以实现可支持变长字段数据的行列存储格式转换,提高行列转换方法的适用性;本申请的另一目的是提供另一种存储格式转换方法、存储格式转换系统、存储格式转换装置、电子设备及计算机可读存储介质,均具有上述有益效果。
第一方面,本申请提供了一种存储格式转换方法,应用于协处理器,包括:
获取主处理器发送的行存储页面数据与配置信息,所述配置信息包括所述行存储页面内各列字段的格式信息;
根据所述配置信息对所述行存储页面数据进行解析,获得列描述符,所述列描述符包括各所述列字段在行存储页面中的首偏移地址和字段长度;
根据所述列描述符计算获得关于列存储页面的填充信息,所述填充信息包括各数据列在所述列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各所述列字段组成一个数据列;
根据所述填充信息对所述列存储页面进行填充,生成列存储页面数据;
将所述列存储页面数据反馈至所述主处理器。
可选地,所述根据所述配置信息对所述行存储页面数据进行解析,获得列描述符,包括:
确定所述行存储页面数据的数据存储格式;
根据所述数据存储格式和所述配置信息对所述行存储页面数据进行解析,获得所述列描述符;
其中,所述配置信息由所述主处理器基于所述行存储页面数据对应的元组描述符生成。
可选地,所述填充信息还包括各变长列字段的首偏移地址和字段长度,定长数据列的最大值和最小值,所述根据所述填充信息对所述列存储页面进行填充,生成列存储页面数据,包括:
根据各所述数据列在所述列存储页面中的首偏移地址和列长度,将各所述列字段填充至所述列存储页面的字段区域;
将各所述变长列字段的首偏移地址和字段长度填充至所述列存储页面的变长字段索引区域;
将各所述数据列的首偏移地址和列长度、所述定长数据列的最大值和最小值填充至所述列存储页面的列数据索引区域。
可选地,所述对所述行存储页面数据进行解析,获得列描述符之后,还包括:
获取排序使能信息;
根据所述排序使能信息确定排序数据列;
根据所述排序数据列的排序方式对所述列描述符进行排序,获得排序后的列描述符。
可选地,所述协处理器包括第一预设数量个计算单元和所述第一预设数量个存储器,每一所述计算单元对应于一个所述存储器,所述获取主处理器发送的行存储页面数据,包括:
从当前计算单元对应的存储器中读取获得所述行存储页面数据,所述行存储页面数据由所述主处理器发送至所述存储器。
可选地,每一所述计算单元包括第二预设数量个执行通道,所述从当前计算单元对应的存储器中读取获得所述行存储页面数据,包括:
从所述当前计算单元对应的存储器中读取获得所述第二预设数量个行存储页面数据;
所述从当前计算单元对应的存储器中读取获得所述行存储页面数据之后,还包括:
将所述第二预设数量个行存储页面数据分发至所述第二预设数量个执行通道,以利用各所述执行通道执行所述对所述行存储页面数据进行解析,获得列描述符的步骤。
可选地,所述将所述列存储页面数据反馈至所述主处理器,包括:
将各所述列存储页面回写至所述当前计算单元对应的存储器,以使所述主处理器从各所述存储器中读取获得各所述列存储页面数据。
可选地,所述将所述列存储页面数据反馈至所述主处理器之前,还包括:
根据各数据列对应的预设压缩算法对所述列存储页面数据中的各列字段进行压缩处理,获得压缩处理后的列存储页面数据。
第二方面,本申请提供了另一种存储格式转换方法,应用于主处理器,包括:
获取行存储页面数据以及所述行存储页面数据对应的元组描述符;
根据所述元组描述符生成关于所述行存储页面数据的配置信息,所述配置信息包括所述行存储页面数据中各列字段的格式信息;
将所述行存储页面数据和所述配置信息发送至协处理器,以使所述协处理器根据所述配置信息将所述行存储页面数据转换为列存储页面数据;
获取所述协处理器反馈的所述列存储页面数据。
第三方面,本申请还公开了一种存储格式转换系统,包括主处理器和协处理器;
所述主处理器,用于发送行存储页面数据和配置信息至所述协处理器,并获取所述协处理器反馈的列存储页面数据;
所述协处理器,用于根据所述配置信息对所述行存储页面数据进行解析,获得列描述符,所述列描述符包括各所述列字段在行存储页面中的首偏移地址和字段长度;根据所述列描述符计算获得关于列存储页面的填充信息,所述填充信息包括各数据列在所述列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各所述列字段组成一个数据列;根据所述填充信息对所述列存储页面进行填充,生成所述列存储页面数据。
可选地,所述主处理器为CPU,所述协处理器为FPGA。
第四方面,本申请还公开了一种存储格式转换装置,应用于协处理器,包括:
获取模块,用于获取主处理器发送的行存储页面数据与配置信息,所述配置信息包括所述行存储页面内各列字段的格式信息;
解析模块,用于根据所述配置信息对所述行存储页面数据进行解析,获得列描述符,所述列描述符包括各所述列字段在行存储页面中的首偏移地址和字段长度;
计算模块,用于根据所述列描述符计算获得关于列存储页面的填充信息,所述填充信息包括各数据列在所述列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各所述列字段组成一个数据列;
填充模块,用于根据所述填充信息对所述列存储页面进行填充,生成列存储页面数据;
反馈模块,用于将所述列存储页面数据反馈至所述主处理器。
第五方面,本申请还公开了另一种存储格式转换装置,应用于主处理器,包括:
第一获取模块,用于获取行存储页面数据以及所述行存储页面数据对应的元组描述符;
生成模块,用于根据所述元组描述符生成关于所述行存储页面数据的配置信息,所述配置信息包括所述行存储页面数据中各列字段的格式信息;
发送模块,用于将所述行存储页面数据和所述配置信息发送至协处理器,以使所述协处理器根据所述配置信息将所述行存储页面数据转换为列存储页面数据;
第二获取模块,用于获取所述协处理器反馈的所述列存储页面数据。
第六方面,本申请还公开了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述的任一种存储格式转换方法的步骤。
第七方面,本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的任一种存储格式转换方法的步骤。
应用本申请所提供的技术方案,结合协处理器实现行列存储格式的转换,可以有效避免主处理器算力资源的大量消耗,保证较高的工作效率,同时,结合配置信息对行存储页面数据进行解析,得到行存储页面数据中各列字段的偏移地址和字段长度,进而计算获得各数据列在列存储页面中的首偏移地址和字段长度,并生成对应于该行存储页面数据的列存储页面数据,实现了行列存储格式的转换,可见,该种实现方式将各个列字段的位置信息和字段长度考虑在内,实现了可支持变长字段数据的行列存储格式转换,有效地提高了行列转换方法的适用性。
附图说明
为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。
图1为本申请所提供的一种存储格式转换系统的结构示意图;
图2为本申请所提供的一种存储格式转换方法的流程示意图;
图3为本申请所提供的另一种存储格式转换方法的流程示意图;
图4为本申请所提供的另一种存储格式转换系统的结构示意图;
图5为本申请所提供的一种行存储页面数据的存储格式示意图;
图6为本申请所提供的一种配置参数码流的格式示意图;
图7为本申请所提供的一种行存储页面数据对应的数据表的示意图;
图8为本申请所提供的一种元组描述符的示意图;
图9为本申请所提供的一种配置参数码流的示意图;
图10为本申请所提供的一种行存储页面数据的示意图;
图11为本申请所提供的一种列字段解析原理示意图;
图12为本申请所提供的另一种元组描述符的示意图;
图13为图12所示元组描述符在PostgreSQL数据库中的存储示意图;
图14为本申请所提供的一种列存储页面数据的存储格式示意图;
图15为本申请所提供的一种不使能排序的列存储页面数据的示意图;
图16为本申请所提供的一种使能排序的列存储页面数据的示意图;
图17为本申请所提供的一种FPGA中计算单元的结构示意图;
图18为本申请所提供的一种FPGA中计算单元的工作流程示意图;
图19为本申请所提供的一种执行通道的工作流程示意图;
图20为本申请所提供的另一种使能排序的列存储页面的示意图;
图21为本申请所提供的另一种行存储页面数据的示意图;
图22为本申请所提供的一种列描述符的生成原理示意图;
图23为本申请所提供的一种列描述符的排序原理示意图;
图24为本申请所提供的一种列存储页面中拷贝信息的计算原理示意图;
图25为本申请所提供的一种列描述符的更新原理示意图;
图26为本申请所提供的一种列存储页面数据的生成原理示意图;
图27为本申请所提供的一种存储格式转换装置的流程示意图;
图28为本申请所提供的另一种存储格式转换装置的流程示意图;
图29为本申请所提供的一种电子设备的结构示意图。
具体实施方式
本申请的核心是提供一种存储格式转换方法,该存储格式转换方法可以实现可支持变长字段数据的行列存储格式转换,提高行列转换方法的适用性;本申请的另一核心是提供另一种存储格式转换方法、存储格式转换系统、存储格式转换装置、电子设备及计算机可读存储介质,均具有上述有益效果。
为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请所提供的存储格式转换方法应用于存储格式转换系统,请参考图1,图1为本申请所提供的一种存储格式转换系统的结构示意图,该存储格式转换系统包括主处理器100和协处理器200,二者可以进行协同处理实现存储格式转换。在一种可能的实现方式中,主处理器可以为CPU,协处理器可以为FPGA(Field Programmable GateArray,一种高性能可编程逻辑器件)。
本申请实施例提供了一种存储格式转换方法。
请参考图2,图2为本申请所提供的一种存储格式转换方法的流程示意图,该存储格式转换方法应用于协处理器,可以包括如下S101至S105。
S101:获取主处理器发送的行存储页面数据与配置信息,配置信息包括行存储页面内各列字段的格式信息;
本步骤旨在实现行存储页面数据和配置信息的获取。其中,行存储页面数据是指以行存储格式进行数据存储的页面数据,通过对该行存储页面数据进行行列转换,即可得到相应的列存储页面数据,也就是以列存储格式进行数据存储的页面数据。配置信息则包括有行存储页面内各列字段的格式信息,列字段是指行存储页面中所存储的数据信息,可以为定长字段也可以为变长字段,如字符串、数字、日期等;格式信息包括但不限于各列字段的字段长度、字段对齐方式、字段类型等。
需要说明的是,本申请实施例所提供的存储格式转换方法应用于协处理器,行存储页面数据和配置信息均是由主处理器发送至协处理器中的,也就是说,当需要进行行列存储格式转换时,主处理器将需要进行行列存储格式转换的行存储页面数据及其配置信息发送至协处理器执行行列存储格式转换操作,即可得到相应的列存储页面数据,从而实现行列存储格式转换。
S102:根据配置信息对行存储页面数据进行解析,获得列描述符,列描述符包括各列字段在行存储页面中的首偏移地址和字段长度;
本步骤旨在实现行存储页面数据的解析操作,得到对应于该行存储页面数据的列描述符。其中,列描述符包括有各列字段在行存储页面中的首偏移地址和字段长度,首偏移地址即对应列字段在行存储页面中的第一个偏移位置;字段长度则为对应列字段的字段长度,定长字段的字段长度为定值,变长字段的字段长度为不定值。显然,列描述符将各个列字段的首偏移地址和字段长度考虑在内,有助于实现可支持变长字段数据的行列存储格式转换,可以有效提高行列转换方法的适用性。
当然,列描述符中所包含的信息并不仅限于此,还可以包括其他类型的数据信息,具体可以由技术人员根据实际需求(如列存储页面的存储格式需求)进行设定,本申请对此不做限定。
在一种可能的实现方式中,上述根据配置信息对行存储页面数据进行解析,获得列描述符,可以包括:确定行存储页面数据的数据存储格式;根据数据存储格式和配置信息对行存储页面数据进行解析,获得列描述符;其中,配置信息由主处理器基于行存储页面数据对应的元组描述符生成。
本申请实施例提供了一种对行存储页面数据进行解析获得列描述符的实现方法。具体而言,行存储页面本身预设有不同的存储格式,如预先设定有数据信息本身的存储位置、数据信息的元数据的存储位置、数据信息的描述信息的存储位置等,因此,可以结合行存储页面的数据存储格式对行存储页面数据进行解析。
可以理解的是,对于一般的关系型存储数据库(如PostgreSQL,一种开源的关系型数据库)而言,其在创建行存储页面类型的数据表时,会同时创建元组描述符,用于描述数据表中各个列字段的字段长度、字段对齐方式、字段类型等格式信息,因此,可以基于元组描述符生成上述配置信息,由此,配置信息中即可同样包含各列字段的上述各项格式信息。
S103:根据列描述符计算获得关于列存储页面的填充信息,填充信息包括各数据列在列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各列字段组成一个数据列;
本步骤旨在实现列存储页面中填充信息的计算,该填充信息用于指示将行存储页面中的各列字段存储至列存储页面的实现方式,主要包括各数据列在列存储页面中的首偏移地址和列长度,以便于根据这些信息可以将行存储页面中的各列字段存储至列存储页面,从而实现行列存储方式的转换。
并且,类似于上述列描述符,填充信息中所包含的信息并不仅限于此,还可以包括其他类型的数据信息,具体可以由技术人员根据实际需求(如列存储页面的存储格式需求)进行设定,本申请对此不做限定。
可以理解的是,列描述符对应于行存储页面,主要包括各列字段在行存储页面中的首偏移地址和字段长度,填充信息则对应于列存储页面,主要包括各数据列在列存储页面中的首偏移地址和列长度,其中,数据列由具有相同字段属性的各列字段组成(换而言之,行存储页面数据中同一键值对应的所有列字段称为一个数据列),例如,所有字段属性为“薪资”的列字段组成一个数据列。需要说明的是,填充信息中各数据列在列存储页面中的首偏移地址和列长度,均可以由列描述符中各列字段的首偏移地址和字段长度计算获得。
S104:根据填充信息对列存储页面进行填充,生成列存储页面数据;
本步骤旨在实现列存储页面的填充处理,获得对应于行存储页面的列存储页面,从而实现行列存储格式的转换。如上所述,填充信息包括各数据列在列存储页面中的首偏移地址和列长度,在此基础上,可以直接根据该填充信息将行存储页面数据中的各个列字段拷贝至列存储页面,从而生成列存储页面数据。
在一种可能的实现方式中,上述填充信息还可以包括各变长列字段的首偏移地址和字段长度,定长数据列的最大值和最小值,上述根据填充信息对列存储页面进行填充,生成列存储页面数据,可以包括如下步骤:
根据各数据列在列存储页面中的首偏移地址和列长度,将各列字段填充至列存储页面的字段区域;
将各变长列字段的首偏移地址和字段长度填充至列存储页面的变长字段索引区域;
将各数据列的首偏移地址和列长度、定长数据列的最大值和最小值填充至列存储页面的列数据索引区域。
本申请实施例提供了一种基于填充信息对列存储页面进行填充的实现方式。首先,除上述各数据列在列存储页面中的首偏移地址和列长度之外,填充信息还可以包括各变长列字段的首偏移地址和字段长度、定长数据列的最大值和最小值,其中,行存储页面数据中同一键值对应的所有列字段称为一个数据列,每个数据列对应于一个键值,如若一个键值对应的列字段为变长字段,那么,该键值对应的数据列为变长数据列,如若一个键值对应的列字段为定长字段,那么,该键值对应的数据列为定长数据列。进一步,列存储页面包括字段区域,变长字段索引区域以及列数据索引区域,其中,字段区域用于存储行存储页面数据中的各个列字段,根据各数据列在列存储页面中的首偏移地址和列长度填充至字段区域即可;变长字段索引区域用于存储各变长列字段的首偏移地址和字段长度;列数据索引区域用于存储各数据列的首偏移地址和列长度、定长数据列的最大值和最小值。其中,在进行数据填充时,参照列存储页面的数据存储格式实现即可,此外,还可以同时结合预设配置信息中列字段的字段对齐方式,实现填充对齐。
S105:将列存储页面数据反馈至主处理器。
本步骤旨在实现列存储页面的反馈,在将行存储页面转换为列存储页面之后,即可将其反馈给主处理器,由主处理器继续进行相应的业务处理。
可见,本申请实施例所提供的存储格式转换方法,结合协处理器实现行列存储格式的转换,可以有效避免主处理器算力资源的大量消耗,保证较高的工作效率,同时,结合配置信息对行存储页面数据进行解析,得到行存储页面数据中各列字段的偏移地址和字段长度,进而计算获得各数据列在列存储页面中的首偏移地址和字段长度,并生成对应于该行存储页面数据的列存储页面数据,实现了行列存储格式的转换,可见,该种实现方式将各个列字段的位置信息和字段长度考虑在内,实现了可支持变长字段数据的行列存储格式转换,有效地提高了行列转换方法的适用性。
在本申请的一个实施例中,上述对行存储页面数据进行解析,获得列描述符之后,还可以包括如下步骤:
获取排序使能信息;
根据排序使能信息确定排序数据列;
根据排序数据列的排序方式对列描述符进行排序,获得排序后的列描述符。
本申请实施例所提供的存储格式转换方法,还可以进一步实现页面内列数据的排序功能。具体而言,在对行存储页面数据进行解析,获得列描述符之后,基于该列描述符计算填充信息之前,可以先对该列描述符进行排序处理,通过对列描述符进行排序,实现列存储页面内列数据的排序。
在实现过程中,首先获得排序使能信息,进而根据该排序使能信息确定排序数据列,其中,排序使能信息可以为用户指定的键值信息,那么,该键值对应的列数据即为排序数据列,也就是对该键值对应的列数据进行排序,例如,当用户指定的键值信息为“薪资”时,说明是对“薪资”这一列数据中的各个薪资值进行由低到高的排序或者由高到低的排序。进一步,根据排序数据列的排序方式对列描述符进行排序,即可获得排序后的列描述符,可以理解的是,列描述符用于实现列存储页面中填充信息的计算,填充信息则用于实现列存储页面的数据填充,因此,利用排序后的列描述符计算获得的列存储页面中的填充信息,也必然为排序后的填充信息,基于该排序后的填充信息所获得的列存储页面数据,也必然为排序后的列存储页面数据。
可以理解的是,排序功能的实现可以有效减少数据读取量,提高数据读取效率。具体而言,当对某一键值对应的列数据进行排序之后,如若想要查询该键值在指定范围内的目标数据,则可以直接确定满足该指定范围的目标数据所在的列数,并直接从该列开始进行数据读取,而无需从第一列开始进行数据读取,也就是直接跳过了不满足上述指定范围的列,因此,有效地减少了数据读取量,提高了数据读取效率。
在本申请的一个实施例中,上述协处理器可以包括第一预设数量个计算单元和第一预设数量个存储器,每一计算单元对应于一个存储器,上述获取主处理器发送的行存储页面数据,可以包括:从当前计算单元对应的存储器中读取获得行存储页面数据,行存储页面数据由主处理器发送至存储器。
本申请实施例提供了一种获取行存储页面数据的实现方式。具体而言,协处理器可以包括第一预设数量个计算单元和第一预设数量个存储器,即计算单元和存储器的数量相等,且一个计算单元对应于一个存储器,其中,存储器用于存储主处理器发送的行存储页面数据,计算单元则用于从相应的存储器中读取行存储页面数据并对其进行行列转换。
需要说明的是,第一预设数量的具体取值并不影响本技术方案的实施,根据协处理器实际特性进行设定即可,本申请对此不做限定,例如,可以设置第一预设数量取值为16。可以理解的是,通过在协处理器中设置多个计算单元实现多个行存储页面数据的并行处理,可以大大提升存储格式转换效率。
在本申请的一个实施例中,每一计算单元包括第二预设数量个执行通道,上述从当前计算单元对应的存储器中读取获得行存储页面数据,可以包括:从当前计算单元对应的存储器中读取获得第二预设数量个行存储页面数据;
上述从当前计算单元对应的存储器中读取获得行存储页面数据之后,还可以包括:将第二预设数量个行存储页面数据分发至第二预设数量个执行通道,以利用各执行通道执行对行存储页面数据进行解析,获得列描述符的步骤。
如上所述,协处理器中设置有第一预设数量个计算单元,用于实现存储格式转换,进一步,每一个计算单元可以设置有第二数量个执行通道,每一个计算单元均可以通过自身的各个执行通道实现存储格式转换。因此,当前计算单元在从其对应的存储器中读取行存储页面数据时,可以直接读取第二预设数量个行存储页面数据,由此,即可将各个行存储页面数据依次分发至各个执行通道,并且,每一个执行通道处理一个行存储页面数据。
同样的,类似于上述第一预设数量,第二预设数量的具体取值并不影响本技术方案的实施,根据协处理器实际特性进行设定即可,本申请对此不做限定,例如,可以设置第二预设数量取值为8。在此基础上,一个协处理器设置有第一预设数量个计算单元,每一个计算单元设置有第二预设数量个执行通道,每一个执行通道处理一个行存储页面数据,由此,一个协处理器可以同时处理第一预设数量*第二预设数量个行存储页面数据,进而实现了多个行存储页面数据的并行处理,进一步提升了存储格式转换效率。
在本申请的一个实施例中,上述将列存储页面数据反馈至主处理器,可以包括:将各列存储页面回写至当前计算单元对应的存储器,以使主处理器从各存储器中读取获得各列存储页面数据。
本申请实施例提供了一种反馈列存储页面数据的实现方法。如上所述,协处理器中设置有第一预设数量个计算单元,且每一个计算单元对应一个存储器,在获取行存储页面数据时,主处理器将需要进行行列转换的行存储页面数据发送至存储器进行存储,然后由计算单元从自身对应的存储器中读取行存储页面数据进行行列转换,在此基础上,计算单元在执行完毕行列转换操作获得列存储页面数据之后,可以将各个列页面存储数据回写至自身对应的存储器中进行存储,由此,主处理器即可从各个存储器中读取获得各个列存储页面数据,从而实现列存储页面数据的反馈。
在本申请的一个实施例中,上述将列存储页面数据反馈至主处理器之前,还可以包括:根据各数据列对应的预设压缩算法对列存储页面数据中的各列字段进行压缩处理,获得压缩处理后的列存储页面数据。
本申请实施例所提供的存储格式转换方法,还可以进一步实现列存储页面内列字段的压缩处理功能,以减节省存储空间的占用。具体而言,在完成行列存储格式转换获得列存储页面数据之后,即可对列存储页面数据中的各个列字段进行压缩处理,获得压缩处理后的列存储页面数据。
其中,针对不同类型的列字段,还可以采用不同的压缩方式,因此,在进行列字段压缩处理时,可以采用各个数据列对应的预设压缩算法实现,例如,对于字符串类型的列字段,可以采用霍夫曼编码或LZ77编码的压缩方式;对于浮点数类型的列字段,可以采用游程编码或专用的浮点数压缩算法的压缩方式,对于整形及日期类型的列字段,则可以采用差值编码的压缩方式。可以理解的是,针对不同类型的列字段采用不同的压缩方式进行压缩处理,可以获得更高的压缩比,从而大大降低存储空间的占用。
本申请实施例提供了另一种存储格式转换方法。
请参考图3,图3为本申请所提供的另一种存储格式转换方法的流程示意图,该存储格式转换方法应用于主处理器,可以包括如下S201至S204。
S201:获取行存储页面数据以及行存储页面数据对应的元组描述符;
S202:根据元组描述符生成关于行存储页面数据的配置信息,配置信息包括行存储页面数据中各列字段的格式信息;
S203:将行存储页面数据和配置信息发送至协处理器,以使协处理器根据配置信息将行存储页面数据转换为列存储页面数据;
S204:获取协处理器反馈的列存储页面数据。
本申请实施例所提供的存储格式转换方法应用于主处理器,由主处理器与协处理器协同现存储格式转换,其具体实现流程参照上述各实施例即可,本申请实施例在此不再赘述。
需要说明的是,本申请实施例所提供的存储格式转换方法,结合协处理器实现行列存储格式的转换,可以有效避免主处理器算力资源的大量消耗,保证较高的工作效率。
本申请实施例提供了一种存储格式转换系统。
如图1所示,该存储格式转换系统可以包括主处理器100和协处理器200,其中:
主处理器100,用于发送行存储页面数据和配置信息至协处理器200,并获取协处理器200反馈的列存储页面数据;
协处理器200,用于根据配置信息对行存储页面数据进行解析,获得列描述符,列描述符包括各列字段在行存储页面中的首偏移地址和字段长度;根据列描述符计算获得关于列存储页面的填充信息,填充信息包括各数据列在列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各列字段组成一个数据列;根据填充信息对列存储页面进行填充,生成列存储页面数据。
可见,本申请实施例所提供的存储格式转换系统,结合协处理器实现行列存储格式的转换,可以有效避免主处理器算力资源的大量消耗,保证较高的工作效率,同时,结合配置信息对行存储页面数据进行解析,得到行存储页面数据中各列字段的偏移地址和字段长度,进而计算获得各数据列在列存储页面中的首偏移地址和字段长度,并生成对应于该行存储页面数据的列存储页面数据,实现了行列存储格式的转换,可见,该种实现方式将各个列字段的位置信息和字段长度考虑在内,实现了可支持变长字段数据的行列存储格式转换,有效地提高了行列转换方法的适用性。
在此基础上,请参考图4,图4为本申请所提供的另一种存储格式转换系统的结构示意图,主处理器为CPU,协处理器为FPGA。
如图4所示,系统主机侧由CPU、内存、磁盘构成,FPGA作为加速卡通过PCIe总线与主机相连,FPGA内设有高速HBM内存(High Bandwidth Memory,一种利用存储器堆叠技术的高带宽内存),用于存放待处理数据,其内部例化了多个计算单元进行数据的并行计算。
以PostgreSQL数据库为例,基于上述存储格式转换系统,存储格式转换方法的实现流程可以包括:
1、主机侧CPU从磁盘中读取数据库文件数据到主机内存中;
2、将PostgreSQL中的行存储页面数据发送至FPGA的HBM内存中;
3、对FPGA进行参数配置;
4、FPGA内部例化有多个计算单元,每个计算单元用于完成行存储格式到列存储格式的转换;
5、将转换后的列存储页面数据回写到FPGA的HBM内存中;
6、主机侧CPU从FPGA的HBM内存中将转换后的数据读取到主机内存中;
7、CPU获取转换后的数据为列存储格式。
第一方面,由FPGA转换后的列存储格式如下:
(1)相同列的字段数据连续存放在字段数据区(字段区域);
(2)对于变长字段数据,通过变长字段索引表示变长字段数据在内存块中的偏移和长度(变长字段索引区域);
(3)通过列数据索引标记各个数据列在内存块中的首地址偏移与长度,同时添加每个数据列的最大值与最小值,用于优化数据读取(列数据索引区域)。
第二方面,PostgreSQL数据库以8KB为单位存放数据,每个8KB内存块称为一个页面,即行存储页面数据。请参考图5,图5为本申请所提供的一种行存储页面数据的存储格式示意图,其存储规则如下:
(1)一个页面中存放若干条行数据,页面固定位置标记页面内存放的行数;
(2)每个行数据封装为一个元组,元组内除头部信息外依次存放各个字段的数据(包括变长字段与定长字段);
(3)从页面的固定偏移位置开始,向页面底部方向存放元组的元信息,元信息中包含了元组的偏移和长度;
(4)从页面底部开始,向页面顶部方向依次存放元组。
其中,每一行元组中包含一到多个列字段,列字段有定长与不定长两种情况。在数据表创建时,PostgreSQL会创建相应的元组描述符(对应源码中的tupDesc数据结构),用于描述表中各个列的字段长度、字段对齐方式、字段类型等信息。在元组描述符中:
(1)attlen字段,表示该列的字段长度:
对于定长字段:元组描述符中的attlen字段大于0,表示对应列字段的长度;
对于变长数据:元组描述符中的attlen字段等于-1,表示对应列字段为变长字段,变长字段的长度信息放在列数据的头部,值右移一位减1,为列长度。
(2)attalign字段,表示该列的字段对齐方式:
列字段的对齐方式有1、2、4、8四种可能,列数据的存放地址,需要按照该对齐方式进行对齐。
(3)atttype字段,表示该列的字段类型:
常见类型有:整形、浮点数、字符串、日期等(数值对应源码中src/backend/catalog/pg_type_d.h)。
(4)natts字段,表示元组中一共有多少个列字段。
第三方面,可以支持对PostgreSQL原生格式解析的硬件加速,由硬件完成对原生格式的解析处理逻辑,因此,只需要从磁盘中读取数据库文件,将文件内容分块后传输到FPGA的HBM内存即可。
第四方面,对FPGA的参数配置:
对FPGA进行参数配置,旨在告知FPGA行存储页面内元组中各个列字段的格式。其中,配置参数由PostgreSQL元组描述符转换而来,可以通过提取硬件解析元组所需字段组成连续码流,码流格式如图6所示,图6为本申请所提供的一种配置参数码流的格式示意图,其中,码流头部4个字节表示元组中列字段的个数,后续4个字节存放排序列索引号(不需要排序时索引号等于-1),随后依次存放各个列的字段类型、字段长度、字段对齐方式。
基于以上四个方面,以下提供了一个举例:
例如,创建如图7所示的记录,图7为本申请所提供的一种行存储页面数据对应的数据表的示意图,该数据表共有5行记录。其中,ID和Age列为整形(INT4),Name和Position列为字符串(VARCHAR),Salary列为浮点数(FLOAT8),各个列字段所对应的字段类型(atttype),在源码中src/backend/catalog/pg_type_d.h定义如下:
#define INT4OID 23;
#define VARCHAROID 1043;
#define FLOAT8OID 701。
进一步,PostgreSQL数据库所生成的元组描述符中,natts字段等于5,atttype、attalign、attlen字段如图8所示,图8为本申请所提供的一种元组描述符的示意图,根据该元组描述符所生成的解析参数码流,如图9所示,图9为本申请所提供的一种配置参数码流的示意图,其中,1、3、5列为定长类型,可用于排序,如果无需进行排序,则填充排序索引号为-1。
假设,在PostgreSQL中,页面中的存储数据如图10所示,图10为本申请所提供的一种行存储页面数据的示意图,其解析过程为:
(1)页面第12-13字节,表示页面内存储的行数,按照图5所示解析规则可得出行数为5;
(2)页面在第24字节偏移开始,向页面底部方向,依次存放各个行的元信息;
(3)从页面底部开始向顶部方向,依次存放各个行数据,数据以元组的形式封装。
以第一个元组位置的解析为例:
(1)元信息值为0x709fc8;
(2)元信息中0-14比特,代表对应元组在页面内的偏移,可计算出元组偏移为0x1fc8;
(3)元信息中17-32比特,代表对应元组的长度,可计算出元组的长度原始值为56。
其中,第一个元组,各个列字段的解析过程可以如图11所示,图11为本申请所提供的一种列字段解析原理示意图,其解析过程为:首先,在元组偏移22字节处,标记了列字段在元组中的偏移位置为0x18,计算得出第1列地址偏移为0x1fe0;随后根据attlen、attalign解析出各个字段在元组中的位置,根据atttype解析出各个字段含义。
第五方面,行列转换格式规则,其特点如下:
(1)为了能够支持列字段的高效读取操作,在转换后的列存储格式中添加变长字段索引区域,变长字段索引中包含了每变长列字段在内存块中的偏移位置和字段长度;
(2)在转换后的存储格式中添加列数据索引区域,在列数据索引中,以固定4B长度标识经过行列转换后,各个数据列在内存中的首地址;
(3)在行列转换过程中,记录一列数据中的最大值与最小值(变长数据列除外),将最小值与最大值作为列的极限值存入列数据索引中,有基于此,当数据库进行OLAP查询时,筛选条件发现该列的极限值不满足条件,则直接跳过该内存块的读取,减少数据读取与计算操作;
(4)不同的列字段可能会有对齐方式的要求,在相邻的两列数据间,通过填充数据保障列字段在内存中的数据对齐。
基于此,实现行列格式转换的操作步骤如下:
假设,一个数据表中有A、B、C、D、E五个字段,创建该数据表时,各个元组描述符信息如图12所示,图12为本申请所提供的另一种元组描述符的示意图,其在PostgreSQL数据库中的存储方式,如图13所示,图13为图12所示元组描述符在PostgreSQL数据库中的存储示意图,其中,每个字段的数据在内存中连续存放;对于定长字段,直接存储该字段数据,如图13中★所示;对于变长字段,除了变长字段本身的内容外,还会在变长字段的头部存放该字段的长度值,如图13中☆所示。
在将图13所示元组描述符对应的行存储页面进行行列格式转换后,所获得的列存储页面数据的存储格式如图14所示,图14为本申请所提供的一种列存储页面数据的存储格式示意图,其中:
(1)定长字段与变长字段的数据内容(如图14中★所示)连续存放在字段数据区中,包含:1A★、2A★、3A★,1B★、2B★、3B★,1C★、2C★、3C★,1D★、2D★、3D★,1E★、2E★、3E★,使用填充数据保障列数据的对齐;
(2)变长字段的数据内容在内存中的偏移(如图14中*所示)与变长字段的数据内容的长度(如图14中☆所示),连续存放在变长字段索引中,包含:1B*、1B☆,2B*、2B☆,3B*、3B☆,1D*、1D☆,2D*、2D☆,3D*、3D☆;
(3)转换后各个数据列在内存块中的偏移(如图14中▲所示)与长度(如图14中△所示),存放在列数据索,包含:A▲、A△;B▲、B△;C▲、C△;D▲、D△;E▲、E△;
(4)对应定长数据列,在转换过程中会记录该数据列中的最大值与最小值,存放在列数据索引中,包含Amax、Amin;Cmax、Cmin;Emax、Emin,变长数据列不计算最大值与最小值,使用填充数据进行对齐填充。
基于以上第五方面,以下提供了一个举例:
以图7所示数据表为例,如若不使能排序,转换为列存储模式后,如图15所示,如若按照薪资(Salary)排序,转换为列存储模式后,如图16所示。其中,图15为本申请所提供的一种不使能排序的列存储页面数据的示意图,图16为本申请所提供的一种使能排序的列存储页面数据的示意图。
第六方面,FPGA的内部设计及工作流程:
FPGA擅长并行与流水计算,对于固定的算法,采用专用硬件电路可大幅提升运算效率。FPGA的设计有如下特点:
(1)在FPGA内部例化16个计算单元,每个计算单元分配一块独立的HBM内存,所有计算单元并行解析PostgreSQL页面数据,完成行存储到列存储的转换;
(2)以PostgreSQL页面为单位进行行列转换,行列解析模块根据PostgreSQL页面的存储格式进行解析,解析出每一列字段在页面内的位置和长度,解析结果封装为列描述符结构,行列解析模块可以一次读取8个页面,交由内部8个执行通道并行解析;
(3)解析得到列描述符后,用户可选择某一列为主键,将列描述符按照主键的值进行排序,使能排序功能后,相应的行数据会按照主键排序后的结果进行行列转换;
(4)在进行行列解析的过程中,统计每一列数据的总长度,每一列数据的最大值与最小值,其中,列长度统计信息用于计算各个数据列在列存储页面中的偏移;列数据的最大值与最小值用于填充列数据索引;
(5)每个计算单元内部,例化8个执行通道,每个通道解析一个页面,以匹配读取模块与回写模块的处理速度,每个执行通道均可以包括行列解析模块、排序模块、计算拷贝偏移模块、字段拷贝模块以及填充索引模块;
(6)每个模块间使用乒乓缓存,实现模块间的流水运行。
基于以上设计特点,请参考图17,图17为本申请所提供的一种FPGA中计算单元的结构示意图,FPGA中的每个计算单元均包含读取、行列解析、排序、计算拷贝偏移、字段拷贝、填充索引、回写七个模块,各个模块间使用乒乓缓存实现流水运行,其中排序模块为可选,模块之间的工作流程如图18所示,图18为本申请所提供的一种FPGA中计算单元的工作流程示意图,各个模块的具体工作内容如下:
(1)读取模块:
读取模块,用于完成数据从外部HBM内存到内部RAM缓存的读取,数据读取使用512bit位宽,一次读取8个页面,共64KB数据,通过乒乓缓存传递到行列解析模块。
(2)行列解析模块:
行列解析模块,用于从读取模块中获取页面数据,一次获取8个页面。每个计算单元内部例化8个执行通道,每个通道使用64bit位宽读取页面数据,并根据配置参数并行解析各个列在页面中的偏移与长度,并且,每个通道的输出结果为列描述符,列描述符包含各列数据在页面中的位置、字段长度,定长数据的最大值、最小值。其中,每个执行通道的工作流程如图19所示,图19为本申请所提供的一种执行通道的工作流程示意图。
(3)排序模块:
排序模块,为可选功能,当解析参数配置列索引号大于0时,将列描述符按照索引号对应的列进行排序,页面中的数据经过排序后,可用于优化OLAP查询业务时的数据读取操作。例如,如图20所示,图20为本申请所提供的另一种使能排序的列存储页面的示意图,其使能排序为按照薪资排序,当对其进行OLAP查询,获取薪资大于15000的员工信息时,可以采用如下优化读取方式:
①读取薪资列,计算后得知从第3列开始满足条件;
②由于列数据是有序排列的,因此后续的列数据,直接从列数据中第3列开始读取,跳过1、2列数据,从而减少数据的读取量。在数据量更大时,优化效果更为明显。
(4)计算拷贝偏移模块:
计算拷贝偏移模块,根据解析出的列描述符,完成各列存储页面中的各个区域的偏移量计算,工作流程如下:
①根据各个列字段的字段长度,统计各个数据列的总长度:
遍历列字段,累加获得列字段总长度。
②根据各个数据列的总长度和列字段对齐方式,分配各个列字段在字段数据区中的偏移,并记录最大值与最小值:
第一步:初始偏移值为0;
第二步:将偏移值按字段对齐值进行对齐;
第三步:累加各个数据列的总长度,更新最大值与最小值;
第四步:最后一个列则退出,否则跳转到第二步。
③计算变长字段索引在页面中的偏移与长度:
第一步:从字段数据区结尾开始,按对应字段对齐后,作为变长字段索引在页面中的偏移;
第二步:每个变长字段占用4个字节,偏移与长度各使用2个字节;
第三步:统计变长字段总长度,计算得到变长字段索引区的结束地址。
④计算列数据索引的偏移与长度:
第一步:变长字段索引区的结束地址,按照8字节对齐后,开始作为列索引起始偏移;
第二步:每个列索引固定占用32字节,最大值、最小值各占用8字节,列偏移与长度各占2字节,其余部分使用填充对齐。
(5)字段拷贝模块:
字段拷贝模块,根据列描述符与(4)中的拷贝偏移,将各个列字段依次拷贝到对应的位置,完成列存储模式下,字段数据区的拷贝;并且,在拷贝的过程中,更新列描述符中的偏移字段为在列存储页面中的位置。
(6)填充索引信息模块:
填充索引信息模块,根据(4)中的拷贝偏移与更新后的列描述符,填充变长字段索引与列数据索引。
(7)回写模块:
回写模块,将转换完成后的列存页面数据回写到HBM内存中,其中,数据回写使用512bit位宽。
基于以上第六方面,以下提供了一个举例,该举例以一个执行通道的解析过程为例,实现方式如下:
(1)假设读取模块获取一个页面数据如图21所示,图21为本申请所提供的另一种行存储页面数据的示意图;
(2)通过行列解析模块解析各个行的列字段,生成列描述符,记录各个列字段的偏移与长度,更新定长字段的最大值和最小值,如图22所示,图22为本申请所提供的一种列描述符的生成原理示意图;
(3)通过排序模块按照某个列字段对列描述符进行排序,由于列描述符中已经包含了各个列字段在页面中的偏移位置,因此可直接通过列描述符读取到数据,以薪资(Salary)排序为例,如图23所示,图23为本申请所提供的一种列描述符的排序原理示意图;
(4)通过偏移位置计算模块,根据列描述符计算在列存储模式下各个列数据的首地址偏移,主要步骤为:①统计各个数据列的长度;②根据对齐值,将各个数据列进行对齐存放,同时更新最大值最小值;③计算变长字段索引位置;④计算各个列索引的起始偏移和长度;其计算过程如图24所示,图24为本申请所提供的一种列存储页面中拷贝信息的计算原理示意图;
(5)通过字段拷贝模块,根据更新后的列描述符,从行存储页面中,将各个字段拷贝到列存储页面中,拷贝完成后,更新列描述符为各个字段在列存储页面中的偏移值,如图25所示,图25为本申请所提供的一种列描述符的更新原理示意图;
(6)通过填充索引信息模块,根据更新后的列描述符完成索引区域的填充,如图26所示,图26为本申请所提供的一种列存储页面数据的生成原理示意图。
显然,本申请实施例所提供的技术方案具有如下优势:
(1)针对PostgreSQL原生存储格式开发,可与PostgreSQL数据库进行无缝对接,无需中间层数据转换;
(2)支持不定长元组及变长字段;
(3)对变长字段的元信息进行重定位,将变长字段的元信息重新计算后进行集中存放,可以有效提高数据读取效率,更利于并行计算;
(4)在运算的过程中添加了统计信息,便于进行OLAP业务时,跳过不满足条件的数据块;
(5)可选的键值排序功能,使转换后的数据按照键值排序,可以在执行OLAP业务时减少冗余数据的读取。
本申请实施例提供了一种存储格式转换装置。
请参考图27,图27为本申请所提供的一种存储格式转换装置的结构示意图,该存储格式转换装置可应用于协处理器,包括:
获取模块1,用于获取主处理器发送的行存储页面数据与配置信息,配置信息包括行存储页面内各列字段的格式信息;
解析模块2,用于根据配置信息对行存储页面数据进行解析,获得列描述符,列描述符包括各列字段在行存储页面中的首偏移地址和字段长度;
计算模块3,用于根据列描述符计算获得关于列存储页面的填充信息,填充信息包括各数据列在列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各列字段组成一个数据列;
填充模块4,用于根据填充信息对列存储页面进行填充,生成列存储页面数据;
反馈模块5,用于将列存储页面数据反馈至主处理器。
可见,本申请实施例所提供的存储格式转换装置,结合协处理器实现行列存储格式的转换,可以有效避免主处理器算力资源的大量消耗,保证较高的工作效率,同时,结合配置信息对行存储页面数据进行解析,得到行存储页面数据中各列字段的偏移地址和字段长度,进而计算获得各数据列在列存储页面中的首偏移地址和字段长度,并生成对应于该行存储页面数据的列存储页面数据,实现了行列存储格式的转换,可见,该种实现方式将各个列字段的位置信息和字段长度考虑在内,实现了可支持变长字段数据的行列存储格式转换,有效地提高了行列转换方法的适用性。
在本申请的一个实施例中,上述解析模块2可具体用于确定行存储页面数据的数据存储格式;根据数据存储格式和配置信息对行存储页面数据进行解析,获得列描述符;其中,配置信息由主处理器基于行存储页面数据对应的元组描述符生成。
在本申请的一个实施例中,上述填充信息还可以包括各变长列字段的首偏移地址和字段长度,定长数据列的最大值和最小值,上述填充模块4可具体用于根据各数据列在列存储页面中的首偏移地址和列长度,将各列字段填充至列存储页面的字段区域;将各变长列字段的首偏移地址和字段长度填充至列存储页面的变长字段索引区域;将各数据列的首偏移地址和列长度、定长数据列的最大值和最小值填充至列存储页面的列数据索引区域。
在本申请的一个实施例中,该存储格式转换装置还可以包括排序模块,用于在上述对行存储页面数据进行解析,获得列描述符之后,获取排序使能信息;根据排序使能信息确定排序数据列;根据排序数据列的排序方式对列描述符进行排序,获得排序后的列描述符。
在本申请的一个实施例中,上述协处理器可以包括第一预设数量个计算单元和第一预设数量个存储器,每一计算单元对应于一个存储器,上述获取模块1可具体用于从当前计算单元对应的存储器中读取获得行存储页面数据,行存储页面数据由主处理器发送至存储器。
在本申请的一个实施例中,每一计算单元可以包括第二预设数量个执行通道,上述获取模块1可具体用于从当前计算单元对应的存储器中读取获得第二预设数量个行存储页面数据;
该存储格式转换装置还可以包括分发模块,用于在上述从当前计算单元对应的存储器中读取获得行存储页面数据之后,将第二预设数量个行存储页面数据分发至第二预设数量个执行通道,以利用各执行通道执行对行存储页面数据进行解析,获得列描述符的步骤。
在本申请的一个实施例中,上述反馈模块5可具体用于将各列存储页面回写至当前计算单元对应的存储器,以使主处理器从各存储器中读取获得各列存储页面数据。
在本申请的一个实施例中,该存储格式转换装置还可以包括压缩模块,用于在上述将列存储页面数据反馈至主处理器之前,根据各数据列对应的预设压缩算法对列存储页面数据中的各列字段进行压缩处理,获得压缩处理后的列存储页面数据。
对于本申请实施例提供的装置的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请实施例提供了另一种存储格式转换装置。
请参考图28,图28为本申请所提供的另一种存储格式转换装置的结构示意图,该存储格式转换装置可应用于主处理器,包括:
第一获取模块6,用于获取行存储页面数据以及行存储页面数据对应的元组描述符;
生成模块7,用于根据元组描述符生成关于行存储页面数据的配置信息,配置信息包括行存储页面数据中各列字段的格式信息;
发送模块8,用于将行存储页面数据和配置信息发送至协处理器,以使协处理器根据配置信息将行存储页面数据转换为列存储页面数据;
第二获取模块9,用于获取协处理器反馈的列存储页面数据。
可见,本申请实施例所提供的存储格式转换装置,结合协处理器实现行列存储格式的转换,可以有效避免主处理器算力资源的大量消耗,保证较高的工作效率。
对于本申请实施例提供的装置的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请实施例提供了一种电子设备。
请参考图29,图29为本申请所提供的一种电子设备的结构示意图,该电子设备可包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时可实现如上述任意一种存储格式转换方法的步骤。
如图29所示,为电子设备的组成结构示意图,电子设备可以包括:处理器10、存储器11、通信接口12和通信总线13。处理器10、存储器11、通信接口12均通过通信总线13完成相互间的通信。
在本申请实施例中,处理器10可以为中央处理器(Central Processing Unit,CPU)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
处理器10可以调用存储器11中存储的程序,具体的,处理器10可以执行存储格式转换方法的实施例中的操作。
存储器11中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器11中至少存储有用于实现以下功能的程序:
获取主处理器发送的行存储页面数据与配置信息,配置信息包括行存储页面内各列字段的格式信息;
根据配置信息对行存储页面数据进行解析,获得列描述符,列描述符包括各列字段在行存储页面中的首偏移地址和字段长度;
根据列描述符计算获得关于列存储页面的填充信息,填充信息包括各数据列在列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各列字段组成一个数据列;
根据填充信息对列存储页面进行填充,生成列存储页面数据;
将列存储页面数据反馈至主处理器;
或者,
获取行存储页面数据以及行存储页面数据对应的元组描述符;
根据元组描述符生成关于行存储页面数据的配置信息,配置信息包括行存储页面数据中各列字段的格式信息;
将行存储页面数据和配置信息发送至协处理器,以使协处理器根据配置信息将行存储页面数据转换为列存储页面数据;
获取协处理器反馈的列存储页面数据。
在一种可能的实现方式中,存储器11可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能所需的应用程序等;存储数据区可存储使用过程中所创建的数据。
此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
通信接口12可以为通信模块的接口,用于与其他设备或者系统连接。
当然,需要说明的是,图29所示的结构并不构成对本申请实施例中电子设备的限定,在实际应用中电子设备可以包括比图29所示的更多或更少的部件,或者组合某些部件。
本申请实施例提供了一种计算机可读存储介质。
本申请实施例所提供的计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如上述任意一种存储格式转换方法的步骤。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请实施例提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请的保护范围内。

Claims (15)

1.一种存储格式转换方法,其特征在于,应用于协处理器,包括:
获取主处理器发送的行存储页面数据与配置信息,所述配置信息包括所述行存储页面内各列字段的格式信息;
根据所述配置信息对所述行存储页面数据进行解析,获得列描述符,所述列描述符包括各所述列字段在行存储页面中的首偏移地址和字段长度;
根据所述列描述符计算获得关于列存储页面的填充信息,所述填充信息包括各数据列在所述列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各所述列字段组成一个数据列;
根据所述填充信息对所述列存储页面进行填充,生成列存储页面数据;
将所述列存储页面数据反馈至所述主处理器。
2.根据权利要求1所述的存储格式转换方法,其特征在于,所述根据所述配置信息对所述行存储页面数据进行解析,获得列描述符,包括:
确定所述行存储页面数据的数据存储格式;
根据所述数据存储格式和所述配置信息对所述行存储页面数据进行解析,获得所述列描述符;
其中,所述配置信息由所述主处理器基于所述行存储页面数据对应的元组描述符生成。
3.根据权利要求1所述的存储格式转换方法,其特征在于,所述填充信息还包括各变长列字段的首偏移地址和字段长度,定长数据列的最大值和最小值,所述根据所述填充信息对所述列存储页面进行填充,生成列存储页面数据,包括:
根据各所述数据列在所述列存储页面中的首偏移地址和列长度,将各所述列字段填充至所述列存储页面的字段区域;
将各所述变长列字段的首偏移地址和字段长度填充至所述列存储页面的变长字段索引区域;
将各所述数据列的首偏移地址和列长度、所述定长数据列的最大值和最小值填充至所述列存储页面的列数据索引区域。
4.根据权利要求1所述的存储格式转换方法,其特征在于,所述对所述行存储页面数据进行解析,获得列描述符之后,还包括:
获取排序使能信息;
根据所述排序使能信息确定排序数据列;
根据所述排序数据列的排序方式对所述列描述符进行排序,获得排序后的列描述符。
5.根据权利要求1所述的存储格式转换方法,其特征在于,所述协处理器包括第一预设数量个计算单元和所述第一预设数量个存储器,每一所述计算单元对应于一个所述存储器,所述获取主处理器发送的行存储页面数据,包括:
从当前计算单元对应的存储器中读取获得所述行存储页面数据,所述行存储页面数据由所述主处理器发送至所述存储器。
6.根据权利要求5所述的存储格式转换方法,其特征在于,每一所述计算单元包括第二预设数量个执行通道,所述从当前计算单元对应的存储器中读取获得所述行存储页面数据,包括:
从所述当前计算单元对应的存储器中读取获得所述第二预设数量个行存储页面数据;
所述从当前计算单元对应的存储器中读取获得所述行存储页面数据之后,还包括:
将所述第二预设数量个行存储页面数据分发至所述第二预设数量个执行通道,以利用各所述执行通道执行所述对所述行存储页面数据进行解析,获得列描述符的步骤。
7.根据权利要求6所述的存储格式转换方法,其特征在于,所述将所述列存储页面数据反馈至所述主处理器,包括:
将各所述列存储页面回写至所述当前计算单元对应的存储器,以使所述主处理器从各所述存储器中读取获得各所述列存储页面数据。
8.根据权利要求1至7任一项所述的存储格式转换方法,其特征在于,所述将所述列存储页面数据反馈至所述主处理器之前,还包括:
根据各数据列对应的预设压缩算法对所述列存储页面数据中的各列字段进行压缩处理,获得压缩处理后的列存储页面数据。
9.一种存储格式转换方法,其特征在于,应用于主处理器,包括:
获取行存储页面数据以及所述行存储页面数据对应的元组描述符;
根据所述元组描述符生成关于所述行存储页面数据的配置信息,所述配置信息包括所述行存储页面数据中各列字段的格式信息;
将所述行存储页面数据和所述配置信息发送至协处理器,以使所述协处理器根据所述配置信息将所述行存储页面数据转换为列存储页面数据;
获取所述协处理器反馈的所述列存储页面数据;
其中,所述协处理器根据所述配置信息将所述行存储页面数据转换为列存储页面数据的过程包括:
根据所述配置信息对所述行存储页面数据进行解析,获得列描述符,所述列描述符包括各所述列字段在行存储页面中的首偏移地址和字段长度;
根据所述列描述符计算获得关于列存储页面的填充信息,所述填充信息包括各数据列在所述列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各所述列字段组成一个数据列;
根据所述填充信息对所述列存储页面进行填充,生成列存储页面数据。
10.一种存储格式转换系统,其特征在于,包括主处理器和协处理器;
所述主处理器,用于发送行存储页面数据和配置信息至所述协处理器,并获取所述协处理器反馈的列存储页面数据;
所述协处理器,用于根据所述配置信息对所述行存储页面数据进行解析,获得列描述符,所述列描述符包括各列字段在行存储页面中的首偏移地址和字段长度;根据所述列描述符计算获得关于列存储页面的填充信息,所述填充信息包括各数据列在所述列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各所述列字段组成一个数据列;根据所述填充信息对所述列存储页面进行填充,生成所述列存储页面数据。
11.根据权利要求10所述的存储格式转换系统,其特征在于,所述主处理器为CPU,所述协处理器为FPGA。
12.一种存储格式转换装置,其特征在于,应用于协处理器,包括:
获取模块,用于获取主处理器发送的行存储页面数据与配置信息,所述配置信息包括所述行存储页面内各列字段的格式信息;
解析模块,用于根据所述配置信息对所述行存储页面数据进行解析,获得列描述符,所述列描述符包括各所述列字段在行存储页面中的首偏移地址和字段长度;
计算模块,用于根据所述列描述符计算获得关于列存储页面的填充信息,所述填充信息包括各数据列在所述列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各所述列字段组成一个数据列;
填充模块,用于根据所述填充信息对所述列存储页面进行填充,生成列存储页面数据;
反馈模块,用于将所述列存储页面数据反馈至所述主处理器。
13.一种存储格式转换装置,其特征在于,应用于主处理器,包括:
第一获取模块,用于获取行存储页面数据以及所述行存储页面数据对应的元组描述符;
生成模块,用于根据所述元组描述符生成关于所述行存储页面数据的配置信息,所述配置信息包括所述行存储页面数据中各列字段的格式信息;
发送模块,用于将所述行存储页面数据和所述配置信息发送至协处理器,以使所述协处理器根据所述配置信息将所述行存储页面数据转换为列存储页面数据;
第二获取模块,用于获取所述协处理器反馈的所述列存储页面数据;
其中,所述协处理器根据所述配置信息将所述行存储页面数据转换为列存储页面数据的过程包括:
根据所述配置信息对所述行存储页面数据进行解析,获得列描述符,所述列描述符包括各所述列字段在行存储页面中的首偏移地址和字段长度;
根据所述列描述符计算获得关于列存储页面的填充信息,所述填充信息包括各数据列在所述列存储页面中的首偏移地址和列长度,其中,具有相同字段属性的各所述列字段组成一个数据列;
根据所述填充信息对所述列存储页面进行填充,生成列存储页面数据。
14.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述的存储格式转换方法的步骤或者如权利要求9所述的存储格式转换方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的存储格式转换方法的步骤或者如权利要求9所述的存储格式转换方法的步骤。
CN202211395237.5A 2022-11-09 2022-11-09 存储格式转换方法、系统、装置、电子设备及存储介质 Active CN115438114B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211395237.5A CN115438114B (zh) 2022-11-09 2022-11-09 存储格式转换方法、系统、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211395237.5A CN115438114B (zh) 2022-11-09 2022-11-09 存储格式转换方法、系统、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN115438114A CN115438114A (zh) 2022-12-06
CN115438114B true CN115438114B (zh) 2023-03-24

Family

ID=84252567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211395237.5A Active CN115438114B (zh) 2022-11-09 2022-11-09 存储格式转换方法、系统、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115438114B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116302178B (zh) * 2023-02-23 2023-10-20 合肥申威睿思信息科技有限公司 一种列存数据的加速处理方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542889A (zh) * 2018-10-11 2019-03-29 平安科技(深圳)有限公司 流式数据列存储方法、装置、设备和存储介质
CN110109910A (zh) * 2018-01-08 2019-08-09 广东神马搜索科技有限公司 数据处理方法及系统、电子设备和计算机可读存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999519B (zh) * 2011-09-15 2017-05-17 上海盛付通电子商务有限公司 一种数据库的读写方法及系统
US10394822B2 (en) * 2015-09-25 2019-08-27 Mongodb, Inc. Systems and methods for data conversion and comparison
US10261949B2 (en) * 2016-04-01 2019-04-16 Arista Networks, Inc. Packed row representation for efficient network serialization with direct column indexing in a network switch
CN106874437B (zh) * 2017-02-04 2019-08-23 中国人民大学 面向数据库一体机的内存数据仓库行列存储转换实现方法
CN110309233B (zh) * 2018-03-28 2022-11-15 腾讯科技(深圳)有限公司 数据存储的方法、装置、服务器和存储介质
CN108875077B (zh) * 2018-07-10 2021-02-09 上海达梦数据库有限公司 数据库的列存储方法、装置、服务器及存储介质
CN110990402B (zh) * 2019-11-26 2020-11-13 中科驭数(北京)科技有限公司 由行存储到列存储的格式转化方法、查询方法及装置
CN114327244A (zh) * 2020-09-30 2022-04-12 华为技术有限公司 数据迁移的方法、装置、处理器和计算设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109910A (zh) * 2018-01-08 2019-08-09 广东神马搜索科技有限公司 数据处理方法及系统、电子设备和计算机可读存储介质
CN109542889A (zh) * 2018-10-11 2019-03-29 平安科技(深圳)有限公司 流式数据列存储方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN115438114A (zh) 2022-12-06

Similar Documents

Publication Publication Date Title
US20200117510A1 (en) Data set compression within a database system
Lemire et al. Consistently faster and smaller compressed bitmaps with roaring
CN102411616B (zh) 一种数据存储方法和系统及数据管理方法
CN115438114B (zh) 存储格式转换方法、系统、装置、电子设备及存储介质
CN102880615A (zh) 一种数据存储方法和装置
CN105144157A (zh) 用于压缩数据库中的数据的系统和方法
CN109582231B (zh) 数据存储方法、装置、电子设备及存储介质
US9137336B1 (en) Data compression techniques
CN108628898A (zh) 数据入库的方法、装置和设备
US20240126762A1 (en) Creating compressed data slabs that each include compressed data and compression information for storage in a database system
CN105191144A (zh) 压缩装置、压缩方法、解压装置、解压方法以及信息处理系统
RU2633178C2 (ru) Способ и система базы данных для индексирования ссылок на документы базы данных
CN111291041B (zh) 列数据的非统一分页
CN111028897B (zh) 一种基于Hadoop的基因组索引构建的分布式并行计算方法
CN113468107A (zh) 数据处理方法、设备、存储介质及系统
US20210326320A1 (en) Data segment storing in a database system
EP3963853B1 (en) Optimizing storage and retrieval of compressed data
CN111190896B (zh) 数据处理方法、装置、存储介质和计算机设备
CN111984651A (zh) 一种基于持久性内存的列式存储方法、装置及设备
JP2011090526A (ja) 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置
CN115617878B (zh) 一种数据查询方法、系统、装置、设备及计算机存储介质
CN111752954B (zh) 一种大规模特征数据存储的方法及装置
CN112000707B (zh) 可变长序列匹配方法、数据库访问方法及装置
WO2018082245A1 (zh) 栅格数据聚合方法和装置、栅格数据解耦方法和装置及系统
CN113268459A (zh) 基于fastq基因大数据的批量分布式压缩方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant