[发明专利]一种高性能数据存储引擎的实现方法在审
| 申请号: | 201410850174.7 | 申请日: | 2014-12-31 |
| 公开(公告)号: | CN104484471A | 公开(公告)日: | 2015-04-01 |
| 发明(设计)人: | 孟祥滨;孔德生;崔维力;武新 | 申请(专利权)人: | 天津南大通用数据技术股份有限公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 天津滨海科纬知识产权代理有限公司 12211 | 代理人: | 杨慧玲 |
| 地址: | 300384 天津市滨海新区高新区华*** | 国省代码: | 天津;12 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 性能 数据 存储 引擎 实现 方法 | ||
1.一种高性能数据存储引擎的实现方法,其特征在于,包括如下步骤:
1.1本引擎使用Key-value方式存储数据;基于Key的哈希值,组织value的存储结构;存储结构以页面为单位,包括元数据和数据两部分;
1.2所述元数据分为哈希散列表和删除标记两部分,每个哈希值对应一个散列表元素;
1.3所述每个散列表元素存储发生哈希冲突的数据,包括哈希冲突链的起始页面编号、冲突链尾页编号,以及尾页的空闲空间的偏移量;
1.4数据存储空间中,存储的每一条数据均包括以下内容:(一)Key值;(二)本条数据的入库次序号;(三)本条数据的value;
1.5所述删除标记由一个位图表示,位图的每一个比特对应一个入库次序号,为0表示数据有效,为1表示数据已删除;
1.6数据存储空间中,每个页面都在固定位置存储下一个页面的编号,从而构成页面链表;链表的最后一个页面在页面编号位置存储一个结束标记,用于标识链表尾;
1.7所述元数据分两个版本,一个称元数据1,另一个称元数据2,其中一个为读版本,另一个为写版本;
1.8读取数据时,每个读数据请求均获得一个当前元数据读版本的只读快照,并依此快照访问数据存储空间;
1.9写数据时,在元数据的写版本上进行操作,写版本是当前读版本的一个可写快照;写数据时,只允许串行写入,当一个写操作正在被处理时,其他写请求将被阻塞;
1.10写操作在提交时,将当前的写版本元数据切换为当前读版本;提交结束后,再发起的读请求都使用新的读版本元数据;
1.11更新和删除操作,都被定义为写操作,与数据追加操作互斥;
1.12删除数据时,更新写版本元数据的删除标记;提交时将当前写版本元数据切换为读版本;
1.13更新数据时,将更新操作转化成一个删除操作和一个写操作;提交时将当前写版本元数据切换为读版本。
2.根据权利要求1所述的一种高性能数据存储引擎的实现方法,其特征在于,步骤1.1所述页面的尺寸由用户指定。
3.根据权利要求1所述的一种高性能数据存储引擎的实现方法,其特征在于,步骤1.2所述元数据的哈希散列表元素个数也即哈希值的取值范围是一个恒定值,可由用户指定。
4.根据权利要求1所述的一种高性能数据存储引擎的实现方法,其特征在于,步骤1.5所述入库次序号为非负整数,在入库时生成,从0开始递增,中间不允许出现气泡。
5.根据权利要求1所述的一种高性能数据存储引擎的实现方法,其特征在于,步骤1.8所述读取数据的具体流程如下:
2.1将当前读版本元数据复制成一个只读快照;
2.2将查询的数据key值带入哈希函数,取得其哈希值,根据哈希值到只读快照的散列表中获取冲突链的起始页面位置和尾页空闲空间偏移;
2.3从起始页面开始读取数据,将每一条数据的Key值和查询的数据key值比较,如果相等则将这条数据加入结果集;
2.4循环读取当前页面中的数据,一个页面搜索完成,则通过其页面偏移读取下一页面,直到尾页的空闲空间偏移处为止;
2.5遍历只读快照的删除标记,将比特值为1的位置对应的入库次序号的数据行从结果集中删除;
2.6返回结果集。
6.根据权利要求1所述的一种高性能数据存储引擎的实现方法,其特征在于,步骤1.9所述写数据操作的具体流程如下:
3.1将当前读版本元数据复制成一个可写快照,作为写版本元数据,并锁定写版本元数据,阻止并发写入;
3.2将要写入的数据key值带入哈希函数,取得其哈希值,根据哈希值到可写快照的散列表中获取冲突链的尾页位置和尾页空闲空间偏移;
3.3如果尾页空间足够,则将数据追加至尾页空闲空间,并更新可写快照对应的尾页空闲空间偏移;
3.4如果尾页空间不足,则在存储空间的尾部再分配一个新的页面,新页面的页面编号位置存储结束标记,原尾页面的页面编号位置存储新页面的页面编号,将数据追加至新的页面,并更新对应的尾页位置、以及尾页空闲空间偏移;
3.5将当前写版本元数据与当前读版本元数据进行切换。
7.根据权利要求1所述的一种高性能数据存储引擎的实现方法,其特征在于,步骤1.12所述删除数据的操作具体流程为:
4.1将当前读版本元数据复制成一个可写快照,作为写版本元数据,并锁定写版本元数据,阻止并发写入;
4.2将要删除的数据key值带入哈希函数,取得其哈希值,根据哈希值到可写快照的散列表中获取冲突链的起始页面位置和尾页空闲空间偏移;
4.3从起始页面开始扫描数据,将每一条数据的Key值和‘x’比较,如果相等,则将这条数据的入库次序号对应的可写快照中删除位图的相应比特置1;
4.4循环读取当前页面中的数据,一个页面搜索完成,则通过其页面偏移读取下一页面,直到尾页的空闲空间偏移处为止;
4.5将当前写版本元数据与当前读版本元数据进行切换。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津南大通用数据技术股份有限公司,未经天津南大通用数据技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410850174.7/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置





