一种内存数据库的多用户实现方法转让专利

申请号 : CN200810066471.7

文献号 : CN101256578B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙号令

申请人 : 中兴通讯股份有限公司

摘要 :

本发明公开了一种内存数据库的多用户实现方法,其包括以下步骤:在内存数据库中引入用户注册表用于存放用户相关信息;根据业务需求确定用户,并对用户所使用的表进行注册;用户只使用自己注册的表以及其相关逻辑对象。本发明内存数据库的多用户实现方法由于引入了对多用户的管理机制,将内存数据库的各种逻辑对象分用户进行了管理,可以从根本上降低内存数据库不同业务用户逻辑对象数据的耦合,减少了不同用户之间的互相干扰状态,大幅度降低了软件系统的复杂度。

权利要求 :

1.一种内存数据库的多用户实现方法,其包括以下步骤:A、在内存数据库中引入用户注册表用于存放用户相关信息;

B、根据业务需求确定用户,并对用户所使用的表进行注册;各用户分别注册自己需要的业务表,对于双方都使用的公共表,双方可以分别进行注册;

C、用户只使用自己注册的表以及其相关逻辑对象;

其中,所述步骤C还包括:在内存数据库启动时,将用户所注册的相关信息从文件中读入内存;所述内存数据库启动后,在数据库级别进行用户校验,不允许用户对没有注册的表进行访问;不同用户的数据库操作以消息的方式发送到相关公共进程,等待排队处理。

2.根据权利要求1所述的方法,其特征在于,所述步骤B还包括:不同的用户使用相同的表时分别注册自己的表。

3.根据权利要求1所述的方法,其特征在于,所述步骤B还包括:不同的用户使用相同的表结构和表数据。

4.根据权利要求1所述的方法,其特征在于,所述步骤B还包括:不同的用户使用共用表结构,并将其表数据分开存放。

5.根据权利要求1所述的方法,其特征在于,所述步骤B还包括:不同的用户使用不同的表结构,和,不同的表数据。

6.根据权利要求1所述的方法,其特征在于,所述数据库操作包括:存盘、数据同步。

说明书 :

技术领域

本发明涉及一种内存数据库应用方法,更具体地说,本发明涉及的是一种在使用内存数据库时数据库的逻辑对象和数据按多用户管理的实现方法。

背景技术

现有技术中,随着嵌入式软件的广泛应用,软件系统中需要保存的数据大量出现,内存数据库的需求大量增加。目前在嵌入式内存数据库领域中,不论是商用的嵌入式数据库或是各公司自行研发的内存数据库,都没有提出多用户的概念,他们所支持的数据库应用模式也比较单一;如果上层应用需要按照业务特点不同使用数据库提供的服务,那么大部分情况是所有的表存放在一起,更有甚者两种完全不同的业务数据会耦合到一张表中,不同用户对数据库的操作需要依据上层应用来判断,数据库本身无法对不同的用户进行区别管理。
对多用户内存数据库需求的一个例子,是移动通讯行业的多制式混用同一设备概念的提出。在移动通讯行业中,为了充分利用运营商已有的网络,业界广泛提出了基站、基站控制器等硬件设备实现双模或多模的情形,即同一个基站可以同时运行不同制式标准,类似基站可以同时提供GSM/WCDMA双模业务,更有甚者可以同时多种模式存在。
那么对数据库来说,多种模式的混合存放显然是在增加了耦合,因此,现有技术还有待于改进和发展。

发明内容

本发明的目的在于提供一种内存数据库的多用户实现方法,在使用内存数据库时通过对多用户的管理,引入多用户的管理方法以大幅度降低整个软件系统的复杂度,降低不同用户数据的耦合程度。
本发明的技术方案包括:
一种内存数据库的多用户实现方法,其包括以下步骤:
A、在内存数据库中引入用户注册表用于存放用户相关信息;
B、根据业务需求确定用户,并对用户所使用的表进行注册;各用户分别注册自己需要的业务表,对于双方都使用的公共表,双方可以分别进行注册;
C、用户只使用自己注册的表以及其相关逻辑对象。
所述的方法,其中,所述步骤B还包括:不同的用户使用相同的表时分别注册自己的表。
所述的方法,其中,所述步骤B还包括:不同的用户使用相同的表结构和表数据。
所述的方法,其中,所述步骤B还包括:不同的用户使用共用表结构,并将其表数据分开存放。
所述的方法,其中,所述步骤B还包括:不同的用户使用不同的表结构,和,不同的表数据。
所述的方法,其中,所述步骤C还包括:在内存数据库启动时,将用户所注册的相关信息从文件中读入内存;所述内存数据库启动后,在数据库级别进行用户校验,不允许用户对没有注册的表进行访问。
所述的方法,其中,所述步骤C还包括:不同用户的数据库操作以消息的方式发送到相关公共进程,等待排队处理。
所述的方法,其中,所述数据库操作包括:存盘、数据同步。
本发明所提供的一种内存数据库的多用户实现方法,由于引入了对多用户的管理机制,将内存数据库的各种逻辑对象分用户进行了管理,可以从根本上降低内存数据库不同业务用户逻辑对象数据的耦合,减少了不同用户之间的互相干扰状态,大幅度降低了软件系统的复杂度。

附图说明

图1是本发明方法的共用表结构和表数据场景下结构图;
图2是本发明方法共用表结构分别有自己的表数据场景下结构图;
图3是本发明方法的表结构和表数据完全分开场景下结构图。

具体实施方式

以下结合附图,将对本发明各较佳实施例进行更为详细的说明。
在内存数据库使用时候,首先引入用户注册表用来存放各个用户的相关信息。根据业务需求确定不同用户后,再对用户使用的表进行注册,用户只可以使用自己注册的表以及其相关的逻辑对象;不同的用户使用相同的表则分别注册即可。
在内存数据库启动后,不同用户只能操作与其相关的表数据,一般情况下设备的物理属性表不同的用户都需要注册才能拥有,这部分表用户可以根据具体情况设计在内存中的存储关系,一般分如下三种:1)使用相同的表结构和表数据,如图1所示;2)只共用表结构,表数据分开存放,如图2所示;3)表结构和数据都完全分离,如图3所示。
一般对于业务表数据,不同用户需要分别注册;那么对于不同用户表数据分别存储,对于某个用户的操作记录不会被其他用户影响,这样也就不会有操作互相干扰的问题。
只有注册了的表,系统才会分配给内存空间,没有用户注册的表不分配数据空间,这样就可以大量节省内存空间。当某个用户发起内存数据库相关操作,则只能操作自己用户的的表,比如事务操作和数据库写日志存盘等。存盘进程只有一个,由多用户共用,进行串行处理,如果内存数据库需要进行热备份,则内存数据库的同步也可以根据用户区别进行。也就是说由于本发明引入了多用户的概念,在对内存数据库的所有操作中与业务有关的都可以引入用户概念,而不需要按业务分开处理的则可以选择使用公共功能。
本发明方法主要包括以下处理步骤:
A、对引入的用户进行注册;
B、根据业务用户分类,配置注册用户拥有的表,各用户分别注册自己需要的业务表,对于双方都使用的公共表,双方可以分别进行注册;
C、内存数据库启动时,将步骤A和步骤B注册的相关信息从文件中读入内存,数据库启动后,业务用户对数据库的访问,在数据库级别进行用户校验,不允许用户对没有注册的表进行访问。
D、不同用户的数据库操作如存盘、数据同步等以消息的方式发送到相关公共进程,等待排队处理。
下面以移动通讯行业通讯设备实现双模(USER1/USER2)情景作为典型例子,下面的实施例中注册信息都以结构数组的方式表示,内存数据库的具体设计实施步骤包括:
引入的两个用户在配置文件中进行注册,命名为USER1、USER2。
根据两种业务用户分类,配置注册用户拥有的表,如下列表中根据需求R_RACKT表只有USER1和USER2都拥有,R_SHELFT表只有USER1拥有。具体的操作方式可以比较灵活,可以在源码中直接配置好或者在磁盘文件中描述好该注册关系等。数据库启动后,只要在内存中存在用户和表的对应关系即可。
表句柄    表名称    表最小记录    表最大记录    表所属用户
const TSYSTABTuple gtSysTabTuple[]={
  {HANDLE_RACKTYPE,″R_RACKT″,0,RACKTYPE_MAX
USER1||USER2},
    {HANDLE_SHELFTYPE,″R_SHELFT″,0,
SHELFTYPE_MAX,USER1};
内存数据库启动后,业务用户对数据库的访问,在数据库级别进行用户校验,不允许用户对没有注册表表进行访问,一种校验的方法是应用在访问数据库的接口入参中有一个用户模式的字段,用来标识具体的用户。
对于USER1/USER2用户都注册的表,如果表数据共用的则应用可以通过加锁互斥访问或者通过数据库同一进程进行串行访问,防止访问的冲突。
USER1/USER2用户的数据库操作如存盘、数据同步等以消息的方式发送到相关公共进程,等待排队处理。
本发明方法由于引入了对多用户的管理机制,将内存数据库的各种逻辑对象分用户进行了管理,可以从根本上降低内存数据库不同业务用户逻辑对象数据的耦合,减少了不同用户之间的互相干扰状态,大幅度降低了软件系统的复杂度。
应当理解的是,上述针对本发明较佳实施例的描述较为详细,但不能因此而认为是对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。