一种内存数据库与物理数据库间的数据同步方法及系统的制作方法

文档序号:6470269阅读:173来源:国知局

专利名称::一种内存数据库与物理数据库间的数据同步方法及系统的制作方法
技术领域
:本发明涉及一种内存数据库与物理数据库间的数据同步方法及系统。
背景技术
:随着社会信息化程度的逐步深入,数据库在各行各业中的应用越来越广,尤其是通讯领域,业务的数据量非常大,性能要求越来越高,并且对数据的安全性有着很高的要求。内存数据库具有速度快、性能高的优点,所以越来越多的应用系统都自行开发了基于内存运算的专用存储程序,将常用的数据緩存在内存中,加快访问速度。但是,内存数据库的安全性不足,当异常宕机或者掉电的情况下,内存中的数据就会丢失,这样一来,就需要后台有一个对应的物理数据库来作数据备份;另外,很多应用系统的门户或者界面等外围程序需要通过物理数据库来访问内存中的数据表,所以必须有一种把内存数据库中的数据变化及时更新到物理数据库的同步机制。具体而言,当内存数据库中的数据被修改后,应用程序通过一种方法,自动将内存数据库中的数据更新同步到物理数据库,这样既能满足门户或者界面的查询需求,又能保证数据的安全备份,从而保证整个应用系统的安全和稳定运行。然而,该同步问题一直没有得到解决,很多外围程序无法实现既有的功能,数据的安全性也无法得到保证。
发明内容本发明所要解决的技术问题是提供一种内存数据库与物理数据库之间的数据同步方法,以及实现该方法的数据同步系统。为解决上述技术问题,本发明是通过以下技术方案实现的一种数据同步系统,包括内存数据库和目标物理数据库,还包括数据同步装置,且所述内存数据库中包括同步日志生成模块;所述内存数据库,在每次进行数据修改操作时,调用所述同步日志生成模块,生成用以记录数据修改操作信息的同步日志文件,并保存该同步日志文件;所述数据同步装置,用于通过文件传输协议定时获取所述内存数据库新生成的同步日志文件,对该同步日志文件进行解析,将其转换成符合目标物理数据库的语法规则的基本SQL语句,与目标物理数据库建立连接后执行所述SQL语句。其中,所述数据同步装置包括同步日志文件传输模块,用于定时从所述内存数据库获取新生成的同步日志文件,并将其存放于本地的指定目录中;同步日志文件解析模块,用于对所述指定目录中的同步日志文件逐同步日志文件重做模块,用于建立和维护物理数据库连接池,通过调用目标物理数据库的驱动程序与目标物理数据库建立连接后执行所述基本SQL语句。其中,所述数据同步装置还包括日志管理模块,用于定时检查所述本地的指定目录中保存的同步日志文件,删除其中已经解析处理的同步日志文件。一种内存数据库与物理数据库间的数据同步方法,包括内存数据库每进行数据修改操作时,按照既定规范生成用以记录数据修改操作信息的同步日志文件,并将该文件保存于内存数据库所在主机;数据同步装置定时从所述内存数据库所在主机获取新生成的同步日志文件,将其保存于本地的指定目录中,然后对该文件进行解析,将其转换成符合目标物理数据库的语法规则的基本SQL语句,之后与目标物理数据库建立连接,执行所述基本SQL语句。上述方法还包括所述数据同步装置定时检查本地的指定目录中所保存的同步日志文件,删除其中已经解析处理的同步日志文件。其中,所述同步日志文件的内容包括日志序列号、日志长度、本日志是否需要同步标识、表的名称、表名称长度以及数据修改信息。其中,所述同步日志文件为二进制格式。本发明解决了内存数据库与物理数据之间的数据同步问题和安全问题,具有以下有益效果1)内存数据库程序只需要将数据的更改操作信息写入同步日志文件,后续的数据同步主要步骤(同步日志文件的传输、解析、SQL重做等)都可以在另外的主机上进行,不会过多地增加内存数据库所在主机的系统负担,将对该应用主机的影响降低到最小程度,且保"^L了同步的实时性;2)由于同步日志文件是在嵌入在内存数据库中生成的,属于底层的实现,因此,不管是谁向内存数据库发起的数据修改操作或者通过什么途径发起数据修改操作,同步日志文件中记录的都是原始的二进制数据码流,实现了数据库类型无关性和操作平台无关性,使得后续的文件传输和解析方便自如;3)可以灵活定制需要增量同步的表、操作或者数据信息,有效地控制了同步的数据量,加快了同步速度;4)同步日志文件使用标准的文件传输协议,可在不同设备间转移,因此与操作系统和数据库类型无关,可以在多种操作系统平台上使用,扩展性好。图1是本发明实施例中的数据同步系统的结构示意图;图2是本发明实施例中的数据同步方法的流程图;图3是本发明实施例中的同步日志文件传输方法流程图;图4是本发明实施例中的解析过程示意图。具体实施例方式下面结合附图及具体实施例对本发明作进一步详细的描述请参阅图1,该图所示为本发明所提出的数据同步系统,包括专用内存数据庠A,^An、物理数据库B,—Bn、数据同步装置;其中,内存数据库中均包含有同步日志文件生成模块,数据同步装置包括同步日志文件传输模块、同步日志文件解析模块、同步日志文件重做模块。上述系统中各部分的作用为各内存数据库,在每次进行数据修改操作时,分别调用其同步日志生成模块,生成用以记录数据修改操作信息的二进制格式的同步日志文件,并保存该同步日志文件于本内存数据库所在的主机;同步日志文件传输模块,用于定时从各内存数据库所在主机分别获取新的同步日志文件,将其存储于本地的指定目录中;同步日志文件解析模块,用于对本地所存储的同步日志文件分别逐行解析,将其转换成符合其目标物理数据库的语法规则的基本SQL语句;同步日志文件重做模块,用于建立和维护物理数据库连接池,通过调用目标物理数据库的驱动程序与目标物理数据库建立连接后执行上述基本SQL语句。数据同步装置还可包括日志管理模块,用于定时检查本地的指定目录中保存的同步日志文件,删除其中已经解析处理的同步日志文件,以保持存储空间的持续可用。请参阅图2,该图所示为本发明所提出的内存数据库与物理数据库间的数据同步方法,包括以下步骤201、各个内存数据库和数据同步装置分别进行初始化配置对于内存数据库,需要进行以下配置①定义全局统一分配的日志序列号(lsn)变量和文件序列号变量;②定义增、删、改等"t喿作类型,一条SQL命令在实际执行时分解成多个基本操作,基本操作有3种更新字l爻的值(UPDATE—FIELD)、删除记录行(DELETE_RECORD)、插入记录4亍(INSERT_RECORD);定义元组结构field—desc的属性字段名称(name),字段名称的长度(name—len),字段的数据类型(type),字段的值(data),值的长度(data—len);对于数据同步装置,需要初始配置内存数据库(即源数据库,可以有多个)的主机地址、FTP用户名以及密码,以及物理凝:据库(即目标数据库,可以有多个,也可以是不同类型)的主机地址。202、生成同步日志文件内存数据库在每次进行数据修改操作时,调用其同步日志生成模块,按照既定规范生成用以记录数据修改操作信息的同步日志文件,并将该文件保存于本内存数据库所在主^L。首先,内存数据库所生成的同步日志文件的命名格式为XLOG—内存数据库主机IP一文件生成日期—文件序列号。其中,XLOG为自定义文件前缀;内存数据库主机IP为本内存数据库所在主才几的IP地址,用于区分不同内存数据库生成的同步日志文件;文件生成日期格式为YYYYMMDDHHMM,例如2008060111230;文件序列号是一个单调递增的数字,例如OOl、002等。为了便于后续对同步日志文件的传输及解析处理,本实施例中还釆用使用不同后缀名的方式来表示同步日志文件当前所处的状态对于新打开的文件,后缀名设置为".w",表示内存数据库正向本文件中写入数据;对于关闭后的文件,后缀名设置为".r",表示内存数据库已向本文件写入数据完毕,但还未经数据同步装置处理;对于被取走的文件,后缀名设置为".o",表示本文件已被数据同步装置取走处理。其次,为了避免对文件的传送及解析时间过长所造成的数据同步时间延时过长,需要对同步日志文件的大小进行控制。控制方法有以下几种(i)设置记录条数最大值,若当前同步日志文件中写入的lsn记录条数超过最大值,则关闭当前同步日志文件,生成新的同步日志文件继续写记录;(ii)设置文件大小门限值,在当前同步日志文件的大小达到该门限值时,关闭当前同步日志文件,生成新的同步日志文件继续写记录;(iii)根据实时性要求设置写入时间期限,若当前同步日志文件的数据写入时间超过该时间期限,则关闭当前同步日志文件,生成新的同步日志文件继续写记录。再者,同步日志文件内容的写入过程为假设预先已经知道要同步的内存数据库表结构和表的主键,只对UPDATE、INSERT、DELETE等操作写同步日志,同步日志文件以SQL语句为逻辑单元,以字段为基本组成元素。每个SQL语句的同步曰志包含语句括号,即内存数据库每一个增、删、改的操作执行的时候,先写左括号"lsn:len:sync:op_BEGIN:tn—len:table_name,,,然后写具体的增、删、改操作内容,执行成功后写右括号"lsn:len:sync:op—END",如果^M亍失败,则写右凌舌号"lsn:len:sync:op—ABORT"。其中,lsn是日志序列号,为内存数据库中全局变量,这样,在某个时期内,每个SQL命令都有唯一的lsn,因而可用来表示SQL命令的执行顺序;len表示该条日志的长度;sync表示该条日志是否需要同步到物理数据库,0表示不需要同步,其他表示需要同步,应用时可灵活定制;op表示具体的SQL命令,如UPDATE、DELETE、INSERT等;table—name则表示表的名称、;tn—len表示table—name的长度;Count表示field—desc元组实例个数。需要特别说明的是,同步日志文件中记录的是原始数据的二进制码流,不关心具体数据类型和操作系统平台类型,所以,同步日志文件是一个二进制格式的文件,这样即使得写日志变的高效和方便,同时也为后续的传输和解析增加了便利。203、传输同步日志文件数据同步装置定时从内存数据库所在主机获取新的同步日志文件(即后缀名为".r"的同步日志文件)并保存。请参阅图3,该步骤具体包括以下步骤301、设置一个定长周期的定时器(假设周期为N分钟),定时时间到达后,进入步骤302。302、数据同步装置与内存数据库所在主机建立连接。303、数据同步装置查询内存数据库所在主机上新的同步日志文件。304、数据同步装置通过FTP协议按文件序列号依次获取上述新的同步日志文件,将其保存至本地的指定目录中。305、内存数据库将已被数据同步装置获取了的同步日志文件的后缀名更改为".o"。204、解析同步日志文件数据同步装置解析本地的指定目录下的同步日志文件,根据目标物理数据库的类型生成对应的语法规则的基本SQL语句。例如,ORACLE与SYBASE数据库的SQL语法中日期类型的转换函数就不一样,前者为to—date(),后者为convert()。解析过^f呈如图4所示的示意图。205、重做SQL语句数据同步装置通过调用目标物理数据库的驱动程序与目标物理数据库建立连接,之后执行上述基本SQL语句,当一个同步日志文件解析完毕后,将文件更名为.O的后缀,表示该文件已经被处理。206、本地过期文件管理数据同步装置定时检查本地的指定目录中保存的同步日志文件,删除其中已经解析处理的同步日志文件,避免磁盘空间被过期文件占满。以下为本发明的一个应用案例现有的"小区短信业务系统"中用户数据量很大,呼叫访问量很高,性能要求也很高。普通的基于硬盘文件存储的数据库是无法达到这个要求的,为了满足这些需求,用户数据需要緩存在专门开发的基于内存的数据库中。例如,用户IMSI和手机号码对应关系、小区广告、黑名单、白名单、灰名单、关键字过滤等数据都緩存在内存中。这样的话,就出现了一个问题内存数据库中的数据被呼叫流程修改后,怎么同步到后台的ORACLE数据库呢?应用本发明后,即完美地解决这个问题。以上实施例仅用以说明本发明的技术方案而非限制,〗又仅参照4交佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。权利要求1.一种数据同步系统,包括内存数据库和物理数据库,其特征在于,该系统还包括数据同步装置,且所述内存数据库中包括同步日志生成模块;所述内存数据库,在每次进行数据修改操作时,调用所述同步日志生成模块,生成用以记录数据修改操作信息的同步日志文件,并保存该同步日志文件;所述数据同步装置,用于通过文件传输协议定时获取所述内存数据库新生成的同步日志文件,对该同步日志文件进行解析,将其转换成符合目标物理数据库的语法规则的基本SQL语句,与目标物理数据库建立连接后执行所述SQL语句。2、如权利要求1所述的数据同步系统,其特征在于,所述数据同步装置包括同步日志文件传输模块,用于定时从所述内存数据库获取新生成的同步日志文件,并将其存放于本地的指定目录中;同步日志文件解析^t块,用于对所述指定目录中的同步日志文件逐行解析,将其转换成符合目标物理数据库的语法规则的基本SQL语句;同步日志文件重做模块,用于建立和维护物理数据库连接池,通过调用目标物理数据库的驱动程序与目标物理数据库建立连接后执行所述基本SQL语句。3、如权利要求2所述的数据同步系统,其特征在于,所述数据同步装置还包括日志管理模块,用于定时检查所述本地的指定目录中保存的同步日志文件,删除其中已经解析处理的同步日志文件。4、一种内存数据库与物理数据库间的数据同步方法,其特征在于,包括内存数据库每进行数据修改操作时,按照既定规范生成用以记录数据修改操作信息的同步日志文件,并将该文件保存于内存数据库所在主机;数据同步装置定时从所述内存数据库所在主机获取新生成的同步日志文件,将其保存于本地的指定目录中,然后对该文件进行解析,将其转换成符合目标物理数据库的语法规则的基本SQL语句,之后与目标物理数据库建立连接,执行所述基本SQL语句。5、如权利要求4所述的数据同步方法,其特征在于,所述方法还包括所述数据同步装置定时检查本地的指定目录中所保存的同步日志文件,删除其中已经解析处理的同步日志文件。6、如权利要求4或5所述的数据同步方法,其特征在于,所述同步日志文件的内容包括日志序列号、日志长度、本日志是否需要同步标识、表的名称、表名称长度以及数据修改信息。7、如权利要求4或5所述的数据同步方法,其特征在于,所述同步日志文件为二进制^^式。全文摘要本发明涉及一种内存数据库与物理数据库间的数据同步方法及系统,所述系统包括内存数据库、物理数据库和数据同步装置;所述方法为内存数据库每进行数据修改操作时,按照既定规范生成用以记录数据修改操作信息的同步日志文件,并将该文件保存于内存数据库所在主机;数据同步装置定时从所述内存数据库所在主机获取新生成的同步日志文件,将其保存于本地的指定目录中,然后对该文件进行解析,将其转换成符合目标物理数据库的语法规则的基本SQL语句,之后与目标物理数据库建立连接,执行所述基本SQL语句。本发明不仅保证了同步的实时性;而且有效地控制了同步的数据量,加快了同步速度,可以在多种操作系统平台上使用。文档编号G06F17/30GK101369283SQ20081021637公开日2009年2月18日申请日期2008年9月25日优先权日2008年9月25日发明者丁奇鹏,卢勤元,印和平,常二鹏,陈河堆申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1