[发明专利]一种实现NoSQL的键值存储引擎的方法有效
申请号: | 201210012913.6 | 申请日: | 2012-01-16 |
公开(公告)号: | CN102446226A | 公开(公告)日: | 2012-05-09 |
发明(设计)人: | 赵伟;郑程光;程仁波;刘钰;王文军;罗正海;赖铮;徐邵稀;孙伟丰;王凤华;何齐;李书淦;关健 | 申请(专利权)人: | 上海方正数字出版技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 胡晶 |
地址: | 201203 上海市浦*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 nosql 键值 存储 引擎 方法 | ||
技术领域
本发明涉及一种数据库领域,尤其涉及一种实现NoSQL(Not Only SQL,非关系型的,其是一种不同于关系型数据库的管理系统设计方式)的键值存储引擎的方法。
背景技术
经过几十年的发展,关系数据库管理系统(RDBMS)被广泛应用,但是同时暴露出很多先天缺陷,其性能无法适应最新的很多类型的应用需求。NoSQL是近年来发展壮大的新的数据存储管理技术,它试图避免RDBMS在超大数据量和大量多表连接的情况下性能低下的缺点。键值存储引擎(key/value storage engine)是NoSQL的一种技术方案,它存储无模式的键值数据(key/value pair),键值数据在存储引擎内部都是无结构的字节串,存储引擎内部不理解键值数据的内部结构,而由应用程序负责解析和处理键值数据。键值存储引擎需要支持完整的ACID事务语义和高效的键值数据的存储和访问方法,并且通过用户注册的回调函数理解键值数据的内部结构并且操作键值数据。
现有的实现NoSQL的键值存储引擎,需要重新开发,不仅开发周期长,而且还费时费力,资源浪费严重。
发明内容
本发明的目的在于提供一种实现NoSQL的键值存储引擎的方法,以解决现有技术中需要重新开发,不仅开发周期长,而且还费时费力,资源浪费严重的技术问题。
一种实现NoSQL的键值存储引擎的方法,利用现有RDBMS改造成为NoSQL的键值存储引擎,其进一步包括:
(一)得到NoSQL存储引擎KeyValueSE;
A1:去除RDBMS中的无关模块,只保留其中的存储引擎子系统;
A2:创建单列的字节串数据行结构作为所有存储引擎子系统中数据表的数据行结构;
A3:设置存储引擎子系统的依赖方式为基于用户注册的回调函数的依赖;
(二)将KeyValueSE改造为支持多进程多线的存储引擎
B1:将所有的全局变量放置到线程局部存储中;
B2:把原有的进程间信号通信机制替换为线程间通信机制;
B3:设置线程初始化函数和退出函数。
其中,步骤A1进一步包括:去除包括RDBMS的解析器、优化器、执行器、元数据管理以及类型支持系统以及服务器框架在内的模块代码,去除包括国际化支持,通信协议,编程接口在内的辅助功能的代码,只保留存储引擎子系统的代码。
步骤A2进一步包括:在存储引擎中定义一个固定的“字节串”数据类型和一个固定的单列的使用这个“字节串”类型的固定的属性对象,并且使用该属性对象创建一个固定的数据行结构描述符对象tupleDesc;这个数据行结构描述符对象tupleDesc被所有的数据表使用来作为数据表的数据行结构,这样每个数据表的数据行结构都是统一的单列字节串。
步骤A3进一步包括:在存储引擎KeyValueSE中提供用户注册回调函数的接口,并且修改KeyValueSE存储引擎的代码,以使得使它在创建索引键和比较索引键的时候,使用用户注册的回调函数而不是基于类型系统来工作。
步骤B2进一步包括:利用互斥量和信号机制,在每个线程中设置一个专门的通知数据区,所述通知数据区用于让其他线程写入希望通知的信息;
当一个线程T1需要睡眠时就等待一个事件,而另一个线程T2需要唤醒T1时就设置通知T1这个事件,T1即被T2唤醒,T2在T1所属的数据区写入希望告知T1的信息,T1即可在被唤醒后读取这些信息并做相应的处理。
本发明可以最大程度地利用RDBMS系统的成熟的存储引擎实现来开发NoSQL的键值存储引擎,避免了大量重复开发工作,同时可以快速实现出高并发的,具有完整的ACID事务语义和高效的数据存储和访问方法的NoSQL的键值存储引擎。
并且,本发明用户通过注册回调函数的方式可以让键值存储引擎灵活地操作用户数据,还可以避免RDBMS的元数据管理系统和类型系统等子系统带来的额外的运行时资源(CPU,内存)消耗,运行效率大大提高。
附图说明
图1为KeyValueSE的原理架构图;
图2为一种实现NoSQL的键值存储引擎的方法的一种示例流程图。
具体实施方式
本发明提出一种把任意一种RDBMS改造为NoSQL的键值存储引擎的方法。这个方法分两大阶段,其中每个阶段分三个主要步骤,详述如下。
第一阶段:得到NoSQL存储引擎KeyValueSE。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海方正数字出版技术有限公司,未经上海方正数字出版技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210012913.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种制备伊潘立酮的方法
- 下一篇:贴片机用可调节顶针座