一种多进程访问内存数据库系统技术方案

技术编号:12624602 阅读:78 留言:0更新日期:2015-12-31 17:58
本发明专利技术涉及一种多进程访问内存数据库系统,包括应用程序进行访问操作的统一访问接口、扩展数据库存储引擎的存储结构单元,所述存储结构单元中的内存分配使用共享内存分配管理,所述系统在统一访问接口中对数据预先进行分片处理。本系统是一个低延时、高并发、高吞吐的数据管理系统,单次查询延时小于1ms,且20进程同时读写qps可以达到500000。

【技术实现步骤摘要】

本专利技术涉及一种内存数据库系统,特别是涉及一种多进程访问内存数据库系统
技术介绍
现有数据库分为关系型和非关系型数据库。关系型数据库便于存储结构化数据,支持复杂查询和数据分析,但是查询速度较慢。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。非关系型数据库可存取非结构化数据,速度相对关系数据库有较大提升,但是高并发的情况下依然不能满足高速存取的效率问题。
技术实现思路
本专利技术的目的是提出一种低延时、高并发、高吞吐的多进程访问内存数据库系统,已解决高并发的情况下高效、高速地存储数据。为实现上述目的,本专利技术提供了一种多进程访问内存数据库系统,包括应用程序进行访问操作的统一访问接口、扩展数据库存储引擎的存储结构单元,所述存储结构单元中的内存分配使用共享内存分配管理,所述系统在统一访问接口中对数据预先进行分片处理;所述分片处理包括如下步骤:获得键,并对键计算哈希数,将所得哈希数对分片数量取余,结果即为键的分片序号,之后系统根据所述分片序号获取分片。优选地,所述统一访问接口包括插入接口、删除接口、更新接口。优选地,所述存储结构单元至少包括固定大小的哈希、带有键描述的哈希、同一位置排序的哈希、带有过期时间的哈希。优选地,所述系统在执行涉及插入、删除、更新的操作时,分别通过模拟锁服务进行。优选地,所述系统在哈希结构的每个哈希位置通过原子操作模拟锁服务。优选地,所述通过原子操作模拟锁服务至少包括如下步骤:所述系统首先获取哈希位置的互斥锁,并且在获取锁服务的时候,所述系统依据原子操作函数将每个哈希位置包含的整数进行置位;之后原子操作函数先返回数值,然后进行或运算;若返回数值为0,则获得锁成功;若返回数值为1,则放弃时间片,并重复之前的操作,直到获得锁。本专利技术的另一目的在于提供一种多进程访问内存数据库的方法,所述方法包括如下步骤:应用程序通过统一访问接口进行访问操作,并在统一访问接口中对数据预先进行分片处理;所述分片处理包括如下步骤:获得键,并对键计算哈希数,将所得哈希数对分片数量取余,结果即为键的分片序号,之后根据所述分片序号获取分片;之后通过扩展数据库存储引擎的存储结构单元进行数据管理,并且所述存储结构单元中的内存分配使用共享内存分配管理。优选地,所述统一访问接口包括插入接口、删除接口、更新接口 ;所述存储结构单元至少包括固定大小的哈希、带有键描述的哈希、同一位置排序的哈希、带有过期时间的哈希。优选地,所述存储结构单元在执行涉及插入、删除、更新的操作时,分别通过模拟锁服务进行,并且在哈希结构的每个哈希位置通过原子操作模拟锁服务。优选地,所述通过原子操作模拟锁服务至少包括如下步骤:首先获取哈希位置的互斥锁,并且在获取锁服务的时候,依据原子操作函数将每个哈希位置包含的整数进行置位;之后原子操作函数先返回数值,然后进行或运算;若返回数值为0,则获得锁成功;若返回数值为1,则放弃时间片,并重复之前的操作,直到获得锁。基于上述技术方案,本专利技术的优点是:本专利技术具有的统一访问接口不仅提高了程序的扩展性,在应用程序使用过程中可根据不同的需求对存储结构单元直接进行修改替换而不必修改应用程序接口,可以避免大量的繁琐工作,降低耦合性。本系统采用纯内存操作,在写入过程中,直接将操作记录追加到文件的末尾处,有效地提高了写入效率,降低延迟。本系统在执行插入、删除、更新等涉及内存修改的操作时需要获得模拟锁服务,而在不涉及内存修改的操作过程如查询则不需要获得锁服务,所以本系统在插入、删除、更新过程中,查询可以同时进行,没有互斥关系,有效地提升了系统效率。进一步,本系统是一个低延时、高并发、高吞吐的数据管理系统,单次查询延时小于1ms,每秒插入查询次数可达50万次。【附图说明】此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为多进程访问内存数据库系统示意图;图2为分片处理步骤示意图;图3为模拟锁服务示意图;图4为插入请求执行示意图;图5为删除请求执行示意图;图6为更新请求执行示意图。【具体实施方式】下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。实施例1本系统是一个非关系型数据库系统,基于共享内存的内存数据库。本系统大体结构如图1所示,系统对外提供增删改等数据库主要功能接口,存取键值对(key-value)类型的数据。具体地,本多进程访问内存数据库系统,包括应用程序进行访问操作的统一访问接口 101、扩展数据库存储引擎的存储结构单元102。本系统不提供端口监听以及网络访问,而是直接对进程提供统一访问接口 101。更具体地,所述统一访问接口 101包括插入接口 1011、删除接口 1012、更新接口1013。应用程序可通过相应的接口进行操作,统一访问接口 101不仅提高了程序的扩展性,在应用程序使用过程中可根据不同的需求对存储结构单元102直接进行修改替换而不必修改应用程序接口,可以避免大量的繁琐工作,降低耦合性。所述存储结构单元102只需要实现对外提供的公共接口,即可以根据不同的业务需求设计更加适合的存储结构,如哈希存储。进一步,所述存储结构单元102至少包括固定大小的哈希1021、带有键描述的哈希1022、同一位置排序的哈希1023、带有过期时间的哈希1024。上述哈希结构类似,但是其能够针对不同的需求进行选择,有的更偏向于性能,有的更偏向于节省空间。与此同时,其还可根据时间空间要求的不同,有针对性的对存储结构进行优化。进一步,所述存储结构单元102中的内存分配使用共享内存103分配管理。具体而言,其采用第三方的共享内存库。当然对于本领域普通技术人员而言,在单进程或进程较少的条件下,也可以直接采用内存管理而不使用共享内存。共享内存可满足一些多进程访问的需求,如Nginx的多进程服务可以使用共享内存,从而在一定程度上节省内存空间。为了使数据更加分散以方便查询,本系统在统一访问接口 101中对数据预先进行分片处理,分片数量可由用户预先定义。所述分片处理包括如下步骤:获得键210,并对键计算哈希数202,将所得哈稀数对分片数量取余203,结果即为键的分片序号,之后系统根据所述分片序号获取分片204。如图2所示,具体地,当一次基本操作即增删查改等发生的时候,系统会首先对获得的键(key)进行一次哈希计算,并将当前第1页1 2 3 本文档来自技高网...

【技术保护点】
一种多进程访问内存数据库系统,其特征在于:包括应用程序进行访问操作的统一访问接口(101)、扩展数据库存储引擎的存储结构单元(102),所述存储结构单元(102)中的内存分配使用共享内存(103)分配管理,所述系统在统一访问接口(101)中对数据预先进行分片处理;所述分片处理包括如下步骤:获得键(210),并对键计算哈希数(202),将所得哈希数对分片数量取余(203),结果即为键的分片序号,之后系统根据所述分片序号获取分片(204)。

【技术特征摘要】

【专利技术属性】
技术研发人员:周盛宽
申请(专利权)人:北京美数信息科技有限公司
类型:发明
国别省市:北京;11

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

1