首页> 中国专利> 一种实现分布式存储的内存数据库系统及应用

一种实现分布式存储的内存数据库系统及应用

摘要

本发明公开了一种实现分布式存储的内存数据库系统及应用,其中,所述系统包括:接口机和多个内存数据库,所述接口机用于存储真实数据库中各个数据库表和内存数据库的对应关系,并且在接收到访问客户端的sq1请求后,根据所述sq1请求中的数据库表,将所述sq1请求分发到相应的内存数据库中;所述内存数据库用于从接口机查询得到自己负责的数据库表的信息,然后从对应的真实数据库中读入该数据库表中的数据,并且,当接收到所述接口机分发的sq1请求时,所述内存数据库根据所述接口机分发的sq1请求执行相应的查询或非查询操作。本发明通过引入接口机,实现了内存数据库的分布式存储,实现起来比较简单,并且成本比较低。

著录项

  • 公开/公告号CN101587476A

    专利类型发明专利

  • 公开/公告日2009-11-25

    原文格式PDF

  • 申请/专利权人 中兴通讯股份有限公司;

    申请/专利号CN200810097631.4

  • 发明设计人 冯宇翔;

    申请日2008-05-22

  • 分类号G06F17/30;

  • 代理机构信息产业部电子专利中心;

  • 代理人吴永亮

  • 地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦A座5层

  • 入库时间 2023-12-17 23:01:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-02-08

    授权

    授权

  • 2010-04-28

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20080522

    实质审查的生效

  • 2009-11-25

    公开

    公开

说明书

技术领域

本发明涉及计算机通信领域,尤其涉及内存数据库技术领域。

背景技术

现在在通信信息领域,数据库是越来越重要了。但是随着业务量的增加,数据库的性能无法达到要求正越来越成为一个让人头疼的问题。几种主流数据库:Oracle、DB2、Sqlserver、Sybase等,都会碰到性能无法满足要求的问题。因为他们的数据库访问都只能做到毫秒级。对数据库进行优化对数据库访问数率的提高的贡献最多只有30%。很多时候,都被迫修改业务流程,减少访问数据库的次数。

为了提高性能,大家都公认使用内存数据库是一种很好的方式。因为内存数据库的访问可以提高到微秒级别。一些公司也都开发出了自己的内存数据库产品,如Oracle的TimesTen等。但是这些厂家的内存数据库都有如下缺点:

由于需要对自身数据库的sql语句原封不动的进行解析,从而造成内存数据库的性能浪费性;

只支持自身生产的数据库产品,没有通用性。

发明内容

鉴于上述的分析,本发明旨在提供一种实现分布式存储的内存数据库系统及应用,通过引入接口机,实现了内存数据库的分布式存储。

本发明的目的主要是通过以下技术方案实现的:

本发明提供了一种实现分布式存储的内存数据库系统,所述系统包括:接口机和多个内存数据库,其中,

所述接口机,用于存储真实数据库中各个数据库表和内存数据库的对应关系,并且在接收到访问客户端的sql请求后,根据所述sql请求中的数据库表,将所述sql请求分发到相应的内存数据库中;

所述内存数据库,用于从接口机查询得到自己负责的数据库表的信息,然后从对应的真实数据库中读入该数据库表中的数据,并且,当接收到所述接口机分发的sql请求时,所述内存数据库根据所述接口机分发的sql请求执行相应的查询或非查询操作。

进一步地,所述系统还包括:

控制台,用于根据用户的要求对整个内存数据库系统进行配置,并通过和接口机交互使配置生效。

进一步地,所述内存数据库还包括:

定时器,用于设定时间间隔;

同步单元,用过根据定时器设定的时间间隔,定时读出发生改动变化的数据内容,并将其同步到相应的真实数据库中。

本发明还提供了一种利用上述内存数据库系统实现数据分布式存储的方法,所述方法包括:

步骤A:内存数据库从接口机查询得到自己负责的数据库表的信息,然后从对应的真实数据库中读入该数据库表中的数据;

步骤B:当接口机在接收到访问客户端的sql请求后,根据所述sql请求中的数据库表及所述接口机存储的真实数据库中各个数据库表和内存数据库的对应关系,将所述sql请求分发到相应的内存数据库中;

步骤C:所述内存数据库根据接口机收分发得到的sql请求,对内存数据库中的数据进行查询或非查询操作。

进一步地,所述步骤C具体包括:

所述内存数据根据接口机分发得到的sql请求进行判断:

如果是查询操作,则返回查询到的数据集,如果非查询操作,则对数据进行相应的删除、修改、添加操作,并将将数据进行的删除、修改、添加操作的具体信息写入文件进行记录。

进一步地,所述方法还包括:

根据设定的时间间隔,定时读出经过非查询操作发生变化的数据,并将其同步到相应的真实数据库中。

进一步地,所述步骤C中,当所述内存数据库收到接口机分发的多个sql请求时,对所述sql请求依次串行处理。

进一步地,所述sql请求至少包括以下字段:

操作类型、数据库表名、操作的具体信息、操作的流水号。

本发明有益效果如下:

本发明通过引入接口机,实现了内存数据库的分布式存储,实现起来比较简单,并且成本比较低。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分的从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

图1为本发明实施例所述系统的结构示意图;

图2为本发明实施例所述方法的流程示意图;

图3为本发明实施例所述方法中,内存数据库和真实数据库同步过程的流程示意图。

具体实施方式

下面结合附图来具体描述本发明的优先实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理。

首先结合附图对本发明实施例所述内存数据库系统进行详细说明。

如图1所示,图1为本发明实施例所述内存数据库系统的结构示意图,具体可以包括:接口机、控制台、多个内存数据库,下面对各个部分进行详细阐述。

接口机,主要负责sql消息的分发、存储过程的实现和整个内存数据库系统的管理;具体的说就是,所述接口机中预先存储有真实数据库的多个数据库表和内存数据库的对应关系,当所述接口机在接收到访问客户端的sql请求后,根据该sql请求中的涉及到的数据库表,将该sql请求分发到相应的内存数据库。

内存数据库,多个内存数据库对应多个真实数据库,其主要负责真实数据库的多张数据库表的访问,即当内存数据库启动的时候,所述内存数据库通过从接口机存储的真实数据库的多个数据库表和内存数据库的对应关系进行查询,得到自己负责的数据库表的信息,然后从这些数据库表对应的真实数据库中读入这些数据库表的数据内容;并且,当所述内存数据库收到接口机分发的sql请求后,根据该sql请求的信息进行判断:如果是查询操作,则返回查询需要的数据集,如果是非查询操作,则根据sql请求的操作类型对数据作相应的更改,然后将该数据的修改内容以一定格式写入文件。

其中,所述sql消息至少包括如下字段:1、操作类型,如:添加、删除、修改、查询、执行存储过程;2、数据库表名;3、操作的具体信息:添加、删除、修改、查询、执行存储过程的时候所需要的信息,如添加的时候,添加的字段的值,删除的时候删除记录的特征等;4、操作的流水号,即每次操作被赋予的一个ID。

控制台,用户通过所述控制台对整个内存数据库系统进行配置,并通过和接口机交互使配置生效;配置内容包括内存数据库的IP、将真实数据库中的哪些数据库表的信息提取进内存数据库系统进行管理、以及一些其他的相关参数。

下面结合附图对利用本发明实施例所述系统实现数据分布式存储的方法进行详细说明。

如图2所示,图2为所述方法的流程示意图,具体可以包括以下步骤:

步骤201:接口机收到访问客户端的sql请求;

步骤202:接口机根据及时到的sql请求中涉及到的数据库表分发sql请求到内存数据库;

步骤203:收到sql请求的内存数据库判断该sql请求是否是查询操作,如果是查询操作,执行步骤206;如果是非查询操作,执行步骤204;

步骤204:对内存数据库中的数据进行相应的修改、删除、添加等操作,然后将数据进行的删除、修改、添加操作的具体信息写入预定的文件进行记录,然后执行步骤205;

步骤205:内存数据库将进行非查询操作的结果发送给接口机;

步骤206:根据sql请求中查询内容在内存数据库中查询相应的数据,并将查询到的结果返回给接口机;

步骤207:接口机将接收到的查询操作的结果或者非查询操作的结果返回给访问客户端。

本发明实施例所述方法还包括:内存数据库定时将发生修改、删除、添加等非查询操作的数据通过访问真实数据库,同步到真实数据库中,具体如图3所示,可以包括以下步骤:

步骤301:内存数据库根据sql请求的非查询操作,对其中的数据进行了修改、删除或添加等操作;

步骤302:内存数据库将发生修改、删除或添加等操作的数据写入预定的文件中;

步骤303:内存数据库定时扫描步骤302中的文件,并读出文件中的内容,将其中的数据通过访问真实数据库的方式同步到相应的真实数据库中。

综上所述,本发明实施例提供了一种实现分布式存储的内存数据库系统及应用,通过引入接口机,实现了内存数据库的分布式存储,实现起来十分简单,具有以下优点:

由于是和真实数据库中的部分数据库表对应,所以在现场施工的时候不用新增设备,直接在真实数据库的设备上实现就可以了;

由于接口机收到的sql请求已经是由访问客户端将数据的处理逻辑进行了封装,所以不再需要sql语句的解析过程,这样就不会造成内存数据库的性能浪费问题;

由于各个单独的内存数据库,对接收到的非查询操作都是串行处理,且每次操作都只在自己单独负责的数据库表中执行,所以就成功地避免了数据争抢导致死锁、脏读、脏写的发生,内存数据库也不用为自己负责的数据库表建立锁。

对数据修改的记录通过写文件的方式,这样就可以避免系统异常或者宕机以后出现内存数据库和真实数据库数据不同步的现象发生。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号