由行存储到列存储的格式转化方法、查询方法及装置制造方法及图纸

技术编号:23764337 阅读:18 留言:0更新日期:2020-04-11 19:02
本发明专利技术提供了一种由行存储到列存储的格式转化方法、查询方法及装置,该格式转化方法包括:读取数据库结构体类型的行存储表数据,并将读取的行存储表数据存储至数据库结构体类型的表中;从结构体类型的表读取表总数和各表表名,解析数据库结构体类型的表中的各表,得到行存储表数据的各表的各列的列名和列数据类型,以及获取硬件解析所述数据库所需信息;根据表总数、表名、列名及列数据类型创建包含硬件解析数据库所需信息的设定列存储格式的列容器;以行为单位从解析后的行存储表数据的各表读取数据,并将以行为单位读取的数据存储至列容器中,得到列存储表数据。通过上述方案能够实现存储格式转化,提高硬件解析数据库的效率和速度。

Format conversion method, query method and device from row storage to column storage

【技术实现步骤摘要】
由行存储到列存储的格式转化方法、查询方法及装置
本专利技术涉及数据存储
,尤其涉及一种由行存储到列存储的格式转化方法、查询方法及装置。
技术介绍
在信息时代,信息的存储、管理、查询、更新都非常重要。随着数据不断增多,数据库的存储量越来越大,每一次查询操作的时间会更长,总耗时不断增多。在实际应用场景中,数据的需求量都非常大,数据库通常需要应对实时的大规模并发查询,那么能否快速响应并返回并行计算结果,就显得尤为重要。现有关系型数据库,如Oracle、DB2、MySQL、SQLSERVER,是采用行式存储法(Row-based)存储数据。在基于行式存储法存储数据的数据库中,数据是按照行数据为基础逻辑存储单元进行存储的,一行中的数据在存储介质中以连续存储形式存在,然后由数据库引擎根据每个查询提取需要的列。这种做法的缺点是必须每次处理一整行,而不是只处理自己需要的列。于此同时,行存储并不利于并行计算,会在需要处理大量数据的时候非常慢。
技术实现思路
本专利技术实施例提供了一种由行存储到列存储的格式转化方法、查询方法及装置,以实现存储格式转化,并便于数据库和硬件对接,从而提高硬件解析数据库的效率和速度。为了达到上述目的,本专利技术采用以下方案实现:根据本专利技术实施例的一个方面,提供了一种由行存储到列存储的格式转化方法,包括:读取数据库结构体类型的行存储表数据,并将读取的所述行存储表数据存储至所述数据库结构体类型的表中;从所述数据库结构体类型的表读取所述行存储表数据的表总数和各表表名;解析所述数据库结构体类型的表中的所述行存储表数据的各表,得到所述行存储表数据的各表的各列的列名和列数据类型;以及获取硬件解析所述数据库所需信息;根据所述表总数、所述表名、所述列名、所述列数据类型及硬件解析所述数据库所需信息创建包含硬件解析所述数据库所需信息的设定列存储格式的列容器;以行为单位从解析后的所述行存储表数据的各表读取数据,并将以行为单位读取的数据存储至所述列容器中,得到列存储表数据。在一些实施例中,所述数据库结构体类型的表为User表。在一些实施例中,解析所述数据库结构体类型的表中的所述行存储表数据的各表,包括:利用ODBC(OpenDatabaseConnectivity,开放数据库连接)中的函数解析所述数据库结构体类型的表中的所述行存储表数据的各表。在一些实施例中,以行为单位从解析后的所述行存储表数据的各表读取数据,包括:利用ODBC中的nextline函数以行为单位从解析后的所述行存储表数据的各表逐行读取数据。在一些实施例中,所述硬件解析所述数据库所需信息包括总列数、写偏移量、读偏移量、各列列偏移量、各列总行数、及各列中各行数据长度。在一些实施例中,所述硬件解析所述数据库所需信息还包括:各列列数据类型。在一些实施例中,所述硬件解析所述数据库所需信息还包括:总字节数和各列总字节数。在一些实施例中,各所述硬件解析所述数据库所需信息占4个字节。在一些实施例中,所述设定列存储格式能够使得所述硬件在解析所述数据库时,先读取总列数、总字节数、写偏移量及读偏移量,再读取列偏移量,之后读取列总行数、列总字节数及列数据类型,然后读取列中行数据长度。在一些实施例中,获取硬件解析所述数据库所需信息,包括:通过对行存储表数据进行统计计算得到解析所述数据库所需信息。根据本专利技术实施例的另一个方面,提供了一种数据库查询方法,包括:接收查询语句,并根据所述查询语句确定需要读取的数据库中结构体类型的行存储表数据;利用上述实施例所述的格式转化方法将所述行存储表数据转化为列存储表数据;利用硬件解析所述列存储表数据,并从解析后的所述列存储表数据读取所述查询语句所需数据;根据读取的所述查询语句所需数据返回所述查询语句的查询结果。根据本专利技术实施例的又一个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例所述方法的步骤。在一些实施例中,所述硬件为硬件加速器。根据本专利技术实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述方法的步骤。本专利技术实施例的由行存储到列存储的格式转化方法、数据库查询方法、电子设备及计算机可读存储介质,能够实现将数据库中行存储的表数据转化为列存储的表数据,减少数据查找冗余,提高数据查找速度。而且,通过创建包含硬件解析所述数据库所需信息的列存储格式的列容器来存储列数据,能够便于硬件解析转化得到的列存储格式的表数据,从而便于实现数据库与硬件对接,从而提高硬件解析数据库的效率和速度。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1是本专利技术一实施例的由行存储到列存储的格式转化方法的流程示意图;图2是本专利技术一实施例的数据库查询方法的流程示意图;图3是本专利技术一实施例的由行存储到列存储的格式转化方法的流程示意图;图4是本专利技术一具体实施例中列容器的存储格式的结构示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本专利技术实施例做进一步详细说明。在此,本专利技术的示意性实施例及其说明用于解释本专利技术,但并不作为对本专利技术的限定。现在大多数数据库都是采取行式存储法,但在实际应用中我们会发现,行式数据库在读取数据时存在一个固有的缺陷,比如,所选择查询的目标即是只涉及少数几个字段,但由于这些目标数据埋藏在各行数据单元中,而行单元往往又特别大,应用程序必须读取每一条完整的行记录,从而使得读取效率大大较低,对此,行式数据库给出的优化方案是加索引,在OLTP类型的应用中,通过索引机制或给表分区等手段可以简化查询操作步骤,并提升查询效率。但针对海量数据背景的OLAP应用(例如分布式数据库、数据仓库等),行存储的数据库就有些力不从心了,行式数据库建立索引和物化视图需要花费大量时间和资源,因此还是不划算的,无法从根本上解决查询性能和维护成本的问题,也不适用于数据仓库等应用场景,所以后来出现了基于列式存储的数据库。对于数据仓库和分布式数据库来说,大部分情况下它会从各个数据源汇总数据,然后进行分析和反馈,其大多数操作是围绕同一个字段(属性)进行的,而当查询某属性的数据记录时,列式数据库只需返回与列属性相关的值。在大数据量查询场景中,列式数据库可在内存中高效组装各列的值,最终形成关系记录集,因此可以显著减少IO消耗并降低查询响应时间,非常适合数据仓库和分布式的应用。对于SQLServer,可以将行存储表转换为聚集列存储索引,或创建非本文档来自技高网...

【技术保护点】
1.一种由行存储到列存储的格式转化方法,其特征在于,包括:/n读取数据库结构体类型的行存储表数据,并将读取的所述行存储表数据存储至所述数据库结构体类型的表中;/n从所述数据库结构体类型的表读取所述行存储表数据的表总数和各表表名;解析所述数据库结构体类型的表中的所述行存储表数据的各表,得到所述行存储表数据的各表的各列的列名和列数据类型;以及获取硬件解析所述数据库所需信息;/n根据所述表总数、所述表名、所述列名、所述列数据类型及硬件解析所述数据库所需信息创建包含硬件解析所述数据库所需信息的设定列存储格式的列容器;/n以行为单位从解析后的所述行存储表数据的各表读取数据,并将以行为单位读取的数据存储至所述列容器中,得到列存储表数据。/n

【技术特征摘要】
1.一种由行存储到列存储的格式转化方法,其特征在于,包括:
读取数据库结构体类型的行存储表数据,并将读取的所述行存储表数据存储至所述数据库结构体类型的表中;
从所述数据库结构体类型的表读取所述行存储表数据的表总数和各表表名;解析所述数据库结构体类型的表中的所述行存储表数据的各表,得到所述行存储表数据的各表的各列的列名和列数据类型;以及获取硬件解析所述数据库所需信息;
根据所述表总数、所述表名、所述列名、所述列数据类型及硬件解析所述数据库所需信息创建包含硬件解析所述数据库所需信息的设定列存储格式的列容器;
以行为单位从解析后的所述行存储表数据的各表读取数据,并将以行为单位读取的数据存储至所述列容器中,得到列存储表数据。


2.如权利要求1所述的由行存储到列存储的格式转化方法,其特征在于,所述数据库结构体类型的表为User表。


3.如权利要求2所述的由行存储到列存储的格式转化方法,其特征在于,解析所述数据库结构体类型的表中的所述行存储表数据的各表,包括:
利用ODBC中的函数解析所述数据库结构体类型的表中的所述行存储表数据的各表。


4.如权利要求3所述的由行存储到列存储的格式转化方法,其特征在于,以行为单位从解析后的所述行存储表数据的各表读取数据,包括:
利用ODBC中的nextline函数以行为单位从解析后的所述行存储表数据的各表逐行读取数据。


5.如权利要求1至4任一项所述的由行存储到列存储的格式转化方法,其特征在于,所述硬件解析所述数据库所需信息包括总列数、写偏移量、读偏移量、各列列偏移量、各列总行数、及各列中各行数据长度。


6.如权利要求5所述的由行存储到列存储的格式转化方法,其特征在于,所述硬件解析所述数据库所需信息还包括:各列列...

【专利技术属性】
技术研发人员:鄢贵海何莹易广庆江树浩
申请(专利权)人:中科驭数北京科技有限公司
类型:发明
国别省市:北京;11

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

1