一种基于行存数据库引擎的列存方法技术

技术编号:7434423 阅读:286 留言:0更新日期:2012-06-15 06:26
本发明专利技术公开一种基于行存数据库引擎的列存方法,包括:行存储数据库,并基于所述行数据库进行如下操作:创建压缩表,并指定相应的压缩级别;将CSV格式的数据文件导入到所创建的压缩表中,其特征在于;压缩表对外表现为一个普通的数据表,可以支持通常的DML/DDL操作;对内实现为一个主HOT数据段及一个从LOB大对象段,其中主HOT段用于存储内部定义的属性行,从LOB段用于存储压缩方法控制结构及压缩后的数据内容;压缩表支持各种查询语句,查询时虽然需要将行中所有字段读入内存,但只解压与查询相关的列数据;所述压缩表支持更新操作,且更新时仅解压代更新的列;所述压缩表支持快速删除,仅做删除标记,当从行中没有记录时,主行会被自动删除;和删除压缩表。本发明专利技术通过行存数据库技术,在不改变存储引擎物理结果的前提下,实现了按列压缩存储的技术,并达到了列存数据库高压缩比的效果。

【技术实现步骤摘要】

本专利技术涉及,属于数据库系统领域。
技术介绍
随着企业信息化程度的提高,分析型数据库的应用越来越普遍,对面向海量数据的OLAP查询效率也提出了更高的要求。近年来涌现出的列存数据库,如商业数据库 SybaselQ,开源数据库Cltore、MonetDB已被证明在只读的数据仓库查询处理中具有非常好的性能。很多实验也表明对于高选择率、高投影率和大量聚集计算的OLAP查询,列存储的性能大大好于行存储。然而由于两种方式的底层物理存储模式不同,使得用户无法在同一数据库系统中根据需要转换使用行存储和列存储两种存储模式来存储数据及执行查询。 而在同一个企业应用中面向OLTP和OLAP应用同时部署行存储和列存储两种数据库系统无疑增大了部署和维护开销,对于绝大部分企业都是无法承受的。与行存数据库相比,列存数据库的高效查询主要依赖于四大关键技术数据压缩、 延时物化、成组迭代、不可见连接等,如果能将这些有效的技术以最小的代价应用于传统行存数据库,必将极大地增强传统数据库产品的竞争力。目前,学术界提出可以使用垂直分区、全列索引、物化视图等手段,在不改变行存数据库的物理存储结构的前提下,模拟列存的某些特性。垂直分区可以减小I/O数据量,但如果查询涉及到多列,不可避免地要使用JOIN连接,导致CPU性能效果不佳;全列索引可以提高某些即时精确查询的处理效率,但会增加存储空间;物化视图可以有效地减小1/0,但需用户提前进行语句调优,操作对用户不透明。与学术界的研究相比,数据库产业界主要采取了混合存储的模式· ORACLE在Ilg 的版本中,ORACLE 使用了 PAX (PARTITION ATTRIBUTE ACROSS)技术,基本的思想是将尽可能多的数据行放入一个数据块中,但是在数据块内部使用列结构对数据加以存储,这样一来,保留了列存储数据压缩和利用缓存的优点· Greenplum, AsterData, Teradata他们的混合储存都是可以把不同的表或者同一个表的不同分区按任意方式存储 (行,列),使用的SQL语句都是透明的· Vertica在列存物理结构的基础上,将比较小的列或者经常一起读取的列放在一起,形成一个迷你组的列(mini-group),使得在读取的时候既不会增加太多10,又不会每次需要更多的随机读上述数据库产品均很好的将行存与列存结合起来,由一个统一的数据库管理系统提供透明的存储服务,但他们均在物理存储层设计了新的页面管理结构来存储列存数据, 并投入了较高的研发成本。
技术实现思路
本专利技术公开的的方法,其基本思想与ORACLE类似,但不同点在于不需要更改底层的存储引擎,而是利用行存数据库现有的大对象存储机制,通过批量导入接口将若干行数据以数据包的形式存储在大对象管理的存储结构中,数据包中的行数据按列存储,按列压缩,以达到列存数据库高压缩率的特点。具体来说,本专利技术公开了,包括行存储数据库,并基于所述行数据库进行如下操作创建压缩表,并指定相应的压缩级别;将CSV格式的数据文件导入到所创建的压缩表中,其特征在于;所述压缩表对外表现为一个普通的数据表,可以支持通常的DML/DDL操作;对内实现为一个主HOT数据段及一个从LOB大对象段,其中主HOT段用于存储内部定义的属性行,从LOB段用于存储压缩方法控制结构及压缩后的数据内容;所述压缩表支持各种查询语句,查询时虽然需要将行中所有字段读入内存,但只解压与查询相关的列数据;所述压缩表支持更新操作,且更新时仅解压代更新的列;所述压缩表支持快速删除,仅做删除标记,当从行中没有记录时,主行会被自动删除;和删除所述压缩表。本专利技术所述的列存方法,其中所述的属性行的定义包括但不限于如下字段BLOB LOB定位器,管理压缩后的数据内容INT4 该物理行管理的压缩数据的逻辑行数VARBIT(64000)该物理行管理的压缩数据中逻辑行的删除状态本专利技术所述的列存方法,其中在将CSV格式的数据文件导入到创建的压缩表时, 用户可以指定批量导入时缓存的行数。本专利技术所述的列存方法,其中在创建压缩表时,用户可以指定压缩级别。 附图说明图1是本专利技术所述方法的流程图;图2是本专利技术所定义的数据结构。具体实施例方式下面结合附图1及具体实施方式对本专利技术作进一步的描述1.如图 1 所示,首先通过 CREAET TABLE table_name COMPRESS compress_level 创建压缩表,用户可以指定压缩级别(0 9),理论上级别越高压缩比越大但速度越慢;2.通过BULK INSERT语句将CSV格式的数据文件导入到创建的压缩表中,用户可以指定批量导入时缓存的行数,值越大可能压缩效果及速度越好,但内存占用也越多;3.如图2所示,压缩表对外表现为一个普通的数据表,可以支持通常的DML/DDL操作;对内实现为一个主HOT数据段及一个从LOB大对象段,其中主HOT段用于存储内部定义的属性行,属性行的定义包括但不限于如下字段BLOB LOB定位器,管理压缩后的数据内容INT4 该物理行管理的压缩数据的逻辑行数VARBIT(64000)该物理行管理的压缩数据中逻辑行的删除状态从LOB段用于存储压缩方法控制结构及压缩后的数据内容;4.压缩表支持各种查询语句,查询时虽然需要将行中所有字段读入内存,但只解压与查询相关的列数据,考虑到经列存压缩后数据量一般有5 1的压缩率,已较传统行存数据库大大减少了 I/O量,且对于多字段查询,并不需要像列存数据库那样进行多字段的随机I/O读取,在大多数情况下查询性能与列存数据库相当;5.压缩表支持更新操作,且更新时仅解压代更新的列;6.压缩表支持快速删除,仅做删除标记,当从行中没有记录时,主行会被自动删除;7.通过 DROP TABLE table_name 可以删除压缩表。本专利技术所涉及的方法已经在神舟通用KST0RE2. 0版本的产品上得到了应用,我们将KST0RE2. 0与ORACLE Ilg进行了严格的对比测试,测试结论如下功能测试方面1)数据库压缩率测试权利要求1.,包括行存储数据库,并基于所述行数据库进行如下操作 创建压缩表,并指定相应的压缩级别;将CSV格式的数据文件导入到所创建的压缩表中,其特征在于; 所述压缩表对外表现为一个普通的数据表,可以支持通常的DML/DDL操作;对内实现为一个主HOT数据段及一个从LOB大对象段,其中主HOT段用于存储内部定义的属性行,从 LOB段用于存储压缩方法控制结构及压缩后的数据内容;所述压缩表支持各种查询语句,查询时虽然需要将行中所有字段读入内存,但只解压与查询相关的列数据;所述压缩表支持更新操作,且更新时仅解压代更新的列;所述压缩表支持快速删除,仅做删除标记,当从行中没有记录时,主行会被自动删除;和删除所述压缩表。2.根据权利要求1所述的列存方法,其中所述的属性行的定义包括但不限于如下字段BLOB LOB定位器,管理压缩后的数据内容INT4 该物理行管理的压缩数据的逻辑行数VARBIT(64000)该物理行管理的压缩数据中逻辑行的删除状态。3.根据权利要求1所述的列存方法,其中在将CSV格式的数据文件导入到创建的压缩表时,用户可以指定批量导入时缓存的行数。4.根据权利要求1所述的列存方法,其中在创建压缩表时,用户可以本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:关刚冯柯刘碧楠何清法顾云苏王嘉春蒋志勇李阳周宇
申请(专利权)人:天津神舟通用数据技术有限公司
类型:发明
国别省市:

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

1
相关领域技术