[发明专利]一种实现基于列存储的关系型数据库的方法及装置有效
申请号: | 200810187227.6 | 申请日: | 2008-12-18 |
公开(公告)号: | CN101751406A | 公开(公告)日: | 2010-06-23 |
发明(设计)人: | 赵伟 | 申请(专利权)人: | 赵伟 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 任默闻 |
地址: | 010020 内蒙古自治区呼和*** | 国省代码: | 内蒙古;15 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 基于 存储 关系 数据库 方法 装置 | ||
技术领域
本发明关于关系型数据库的存储技术,具体地讲是一种实现基于列存储 的关系型数据库的方法及装置。
背景技术
关系型数据库是一个用以存储及处理结构化数据的软件系统,它含有两 种数据:一种是逻辑数据,它是由表、记录等组成;另一种是物理数据,它 代表数据库怎样存储逻辑数据。不同的关系数据库系统或许有相同的逻辑数 据,但它们通常有不同的物理数据。实现数据库物理数据的方法有两种:一 是基于行存储,另一是基于列存储。对于基于行存储的实现方法,它把逻辑 数据表的整个记录存储到文件的数据块中,为了提高查询速度,为某些列建 立B+树等类型的索引;对于基于列存储的实现方法,逻辑数据表中的记录不 直接映射到物理数据中,而是把记录按列分开,把所有记录同一列的值存在 一起,同时提供连接数据能够把记录相应的列值重新组合起来形成记录。
其中,基于行存储的关系型数据库和基于列存储的数据库相比在数据查 询性能上有劣势,查询时,它不能只读取部分列,因为数据读取是以数据块 为基本单位,所有的列都读取到内存中然后再去掉不需要的列,这样就导致 产生了很多不必要的硬盘输入输出,从而影响了数据库的查询性能。而对于 基于列存储的关系型数据库,由于它把记录的列分开存储,不同的列存储在 不同的数据块中,这样查询引擎就可以按需读取列,从而减少了硬盘输入输 出,提高了数据库的查询性能。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:基于 行存储的关系型数据库所提供的索引一般都是稠密索引,如B+树索引,即每 一条记录的列值都必须被加入索引中,这有两方面的缺点:一是增加数据库 系统所用的存储空间,二是增加数据更新时的性能。正是由于这两方面的问 题,在基于行存储的关系型数据库中,难以为数据表中的所有列都建立索引, 这样就出现了下面的问题,如果一个查询语句是基于一个未加索引的列查询, 系统不得不做全表扫描,导致数据库的性能恶化。
而现有技术中基于列存储的关系型数据库也具有缺陷,第一是它没有对 记录进行分段存储的概念,这样就导致排序是在所有的插入列值之间进行, 值越多,插入就越慢,第二是现有技术对连接数据要求记录列值数据排序的 位置,并且要求只要是列值数据的排序位置发生变化,就要更新连接数据, 这样就导致数据插入时会出现大量的数据更新,从而影响性能。
专利号为US6606638,发明名称为“Value-instance-connectivity computer-implemented database”的美国专利提出了一个通过给列值排序实现 数据库的方法,其公开的内容合并于此以作为本发明的现有技术。
发明内容
本发明的目的在于提供一种实现基于列存储的关系型数据库的方法及装 置,以减少硬盘的输入输出,并提高数据库的查询性能。
为了实现上述目的,本发明实施例的实现基于列存储的关系型数据库的 方法包括:
步骤1,建立数据文件,并对组成数据文件的数据块按顺序编序列号;
步骤2,定义表段;
步骤3,将记录插入到表段中;
步骤4,对于插入到表段中的记录生成表段内唯一的记录标识号,并将记 录按列分开;
步骤5,对于记录中的每一个列,执行如下操作:
将列值和记录标识号作为值数据存储到数据块中并按列值大小排序;
将记录标识号和存储值数据的数据块的序列号作为连接数据存储到新的 数据块中,并按记录标识号大小排序;
步骤6、对存储值数据的数据块和存储连接数据的数据块建立通用查询索 引树,生成索引数据块,其中,所述的通用查询索引树由根、中间及叶索引 数据块组成,所述的索引数据块由索引数据元素组成,索引数据元素包括索 引键和被索引数据块的序列号,所述被索引数据块包括索引数据块、值数据 块和连接数据块,索引数据元素的索引键是被索引数据块的第一个元素的值, 如果被索引的数据块是存储值数据的值数据块,那么索引键是值数据块中第 一个值数据元素的列值;如果被索引的数据块是存储连接数据的连接数据块, 那么索引键就是连接数据块中第一个连接数据元素的记录标识号;如果被索 引的数据块是索引数据块,那么索引键就是被索引的索引数据块的第一个索 引数据元素的键值。
本发明实施例的实现基于列存储的关系型数据库的装置包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于赵伟,未经赵伟许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810187227.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:微机电系统开关
- 下一篇:光催化反应组件以及空气消毒净化装置