实现共享内存数据库的方法及内存数据库系统技术方案

技术编号:2855326 阅读:294 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种实现共享内存数据库的方法,以解决现有的内存数据库存在无法满足高并发量数据访问的问题;该方法包括:创建步骤,用于创建可供多进程访问的共享内存,并将内存数据库保存于该共享内存中;加锁步骤,当所述内存数据库在接收到进程的访问请求时对操作加锁,使进程间互斥访问内存数据库以保证数据的一致性;执行步骤,在操作加锁后由数据库管理系统对数据进行实际操作并输出结果;解锁步骤,用于在执行完进程的访问操作后解除该操作的锁。

【技术实现步骤摘要】

本专利技术涉及数据库技术,尤其涉及可供多进程进行数据处理的共享内存数据库。
技术介绍
内存数据库是相对于传统磁盘关系型数据库(如Oracle、SQLServer)而言的。传统数据库使用磁盘来保证数据的持久存储,而内存数据库将数据常驻内存,所有的事务/数据的存取只涉及内存。因此内存数据库相对于传统的关系型数据库,可以达到更高的性能、更好的实时性。在实时性要求比较高的电信软件中,内存数据库使用得比较多。专利号为ZL00134030.1,名称为提高短消息调度中心消息处理能力的方法的专利公开了一种内存数据库的实现方案。这些内存数据库因为其运行环境不同,实现的方案也不一样,但其共同的特点就是都是单进程的方案,数据库数据只能单进程访问。在有些要求比较低的运行环境中,单进程的内存数据库实现简单,是能够满足需求的。但是对于电信系统的平台软件,比如智能网业务控制点(SCP)平台,需要高并发量的数据访问,需要多个进程同时进行数据的处理,这时候单进程的内存数据库就无法不能满足要求。
技术实现思路
本专利技术提供一种实现共享内存数据库的方法及内存数据库系统,以解决现有的内存数据库存在无法满足高并发量数据访问的问题。为解决上述问题,本专利技术提供以下技术方案一种实现共享内存数据库的方法,该方法包括创建步骤,用于创建可供多进程访问的共享内存,并将内存数据库保存于该共享内存中;加锁步骤,当所述内存数据库在接收到进程的访问请求时对操作加锁,使进程间互斥访问内存数据库以保证数据的一致性;执行步骤,在操作加锁后由数据库管理系统对数据进行实际操作并输出结果;解锁步骤,用于在执行完进程的访问操作后解除该操作的锁。其中采用信号量对操作加锁和解锁;每个锁用两个信号量实现,其中一个信号量记录当前可进入的读进程数,即读信号量,另一个信号量记录当前写进程数量,即写信号量。当所述访问操作为读操作时,先判断写信号量是否大于0;如果是则使读操作进入等待状态,否则,将读信号量减1后进行读操作,并在完成读操作后将读信号量加1。当所述访问操作为写操作时,先将写信号量加1后判断读信号量是否为最大读进程数;如果是,则进行写操作,并在写操作完成后将写信号量减1,否则使写操作进入等待状态。所述共享内存包括多个具有唯一标识的共享内存段,进程根据该标识映射共享内存段并记录映射后共享内存段在进程内的首地址,根据该首地址访问此共享内存段内的数据。一种内存数据库系统,用于供多进程访问;该内存数据库系统包括接口模块,用于向外部应用进程提供访问通道;数据定义语言执行模块,用于根据接口模块输出的操作命令执行创建表、删除表和创建索引操作;数据字典模块,用于根据数据定义语言执行模块输出的命令管理表结构信息;数据操作语言执行模块,根据接口模块输出的操作命令执行数据的读、写操作; 索引模块,根据数据操作语言执行模块输出的操作命令组织数据;锁模块,用于对访问操作进行加锁,并在操作完成后解锁,以在多进程访问共享数据时保证数据的一致性。内存管理模块,用于管理保存内存数据库的共享内存。本专利技术具有以下有益效果1、本专利技术可以实现多进程同时访问内存数据库,能够大大提高的内存数据库的并发查询的性能。2、本专利技术能够可以实现动态内存管理的内存数据库,这样就能保证的内存数据库的弹性,使内存数据库可以在各种应用环境上使用。3、本专利技术能够实现直接存取数据的内存数据库,应用数据能够通过内存数据库集中管理,同时相对与应用分散管理数据的方式,只会有很小的性能损失。附图说明图1为多进程访问共享内存示意图;图2为系统接口示意图;图3为本专利技术的内存数据库系统的逻辑结构图;图4为T-树索引的逻辑结构图;图5为本专利技术的内存管理示意图。具体实施例方式共享内存是一种由UNIX操作系统提供的进程间通信(IPC)的机制,它允许两个或多个进程共享一给定的存储区。数据放入存储区中,不同进程可以直接存取,不需要在客户机和服务器间进行数据复制,所以这是最快的一种进程间通信方式。使用共享内存的内存数据库的优势是多进程同时访问数据,数据在共享内存中,访问数据的接口在每个进程中,如图1所示。信号量是一种UNIX操作系统中的进程间通信机制,它是一个计数器,用于多进程对于共享数据对象的存取。信号量是UNIX中一种常见的进程间同步的技术,在本专利技术中,它用于对多进程访问共享内存的同步。本专利技术提供的实现共享内存数据库的方法,包括创建步骤,用于创建可供多进程访问的共享内存,并将内存数据库保存于该共享内存中;加锁步骤,用于所述内存数据库在接收到进程的访问请求时对操作加锁,使进程间互斥访问内存数据库以保证数据的一致性;执行步骤,用于在操作加锁后由数据库管理系统对数据进行实际操作并输出结果;解锁步骤,用于在执行完进程的访问操作后解除该操作的锁。而对加锁和解锁操作是采用信号量实现;每个锁用两个信号量实现,其中一个信号量记录当前可进入的读进程数,即读信号量,另一个信号量记录当前写进程数量,即写信号量。如图2所示,内存数据库采用库的方式发布,系统中需要访问内存数据库的进程只需要在其程序编译时链接此库即可。对于内存数据库,重要的是能够提高数据查询的性能,降低处理过程的复杂度是提高性能的方法,因此,使用共享内存实现的内存数据库可以只提供数据的定义和数据的查询功能。具体包括表结构的定义包括字段、字段类型、字段缺省值、主键、索引等的定义;数据查询根据字段值查询记录;数据的修改包括插入记录、修改记录、删除记录。参阅图3所示,内存数据库包括接口模块(IF)、数据定义语言执行模块(DDL)、数据查询语言执行模块(DML)、数据字典模块(DL)、索引模块(INDEX)、锁模块(LOCK)和内存管理模块(MM)。各模块详细说明如下1、接口(IF)模块,是提供给外部应用的接口,包括DDL/DML的执行和其它一些专用接口。其中DDL/DML采用标准结构化查询语言(SQL)语句接口。IF模块解析这些SQL语句,然后传递给DDL或者DML模块。为了提高执行效率,IF模块还为每个操作(包括select、update、delete、insert、create table、drop table)提供专用接口。2、数据定义语言执行模块(DDL),用于处理建表、删表和创建索引等操作。3、数据操作语言执行模块(DML),用于对数据的查询和修改操作。DML模块处理DML操作请求时,首先调用LOCK模块进行进程同步的一些处理,然后调用INDEX模块来修改或者查询数据,最后将查询结果组织成标准的输出形式输出给外部应用。对于查询(select),输出的信息就是查询的记录;对于插入(insert)、删除(delete)、更新(update),输出是操作的结果和数据库中被影响的数据行。4、数据字典模块(DL),用于管理表结构信息,包括表的表名、字段名、字段类型、字段缺省值、索引等等信息。表结构放在共享内存中的专门区域,采用Hash表管理。5、索引模块(INDEX),用于组织数据,提供高性能的数据查询和修改过程。索引是关系型数据库中最重要的技术之一。本专利技术采用T-树进行索引。T-树是数据库中最常用到的一种索引,如图4所示,T-树是在平衡二叉树的基础上提出的一种平衡的两路查找树,T-树的每个节点上可以存储多于一个的码字,可以减少本文档来自技高网...

【技术保护点】
一种实现共享内存数据库的方法,其特征在于该方法包括:创建步骤,用于创建可供多进程访问的共享内存,并将内存数据库保存于该共享内存中;加锁步骤,用于所述内存数据库在接收到进程的访问请求时对操作加锁,使进程间互斥访问内存数据库以保 证数据的一致性;执行步骤,用于在操作加锁后由数据库管理系统对数据进行实际操作并输出结果;解锁步骤,用于在执行完进程的访问操作后解除该操作的锁。

【技术特征摘要】
1.一种实现共享内存数据库的方法,其特征在于该方法包括创建步骤,用于创建可供多进程访问的共享内存,并将内存数据库保存于该共享内存中;加锁步骤,用于所述内存数据库在接收到进程的访问请求时对操作加锁,使进程间互斥访问内存数据库以保证数据的一致性;执行步骤,用于在操作加锁后由数据库管理系统对数据进行实际操作并输出结果;解锁步骤,用于在执行完进程的访问操作后解除该操作的锁。2.如权利要求1所述的方法,其特征在于,对操作加锁和解锁采用信号量实现;每个锁用两个信号量实现,其中一个信号量记录当前可进入的读进程数,即读信号量,另一个信号量记录当前写进程数量,即写信号量。3.如权利要求2所述的方法,其特征在于,当所述访问操作为读操作时,先判断写信号量是否大于0;如果是则使读操作进入等待状态,否则,将读信号量减1后进行读操作,并在完成读操作后将读信号量加1。4.如权利要求2所述的方法,其特征在于,当所述访问操作为写操作时,先将写信号量加1后判断读信号量是否为最大读进程数;如果是,则进行写操作,并在写操作完成后将写信号量减1,否则使写操作进入等待状态。5.如权利要求1至4任一项所述的方法,其特征在于,所述共享内存采用多个具有唯一标识...

【专利技术属性】
技术研发人员:彭波郭房富
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

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

1
相关领域技术
  • 暂无相关专利