一种内存数据库到文件数据库的数据同步方法及系统的制作方法

文档序号:6585572阅读:122来源:国知局
专利名称:一种内存数据库到文件数据库的数据同步方法及系统的制作方法
技术领域
本发明涉及数据库领域,特别是涉及一种内存数据库到文件数据库的数据同步方 法及系统。
背景技术
预写式日志(Write-Ahead Logging, WAL)是一种实现事务日志的标准方法,WAL 的中心思想是对数据文件的修改(表和索引的载体)必须是只能发生在这些修改已经记录 了日志之后,即在日志记录冲刷到永久存储器之后。如果遵循这个过程,那么就不需要在每 次事务提交的时候都把数据页冲刷到磁盘,因为在出现崩溃的情况下,可以用日志来恢复 数据库任何尚未附加到数据页的记录都将先从日志记录中重做(这叫向前滚动恢复,也 叫做REDO日志),然后那些未提交的事务做的修改将被从数据页中删除(这叫向后滚动恢 复,也叫做UNDO日志)。使用WAL的第一个明显的好处就是显著地减少了磁盘写的次数,因为在日志提交 时只有日志文件需要flush到磁盘上;在多用户环境里,许多事务的提交可以用日志文件 的一次同步函数(fsyncO)完成。而且,日志文件是顺序写入磁盘的,而数据文件往往在文 件中间进行修改,因此同步日志的开销要远比同步数据页的开销要小。使用WAL的另外一个好处是数据页的完整性。无论是商业数据库、还是常用的开 源数据库如MySQL、PostgreSQL等等,在使用WAL原理前,不能保证在崩溃的情况下数据页 的完整性。在使用WAL之前,在写的过程中的任何崩溃都可能导致索引记录指向一个不存在表的行。或者,索引记录在分裂操作中丢失。或者,完全 崩溃的表和索引页的内容,由于数据页只写一部分的情况。索引记录指向一个不存在表的行;或者,索引记录在分裂操作中丢失可能已经通 过额外的fsyncO调用修补好,但是如果没有WAL,那么没有有效处理第三种情况即完全崩 溃的表和索引页的内容,由于数据页只写一部分这种情况的方法。如果在崩溃后的恢复中 需要确保数据页的完整性,WAL在日志里保存整个数据页的内容。WAL还提供数据库在线备份和恢复(backup and restore, BAR)的新方法,需要 经常性把数据文件保存到另外一个磁盘、磁带或者另外一台主机并且还要备份WAL日志文 件。数据库文件拷贝和日志归档文件就可以用于像灾难恢复那样恢复数据。每次做完新数 据库文件以后,这个老的日志文件就可以删除。这样就可能需要记录数据文件和索引创建 和删除的日志;同时还需要开发一种方法来拷贝数据文件(这是由于操作系统拷贝命令是 不合适的)。困难是要求在相当可观的时间段内保存WAL日志(也就是说,如果需要事务的 UNDO,那么和可能的最长事务的时间一样长)。目前数据库使用的WAL格式的体积相当大, 因为包括多个磁盘页的镜像。由于这些日志只需要保留一到两个检查点的时间间隔;但是为了实现日志保存,可能需要某种压缩的WAL格式。内存数据库在使用的过程中,往往需要定期将内存数据库中表的数据导入到基于 磁盘的文件数据库中,如Oracle、DB2等。由于内存数据库和文件数据库的应用领域不同, 常用的做法是采用全量表和增量数据的方式。采用这种方式,在操作内存数据库的同时,要 向一个增量数据表里插入相应的数据,由一个服务进程定期从增量数据表读取后插入到文 件数据库中。内存数据库为了将数据同步到文件数据库中,必须对需要同步的表建立一个增量 数据表。对内存数据库的每一个操作,只要涉及到修改这种表的数据,则必须同时在增量数 据表里面增加一条记录,来记录修改的内容。因此,对内存数据库的一个操作,现在演化成 为了多个操作,且必须在一个事务中完成。这就大大影响了内存数据库的性能。

发明内容
本发明的目的是提供一种内存数据库到文件数据库的数据同步方法及系统,在不 影响内存数据库的性能的前提下,实现数据同步。本发明提供一种内存数据库到文件数据库的数据同步方法,所述方法包括以下步 骤A、内存数据库将事务日志记录写入日志缓存区;B、定义内存数据库和文件数据库数据表的对应关系;C、根据事务日志刷新进程,异步地将所述日志缓存区中的所述事务日志中信息, 按照所述内存数据库和文件数据库数据表的对应关系,同步到文件数据库中。优选地,所述事务日志为WAL事务日志文件,用于记录内存数据库的事务处理信 肩、o优选地,所述步骤C所述事务日志为无格式事务日志文件。优选地,所述文件数据库为Oracle、或DB2、或Informix。本发明还提供一种内存数据库到文件数据库的数据同步系统,所述系统包括内存数据库,将事务日志记录写入日志缓存区;文件数据库;模式文件,用于定义内存数据库和文件数据库数据表的对应关系;数据传输代理,用于根据事务日志刷新进程,异步地将所述日志缓存区中的所述 事务日志中信息,按照所述模式文件中定义的内存数据库和文件数据库数据表的对应关 系,同步到所述文件数据库中。优选地,所述事务日志为WAL事务日志文件,用于记录内存数据库的事务处理信 肩、o优选地,所述日志缓存区中的事务日志为无格式事务日志文件。优选地,所述文件数据库为Oracle、或DB2、或Informix。与现有技术相比,本发明具有以下优点本发明实施例所述内存数据库到文件数据库的数据同步方法,由于可以根据需要 定义内存数据库和文件数据库数据表的对应关系,因此内存数据库和文件数据库数据表的 对应关系是可配置的。另外本发明所述方法是根据事务日志刷新进程,异步地将所述日志缓存区中的所述事务日志中信息,按照所述内存数据库和文件数据库数据表的对应关系, 同步到文件数据库中。因此,可以保证内存数据库和文件数据库约束一致。数据库约束是为 了保证数据的完整性而实现的一套机制。主要包括有NOT NULL约束、UNIQUE约束、PRIMARY KEY 约束、FOREIGN KEY 约束。


图1为本发明实施例所述内存数据库到文件数据库数据同步方法流程图;图2为本发明实施例所述内存数据库和文件数据库数据表的对应关系示意图;图3为本发明实施例所述内存数据库到文件数据库数据同步系统结构图。
具体实施例方式本发明的目的是提供一种内存数据库到文件数据库的数据同步方法,在不影响内 存数据库性能的前提下,实现数据同步。为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明所述内存数据库到文件数据库数据同步方法作进一步详细的说明。参见图1,该图为本发明实施例所述内存数据库到文件数据库数据同步方法流程 图。本发明实施例所述内存数据库到文件数据库数据同步方法,包括以下步骤S100、内存数据库将事务日志记录写入日志缓存区。内存数据库是一种内存优化的关系数据库系统,通过数据和元数据都存放在物理 内存中,提高数据库的操作响应时间。事务日志是一个与数据库文件分开的文件,存储对数据库进行的所有更改,并全 部记录插入、更新、删除、提交、回退和数据库模式变化。在缺省情况下,所有数据库都使用 事务日志。事务日志的使用是可选的,但是,除非因特殊原因而不使用,否则应始终使用。运 行带有事务日志的数据库可提供更强的故障保护功能、更好的性能以及数据复制功能。所述事务日志具体可以为WAL事务日志文件,用于记录内存数据库的事务处理信 肩、οWAL是一种实现事务日志的标准方法。简言之,WAL的中心思想是对数据文件的修 改(WAL是表和索引的载体)必须是只能发生在这些修改已经记录了日志之后。日志缓存区中的事务日志为无格式事务日志文件。对于数据库而言,为了实现基本的ACID特性,必须在事务提交之前,将事务内容 以一定的格式写入到事务日志文件中。ACID特性指事务的原子性、一致性、隔离性以及持久性。事务的原子性(Atomicity)是指一个事务要么全部执行,要么不执行。事务的一致性(Consistency)是指事务把数据库从一个一致的状态转变到另一 个状态。事务的隔离性(Isolation)是在事务提交以前,其他事务察觉不到事务的影响。 也就是两个以上的事务不会出现交错执行的状态。因为这样可能会导致数据不一致.事务的持久性(Durability)是指一旦事务提交,它是永久的。也就是事务运行成功以后,就系统的更新是永久的,不会无缘无故的回滚。而对于内存数据库,为了达到极高的性能,往往会降低“D”特性的要求,即不采用 文件数据库那样每个事务日志记录首先必须写入磁盘文件且写入成功之后才能真正的提 交事务,而是先把事务日志记录写入到操作系统共享内存区的一个事务日志缓存区,之后 由日志刷新进程异步地将事务日志刷出到磁盘事务日志文件上。因此,内存数据库并不严 格的遵守ACID特性。S200、定义内存数据库和文件数据库数据表的对应关系。S300、事务日志刷新进程异步地将所述日志缓存区中的所述事务日志的信息,按 照所述内存数据库和文件数据库数据表的对应关系,同步到文件数据库中。所述文件数据库可以为Oracle、或DB2、或Informix等,适合于联机事务处理 (Online Transaction Processing, 0LTP)。所述事务日志缓存区中的所述事务日志为无格式事务日志文件。本发明实施例所述内存数据库到文件数据库的数据同步方法,由于可以根据需要 定义内存数据库和文件数据库数据表的对应关系,因此内存数据库和文件数据库数据表的 对应关系是可配置的。另外本发明所述方法是根据事务日志刷新进程,异步地将所述日志 缓存区中的所述事务日志中的信息,按照所述内存数据库和文件数据库数据表的对应关 系,同步到文件数据库中。因此,可以保证内存数据库和文件数据库约束一致。数据库约束是为了保证数据的完整性而实现的一套机制。主要包括有N0TNULL约 束、UNIQUE 约束、PRIMARY KEY 约束、FOREIGN KEY 约束。NOT NULL约束应用在单一的数据列上,并且它保护的数据列必须要有数据值。UNIQUE约束可以保护表中的多个数据列,保证在保护的数据列中任何两行的数据 都不相同。PRIMARY KYE约束可以保护一个或多个列。PRIAMRY KEY约束可与NOT NULL约束 共同作用于每一数据列。表有唯一的主键约束。FOREIGN KEY约束保护一个或者多个数据列,保证每个数据行的数据包含一个或 多个空值,或者在保护的数据列上同时拥有主键约束或唯一约束。参见图2,该图为本发明实施例所述内存数据库和文件数据库数据表的对应关系 示意图。上述步骤S200定义内存数据库和文件数据库数据表的对应关系,是通过模式文 件(schema)定义的。图2中表TBL_B即相当于内存数据库TBL_A即相当于文件数据库schema定义了 TBL_B和TBL_A中的参数对应关系。本发明实施例所述内存数据库到文件数据库的数据同步方法,可以通过schema 将无格式的事务日志文件进行格式转换,插入到文件数据库中。通过传输代理(cache agent)保证内存数据库和文件数据库的约束一致、数据类型兼容。本发明提供一种内存数据库到文件数据库的数据同步系统,在不影响内存数据库 性能的前提下,实现数据同步。为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明所述内存数据库到文件数据库数据同步系统作进一步详细的说明。参见图3,该图为本发明实施例所述内存数据库到文件数据库数据同步系统结构 图。本发明实施例所述内存数据库到文件数据库的数据同步系统,包括内存数据库11,将事务日志记录写入日志缓存区。事务日志具体可以为WAL事务日志文件,用于记录内存数据库11的事务处理信 肩、o所述日志缓存区中的事务日志具体为无格式事务日志文件。文件数据库12,可以为Orac 1 e、或DB2、或Informix等,适合于0LTP处理。模式文件14,用于定义所述内存数据库11和所述文件数据库12数据表的对应关系。数据传输代理13,用于根据事务日志刷新进程,异步地将所述日志缓存区中的所 述事务日志中信息,按照所述模式文件中定义的内存数据库11和文件数据库12数据表的 对应关系,同步到所述文件数据库12中。所述数据传输代理13,用于保证内存数据库和文件数据库的约束一致、数据类型兼容。本发明实施例所述内存数据库到文件数据库的数据同步系统,由于模式文件14 可以根据需要定义内存数据库11和文件数据库12数据表的对应关系,因此内存数据库11 和文件数据库12数据表的对应关系是可配置的。另外本发明所述方法是数据传输代理13 根据事务日志刷新进程,异步地将所述日志缓存区中的所述事务日志中信息,按照模式文 件14定义的所述内存数据库11和文件数据库12数据表的对应关系,同步到文件数据库12 中。因此,可以保证内存数据库和文件数据库约束一致。以上对本发明所提供的内存数据库到文件数据库数据同步方法及系统进行了详 细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说 明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据 本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不 应理解为对本发明的限制。
权利要求
一种内存数据库到文件数据库的数据同步方法,其特征在于,所述方法包括以下步骤A、内存数据库将事务日志记录写入日志缓存区;B、定义内存数据库和文件数据库数据表的对应关系;C、根据事务日志刷新进程,异步地将所述日志缓存区中的所述事务日志中信息,按照所述内存数据库和文件数据库数据表的对应关系,同步到文件数据库中。
2.根据权利要求1所述的内存数据库到文件数据库的数据同步方法,其特征在于,所 述事务日志为WAL事务日志文件,用于记录内存数据库的事务处理信息。
3.根据权利要求1所述的内存数据库到文件数据库的数据同步方法,其特征在于,所 述步骤C所述事务日志为无格式事务日志文件。
4.根据权利要求1所述的内存数据库到文件数据库的数据同步方法,其特征在于,所 述文件数据库为Oracle、或DB2、或Informix。
5.一种内存数据库到文件数据库的数据同步系统,其特征在于,所述系统包括 内存数据库,将事务日志记录写入日志缓存区;文件数据库;模式文件,用于定义内存数据库和文件数据库数据表的对应关系; 数据传输代理,用于根据事务日志刷新进程,异步地将所述日志缓存区中的所述事务 日志中信息,按照所述模式文件中定义的内存数据库和文件数据库数据表的对应关系,同 步到所述文件数据库中。
6.根据权利要求5所述的内存数据库到文件数据库的数据同步系统,其特征在于,所 述事务日志为WAL事务日志文件,用于记录内存数据库的事务处理信息。
7.根据权利要求5所述的内存数据库到文件数据库的数据同步系统,其特征在于,所 述日志缓存区中的事务日志为无格式事务日志文件。
8.根据权利要求5所述的内存数据库到文件数据库的数据同步系统,其特征在于,所 述文件数据库为Oracle、或DB2、或Informix。
全文摘要
本发明涉及一种内存数据库到文件数据库的数据同步方法,包括A、内存数据库将事务日志记录写入日志缓存区;B、定义内存数据库和文件数据库数据表的对应关系;C、根据事务日志刷新进程,异步地将所述日志缓存区中的所述事务日志中信息,按照所述内存数据库和文件数据库数据表的对应关系,同步到文件数据库中。本发明提供一种内存数据库到文件数据库的数据同步方法及系统,在不影响内存数据库的性能的前提下,实现数据同步。
文档编号G06F17/30GK101876996SQ200910246099
公开日2010年11月3日 申请日期2009年12月1日 优先权日2009年12月1日
发明者王征, 袁晓鹏 申请人:广州从兴电子开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1