CN1262481A - 多个数据库的同步方法及装置 - Google Patents
多个数据库的同步方法及装置 Download PDFInfo
- Publication number
- CN1262481A CN1262481A CN00101146A CN00101146A CN1262481A CN 1262481 A CN1262481 A CN 1262481A CN 00101146 A CN00101146 A CN 00101146A CN 00101146 A CN00101146 A CN 00101146A CN 1262481 A CN1262481 A CN 1262481A
- Authority
- CN
- China
- Prior art keywords
- database
- record
- time
- last time
- relative
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
一种设有同步数据库的数据库同步系统,该同步数据库中存储有表示何时各个数据库之间交换记录的相对发送时间、相对接收时间以及每个数据库中何时创建或修改记录的相对记录修改时间。该同步系统通过比较每个记录的修改时间和相对发送时间以及相对接收时间来操作。在每个数据库中,只有一个记录的相对记录修改时间迟于相对发送时间并早于相对接收时间,才发送该记录。为了消除可能的循环,舍弃相同的记录。
Description
本发明涉及在计算机系统中使数据库相关的技术领域。本发明具体公开了一种使多个不同数据库同步的同步系统。
现今,人们越来越多地依赖计算机设备来安排生活。例如,有许多人使用计算机系统来保存个人信息,如电话号码和地址列表、活动安排列表和个人日常计划等。许多人将这种个人信息存储在台式个人计算机上的个人信息管理应用程序中。然而,当这些人离开他们的个人计算机时,由于有价值的个人信息存储在台式个人计算机中,所以就无法得到这些信息。
一种可在其它位置上得到这种个人信息的方法是将个人信息放到连接到因特网的服务器上。为了保护个人信息,在服务器允许用户访问个人信息之前,服务器会要求用户进行身份验证。目前,有一个因特网网站(web site)免费提供在因特网上存储个人信息的服务(参见http://www.plantall.com)。然而,若要访问存储在因特网服务器上的个人信息,仍需访问因特网。
另一种可访问个人信息的方法是将个人信息放到手持计算机系统上。为了实现这种功能,出现了新的一类便携式手持计算机系统。例如,3Com公司的PalmPilot、3Com公司的Palm III、以及基于Window CE的掌上个人计算机均具有存储个人信息的应用程序。
当某人使用多于一个的这些个人信息存储系统(个人计算机应用程序、因特网服务器、手持计算机等)时,他需要使这些个人信息存储系统相同步,以便能够从所有不同的存储系统中获得同样的数据。某些上述系统能够使两种个人信息系统相同步。例如,3Com公司的PalmPilot根据个人信息管理程序使个人计算机与PalmPilot手持计算机系统相同步。然而,更希望能够使多于两种的个人信息存储系统相同步,以使人们能够同时使用多种个人信息系统。
公开了一种数据库同步系统。在该数据库同步系统中,创建了一个同步数据库。同步数据库中存储有:表示每个数据库上次何时试图向其它各数据库发送记录的相对发送时间、表示每个数据库上次何时试图从其它各数据库接收记录的相对接收时间、以及表示上次何时在每个数据库中创建或修改各记录的相对记录修改时间。
该同步系统通过比较每个记录的修改时间和相对发送时间以及相对接收时间来操作。只有一个记录数据的相对记录修改时间迟于表示第一数据库上次何时向第二数据库发送记录数据的相对发送时间,并且此相对记录修改时间早于表示第一数据库上次何时从第二数据库接收记录数据的相对接收时间,才将该记录数据从第一数据库发往第二数据库。
参照附图以及下面的详细说明,将会清楚地理解本发明的其它目的、特征及优点。
通过下面的详细说明,本领域普通技术人员将会清楚地理解本发明的目的、特征及优点。附图中:
图1示出能够应用本发明的系统结构;
图2a示出包含三种应用程序的全程同步系统的概念图,其中各应用程序均存储个人信息;
图2b示出包含三种应用程序的分布同步系统的概念图,其中各应用程序均存储个人信息;
图3示出具有两个数据库需要同步的系统的概念图;
图4a示出利用全程同步系统同步三个数据库的系统的概念图;
图4b示出利用分布同步系统同步三个数据库的系统的概念图。
公开了一种同步多个数据库中信息的系统。在以下的说明中,为了便于说明以及全面理解本发明,给出了特定的具体技术术语。然而,对本领域普通技术人员显而易见的是,这些具体细节对于实现本发明来说不是必需的。例如,本发明的说明参照的是如名称、地址和电话号码等个人信息。但是,对于在数据库中存储的其它类型信息,也能够容易地采用相同的技术。
多种个人信息管理程序
图1示出了连接到局域网140的一个个人计算机系统144。个人计算机系统144的用户可使用特定的个人信息管理(PIM)程序,该程序是由他的信息服务(IS)商提供的。个人信息管理(PIM)程序存储如电话号码和地址列表、活动安排列表和个人日常计划等信息。然而,为了访问更多的个人信息,用户还可使用其它的个人信息管理系统。
一种常用的个人信息管理系统是手持计算机系统110,它包含存储和显示个人信息的应用程序。手持计算机系统110的例子可包括,但不限于,移动电话、个人数字助理(PDA)或一般用途的便携式计算机。用户可使用按键板118向手持计算机系统110输入个人信息。手持计算机系统110在平板显示器116上显示个人信息。在一个实施例中,手持计算机系统110是蜂窝电话,它包括天线116和允许用户通过无线网络进行语音和数据通信的通信电子部件。
为了保证手持计算机系统110中个人信息的实时性,手持计算机系统110可以与个人计算机系统144上的个人信息管理程序相同步。个人计算机系统144上的个人信息管理程序可以是或不是信息服务(IS)商为用户提供的个人信息管理程序。
另一种提供访问用户个人信息的方法是在因特网或内部网服务器130上的个人事项管理程序上设置用户的个人信息。图1例子中的因特网/内部网服务器130不仅连接到内部LAN 140还连接到全球因特网100上。所以,任何连接到内部LAN 140或全球因特网100的客户机系统,如终端站106、102和142,均可访问用户的个人信息。为了保护用户的个人信息,因特网/内部网服务器130上的个人事项管理程序应要求身份验证。因特网/内部网服务器130上的个人事项管理程序能够提供这样的功能,即允许用户有选择地与内部LAN 140和全球因特网100上的其它人共享该用户的个人信息。
一个有效用户也许想使用上述的所有三种个人信息管理系统。图2a示出了在个人计算机200中的三种应用程序的概念图,这三个应用程序:个人计算机信息管理程序230、因特网/内部网服务器通信程序210以及手持计算机通信程序220均存储个人信息。
个人计算机信息管理程序230可以是下面几种个人信息管理程序之一,即Qualcomn(高通)公司的Eudora Planner、Lotus(莲花)公司的Organizer、Microsoft(微软)公司的Outlook Express。个人计算机信息管理程序230具有它自己的用于个人计算机200的个人信息数据库235。
因特网/内部网服务器通信程序210可以是在因特网/内部网130上存储信息的几种程序之一。例如,Lotus Notes在Lotus Domino Server上存储信息。同样,Planet All提供的同步程序在驻留有PlanetAll的因特网服务器上存储个人信息(参见http://www.PlanetAll.com)。因特网/内部网服务器通信程序210可以具有它自己的用于因特网/内部网服务器130的个人信息数据库215。或者,因特网/内部网服务器通信程序210可以需要特殊的输入格式的数据或采用与个人计算机信息管理程序230不同的现有个人计算机PIM程序。
手持计算机通信程序220可以是与外部手持计算机系统110通信的几种程序之一。用于手持计算机系统的通信程序的例子包括3Com公司的PilotDesktop和Puma Technologies公司的Intellisync。手持计算机通信程序220可以具有它自己的用于外部手持计算机系统110的个人信息数据库225。
因此,如图2a的例子所示,用户可以具有三种或更多的正在使用的个人信息数据库。于是,希望所有个人信息数据库的内容保持同步。
多数据库同步系统
本发明提供一种保持几种不同个人信息数据库同步的系统。在下文中,公开了两种不同的实施例,然而存在其它的变化。全程同步系统
参照图2a,本发明引入了一个全程同步模块(global synchronizationmodule)250,它周期性地访问不同的个人信息数据库210、220和230并且使它们同步。
全程同步模块250具有它自己的同步数据库255。同步数据库255包含有关各个数据库内存储的各种记录的信息。具体地说,同步数据库255记录了从一个数据库到另一个数据库复制或移动各种记录的时间。为了防止由于不同计算机系统的时钟差异而引入的问题,使用时钟信号的全程同步模块250仅使用来自主机系统的时钟的时钟信号。
同步数据库255在每个个人信息数据库中存储了每个记录的登录项(entry)。具体地说,每个登录项包含表示在特定数据库中修改该记录的时间的时戳。另外,同步数据库255包含(1)上次每个数据库向其它各个数据库发送记录的时间、以及(2)上次每个数据库从其它各个数据库接收记录的时间。
同步数据库255可以为每个不同数据库记录分配唯一的记录标识符。在一个实施例中,可以为不同数据库中的相应记录分配相同的唯一的记录标识符,因为在各个数据库中这些记录是(或应是)相同的。分布同步系统
图2b示出了其中采用不同同步模块来同步不同数据库对的另一实施例。具体地说,示出了三个不同的同步模块。第一同步模块251管理在用于因特网/内部网服务器通信程序210的数据库215、和用于手持计算机通信程序220的数据库225之间的数据同步操作。第二同步模块252管理在用于因特网/内部网服务器通信程序210的数据库215、和用于个人计算机个人信息管理程序230的数据库235之间的数据同步操作。第三同步模块253管理在用于手持计算机通信程序220的数据库225、和用于个人计算机个人信息管理程序230的数据库235之间的数据同步操作。在这样的实施例中,每个同步模块251、252和253分别具有它自己的同步数据256、257和259。一个简单实例
为了说明如图2a所示的利用全程同步系统来操作多个数据库的简单实例,参照下面的表和图3提供了两个数据库的例子。
表1
数据库A 数据库B
修改记录X1 | 修改记录Y1 | 从B输入 | 输出到B | 修改记录X2 | 修改记录Y2 | 从A输入 | 输出到A |
1:00 PM | |||||||
1:00 PM | 1:01 PM | ||||||
1:00 PM | 1:01 PM | 1:02 PM | |||||
1:00 PM | 1:03 PM | 1:01 PM | 1:02 PM | ||||
1:00 PM | 1:04 PM | 1:03 PM | 1:01 PM | 1:02 PM | |||
1:00 PM | 1:05 PM | 1:04 PM | 1:03 PM | 1:01 PM | 1:02 PM | ||
1:00 PM | 1:06 PM | 1:05 PM | 1:04 PM | 1:03 PM | 1:01 PM | 1:02 PM | |
1:00 PM | 1:06 PM | 1:05 PM | 1:04 PM | 1:03 PM | 1:01 PM | 1:02 PM | 1:07 PM |
表1的水平轴表示同步数据库355的内容,这些内容用来控制图3中所示的PIM程序A 310中的PIM A数据库315和PIM程序B 320中的PIM B数据库325的同步。垂直轴(即第n行)用来描述随着记录的变化和数据库的同步,在同步数据库355中的变化。
表1的第一栏存储在数据库A中第一记录即记录X1的修改时间。第二栏存储在数据库A中第二记录即记录Y1的修改时间。表1中接下来的两栏分别描述数据库A 315从数据库B 325接收记录的时间、和数据库A 315向数据库B 325发送记录的时间。具体地说,第三栏说明数据库A 315上次从数据库B 325接收记录的时间,第四栏说明数据库A 315上次向数据库B 325发送记录的时间。
表1的第五栏存储在数据库B中相应的第一记录即记录X2的修改时间。第六栏存储在数据库B325中相应的第二记录即记录Y2的修改时间。注意,如果数据库从来没有被同步,如图1所示,这些值可以为空或者甚至还可以不存在。第七栏说明数据库B 325上次从数据库A 315接收记录的时间,第八栏说明数据库B 325上次向数据库A 315发送记录的时间。
参照表1的第2行,同步数据库355为空,即没有输入过数据或记录。于是,如表1的第3行所记录的,在1:00pm,用户向数据库A 315加入记录X1。接着,如表1的第4行所说明的,在1:01pm,用户向数据库B 325加入记录Y2。在此时,每个数据库包含一个记录。创建的这两个记录没有同步,因此,没有那个数据库能够同时访问这两个记录。
通过让数据库A 315向数据库B 325发送记录,启动并开始同步过程(然后,数据库B 325将向数据库A 315发送记录)。如表1的第5行所示,同步数据库355记录了在1:02pm数据库B325开始从数据库A 315接收记录。检查数据库A 315中的每个记录,并且只有在满足下面两个条件时才向数据库B325发送这些记录:(1)数据库A中的记录修改时间必须大于上次向数据库B发送记录的时间;以及(2)数据库A中的记录修改时间必须小于数据库A上次从数据库B接收记录的时间。数据库A中的记录修改时间必须大于上次向数据库B发送记录的时间,这样就只发送被修改的记录。数据库A中的记录修改时间必须小于数据库A上次从数据库B接收记录的时间,这样就防止了刚从数据库B接收的记录被再发回数据库B。由于X1从来没有被发送到数据库B 325,所以修改时间大于上次发送时间。为了简化处理过程,可以为新创建的记录给定用字段设置的最早可能时间。于是,在数据库B 325中创建记录X1作为记录X2,并且将上次修改时间设置为表1第6行中的1:03pm。
由于X1是数据库A 315中的唯一记录,所以数据库A 315就完成了记录发送。同步模块350在同步数据库355中记录数据库A 315结束向数据库B 325发送记录的结束时间,具体地说,表1的第7行将1:04pm记录为向数据库B325发送记录的完成时间。
然后,数据库B 325开始向数据库A 315发送记录。同步模块350在同步数据库355中记录数据库A 315开始从数据库B 325接收记录的开始时间,具体地说,表1的第8行将1:05pm记录为数据库A 315开始从数据库B 325接收记录的时间。
然后,同步模块350进行从数据库B 325向数据库A 315发送记录的过程。如前所述,只发送这样的记录,即数据库B中的记录修改时间大于上次向数据库A发送记录的时间、并且数据库B中的记录修改时间小于数据库B上次从数据库A接收记录的时间。
当同步模块350要检查数据库B 325中的记录Y2时,由于记录Y2是在上次向数据库A 315发送记录之后修改的(1:01pm为最早时间)、并且记录Y2是在上次从数据库A接收记录的时间之前修改的(1:01pm小于1:02pm),所以同步模块350将向数据库A发送记录Y2。为新的记录Y1给定当前时间作为修改时间。在本例中,在表1的第9行指定1:06pm作为修改时间。
当同步模块350要检查数据库B 325中的记录X2时,同步模块350将不向数据库A 315发送记录X2。不向数据库A 315发送记录X2的原因是,由于该记录不满足前述条件的第二部分。具体地说,记录X2不是在上次从数据库A 315接收记录的时间之前修改的(1:03pm不小于1:02pm)。所以,不向数据库A 315发送记录X2。这表示数据库B 325刚从数据库A 315接收到记录X2并且还没有修改它。
最后,由于X2和Y2是数据库B 325中仅有的记录,所以数据库B 325完成了向数据库A 315发送记录。同步模块350在同步数据库355中记录数据库A 315结束向数据库B 325发送记录的结束时间。具体地说,表1的第10行将1:07pm记录为向数据库B 325发送记录的完成时间。时钟差异
在各种不同计算机系统中的时钟常常不是精确同步的。例如,参照以下的表2,各个时钟完全是异相的。
表2
数据库A 数据库B
修改记录X1 | 修改记录Y1 | 从B输入 | 输出到B | 修改记录X2 | 修改记录Y2 | 从A输入 | 输出到A |
1:00 PM | |||||||
1:00 PM | 2:01 PM | ||||||
1:00 PM | 2:01 PM | 2:02 PM | |||||
1:00 PM | 2:03 PM | 2:01 PM | 2:02 PM | ||||
1:00 PM | 1:04 PM | 2:03 PM | 2:01 PM | 2:02 PM | |||
1:00 PM | 1:05 PM | 1:04 PM | 2:03 PM | 2:01 PM | 2:02 PM | ||
1:00 PM | 1:06 PM | 1:05 PM | 1:04 PM | 2:03 PM | 2:01 PM | 2:02 PM | |
1:00 PM | 1:06 PM | 1:05 PM | 1:04 PM | 2:03 PM | 2:01 PM | 2:02 PM | 2:07 PM |
表2的例子仍将正常工作,因为在比较中仅使用根据本地时钟范围记录的时钟值。
如上面的例子所示,当修改、发送和接收数据库记录时,可以使用实际时间。然而,绝对时间并不重要。因此,本发明的系统还可以使用一个在执行每个步骤之后改变的变化计数器。例如,参照上述各个例子,各个时间可以用递增计数器值(100、101、102、103等)来代替。
因此,记录变化的准确时间不是必需的。要知道的重要事实是在特定同步之前或之后记录是否有变化。参照图3,同步模块350可以不用从数据库获得特定记录发生变化的准确时间。事实上,可以不告诉同步模块350记录变化的时间。然而,同步模块350可以在同步之后存储每个数据库的拷贝。因此,当启动同步时,同步模块350首先比较所存储的数据库和改变后的数据库,以判断哪一个记录已被修改。当前时间或递增的计数器值将存储在同步数据库355中的修改记录的修改时间字段内。三个数据库的例子
本发明的同步系统能够扩展到多个数据库。下面的表3示出了多个数据库同步的例子。为了简化该例子,只考虑单个数据库记录的情况。
表3
数据库A 数据库B 数据库C
修改记录Xa | 从B输入 | 输出到B | 从C输入 | 输出到C | 修改记录Xb | 从A输入 | 输出到A | 从C输入 | 输出到C | 修改记录Xc | 从A输入 | 输出到A | 从B输入 | 输出到B |
1:00 | ||||||||||||||
1:00 | 1:01 |
1:00 | 1:02 | 1:01 | ||||||||||||
1:00 | 1:03 | 1:02 | 1:01 | |||||||||||
1:00 | 1:04 | 1:03 | 1:02 | 1:01 | ||||||||||
1:00 | 1:04 | 1:03 | 1:02 | 1:01 | 1:05 | |||||||||
1:00 | 1:04 | 1:03 | 1:02 | 1:01 | 1:05 | 1:06 | ||||||||
1:00 | 1:04 | 1:03 | 1:02 | 1:01 | 1:05 | 1:07 | 1:06 | |||||||
1:00 | 1:04 | 1:03 | 1:02 | 1:01 | 1:05 | 1:08 | 1:07 | 1:06 | ||||||
1:00 | 1:04 | 1:03 | 1:02 | 1:01 | 1:05 | 1:09 | 1:08 | 1:07 | 1:06 | |||||
1:00 | 1:04 | 1:03 | 1:02 | 1:01 | 1:05 | 1:09 | 1:08 | 1:07 | 1:06 | 1:10 | ||||
1:00 | 1:04 | 1:03 | 1:11 | 1:02 | 1:01 | 1:05 | 1:09 | 1:08 | 1:07 | 1:06 | 1:10 | |||
1:00 | 1:04 | 1:03 | 1:11 | 1:02 | 1:01 | 1:05 | 1:09 | 1:08 | 1:07 | 1:12 | 1:06 | 1:10 | ||
1:00 | 1:04 | 1:03 | 1:11 | 1:02 | 1:01 | 1:05 | 1:09 | 1:08 | 1:07 | 1:03 | 1:12 | 1:06 | 1:10 | |
1:00 | 1:04 | 1:03 | 1:11 | 1:14 | 1:02 | 1:01 | 1:05 | 1:09 | 1:08 | 1:07 | 1:03 | 1:12 | 1:06 | 1:10 |
表3的水平轴表示同步数据库455的内容,这些内容用来控制图4a中所示的PIM程序A 410中的PIM A数据库415和PIM程序B 420中的PIM B数据库425的同步。垂直轴用来描述随着一个记录的输入然后数据库的同步,在同步数据库455中的变化。
在分布同步模块环境中,如图4b所示,表3的同步数据库将分成三个不同的数据库,每个同步模块有一个数据库。具体地说,同步数据456将包含A至B和B至A之间的数据交换,同步数据457将包含A至C和C至A之间的数据交换,同步数据459将包含C至B和B至C之间的数据交换。
回头参照图4a的全程同步实施例,表3的首先五栏(同步数据455)存储在数据库A中的记录Xa、数据库A 415上次从数据库B 425接收记录的时间、数据库A 415上次向数据库B 425发送记录的时间、数据库A 415上次从数据库C 435接收记录的时间、数据库A 415上次向数据库C 435发送记录的时间。
表3的中间五栏存储在数据库B 425中的记录Xb、数据库B 425上次从数据库A 415接收记录的时间、数据库B 425上次向数据库A 415发送记录的时间、数据库B 425上次从数据库C 435接收记录的时间、数据库B 425上次向数据库C 435发送记录的时间。
表3的最后五栏存储在数据库C 435中的记录Xc、数据库C 435上次从数据库A 415接收记录的时间、数据库C 435上次向数据库A 415发送记录的时间、数据库C 435上次从数据库B 425接收记录的时间、数据库C 435上次向数据库B 425发送记录的时间。
表3的垂直轴给出了一个三数据库同步的例子。参照表3的第2行,同步数据库355为空,即没有输入过数据或记录。于是,如表3的第3行所记录的,在1:00pm,用户向数据库A 415加入记录Xa。
接着,在数据库A和B之间启动同步过程。该同步过程可以由用户来启动或自动启动。该同步过程以数据库A 415向数据库B 425发送记录来开始。同步数据库455记录了这样的情况,即如表3的第4行所说明的,在1:01pm,数据库B 425开始从数据库A 415接收记录。对数据库A 415中的每个记录进行检查,并且只有在满足下面两个条件时才向数据库B 425发送这些记录:(1)数据库A中的记录修改时间必须大于上次向数据库B发送记录的时间;以及(2)数据库A中的记录修改时间必须小于数据库A上次从数据库B接收记录的时间。由于Xa从来没有被发送到数据库B 425,所以修改时间大于上次发送时间(从来就没有)。于是,在数据库B 425中创建记录Xa为记录Xb,并且将上次修改时间设置为表3第5行中的1:02pm。
由于Xa是数据库A 415中的唯一记录,所以数据库A 415就完成了记录发送。同步模块450在同步数据库455中记录数据库A 415结束向数据库B 425发送记录的结束时间,具体地说,表3的第6行将1:03pm记录为向数据库B425发送记录的完成时间。
然后,数据库B 425开始向数据库A 415发送记录。同步模块450在同步数据库455中记录数据库A 415开始从数据库B 425接收记录的开始时间,具体地说,表3的第7行将1:04pm记录为数据库A 415开始从数据库B 425接收记录的时间。然后,同步模块450进行从数据库B 425向数据库A 415发送记录的过程。如前所述,只发送这样的记录,即数据库B中的记录修改时间大于上次向数据库A发送记录的时间、并且数据库B中的记录修改时间小于数据库B上次从数据库A 415接收记录的时间。然而,由于在从数据库A 415接收记录之后数据库B 425中的唯一记录是所创建的记录Xb,所以数据库B 425将不会发送记录。于是,如表3的第8行所示,同步模块450将记录下在1:05pm数据库B结束向数据库A发送记录。
接着,在数据库B和C之间启动同步过程。该同步过程也可以由用户来启动或自动启动。该同步过程以数据库B 425向数据库C 435发送记录来开始。同步模块450记录了这样的情况,即如表3的第9行所说明的,在1:06pm,数据库C 435开始从数据库B 425接收记录。对数据库B 425中的每个记录进行检查,并且只有在满足下面两个条件时才向数据库C 435发送这些记录:(1)数据库B中的记录修改时间必须大于上次向数据库C发送记录的时间;以及(2)数据库B中的记录修改时间必须小于数据库B上次从数据库C接收记录的时间。由于数据库B 425中的Xb从来没有被发送到数据库C 435,所以修改时间大于上次发送时间(从来就没有)。于是,在数据库C 435中创建记录Xb为记录Xc,并且将上次修改时间设置为表3第10行中的1:07pm。由于Xb是数据库B 425中的唯一记录,所以同步模块450在表3的第11行中记录下,在1:08pm,数据库B结束向数据库C发送记录的结束时间。
在同步模块450完成了从数据库B向数据库C发送记录之后,同步模块450开始从数据库C向数据库B发送记录。在表3的第12行,同步模块450记录下在1:09pm数据库B开始从数据库C接收记录。由于没有记录需要发送(记录Xc是在从数据库B接收之后创建的),所以如表3的第13行所示,同步模块450将记录下1:10pm作为数据库C结束向数据库B发送记录的完成时间。
接着,在数据库A和C之间启动同步过程。该同步过程以数据库C 435向数据库A 415发送记录来开始。同步模块450记录了这样的情况,即如表3的第14行所说明的,在1:11pm,数据库A 415开始从数据库C 435接收记录。对数据库C 435中的每个记录进行检查,并且只有在满足下面两个条件时才向数据库A 415发送这些记录:(1)数据库C中的记录修改时间必须大于上次向数据库A发送记录的时间;以及(2)数据库C中的记录修改时间必须小于数据库C上次从数据库A接收记录的时间。由于数据库C 435中的Xc从来没有被发送到数据库A 415,所以修改时间大于上次发送时间(从来就没有)。于是,记录Xc被发送到数据库A 415。然而,数据库A 415要将所接收的记录(记录Xc)与现有记录相比较,以判断接收记录是否是一个重复的记录。若数据库A 415比较新接收的记录和现有记录Xa,则数据库A 41 5将判定这两个记录完全相同。于是,数据库A 415将舍弃新接收的记录,因为它已经具有该记录。
由于记录Xc是数据库C 435中的唯一记录,所以同步模块450在表3的第15行中记录下,在1:12pm,数据库C结束向数据库A 415发送记录的结束时间。然后,同步模块450开始从数据库A向数据库C发送记录。在表3的第16行,同步模块450记录下在1:13pm数据库C开始从数据库A接收记录。在同步模块450检查记录Xc之后,同步模块450会试图按修改的发送该记录,因为在从数据库C接收记录之前,数据库A上次已将记录发送给数据库C(从来就没有)并且修改了Xa。然而,当数据库C接收到该记录时,数据库C将舍弃该记录,因为记录Xa与现有记录Xc完全相同。最后,同步模块450将在表3的第17行中记录下,在1:14pm数据库A结束向数据库C发送记录。双重修改解决方案
在同步模块检测到在全部两个数据库中已加入或修改了一个记录时,会发生双重修改的情况。例如,考虑下面的例子:
1.用户将记录Xa加入到数据库A。
2.数据库A与数据库B同步。
3.数据库A与数据库C同步。
4.数据库B与数据库C同步。在该例子的第2步和第3步中,在数据库B和数据库C中都要加入记录Xa。即使已知加入或修改每个记录的准确时间,那也不一定是用来判断要保存哪个记录和要舍弃哪个记录的正确信息。用于处理这种情况的现有技术处理过程在两个数据库中分别加入两个记录,这样在结束时会有两倍多的记录。对于本发明的同步系统来说,这是不期望的,因为在上述的情况下,所有记录都是双倍的。简而言之,当第一次进行两个数据库的同步时,如果这两个数据库在过去分别与第三个数据库同步,则会产生许多的记录复本。为了处理这种情况,应能够删除完全相同的记录并且能够利用用户的输入来解决该情况的剩余问题。下面的步骤描述了一种处理在检测到双重修改或添加时的情况的可能方法:
1.比较各个记录的内容。如果记录内容完全相同,则舍弃一记录,否则:
2.如果用户选择了一些判据则使用这些判据,否则:
3.询问用户,给用户列出下面的选项:
a)指定哪个数据库“赢得”此记录。
b)指定在该同步过程中哪个数据库“赢得”所有记录。
c)不同步此记录。
d)不同步任何冲突的记录。
e)复制这些记录。
f)复制所有冲突的记录。
上面已说明了一种同步多个数据库的方法。本领域普通技术人员应理解,在不脱离本发明范围的情况下,可以对本发明各成份的内容或安排进行各种改变和修改。
Claims (20)
1.一种同步多个数据库的方法,包括:
在第一数据库存储第一记录;
在所述第一数据库和第二数据库之间启动同步;以及
如果所述第一记录是在所述第一数据库上次向所述第二数据库发送记录之后创建或修改的、并且所述第一记录是在所述第一数据库上次从所述第二数据库接收记录之前创建或修改的,则向所述第二数据库发送所述第一记录。
2.如权利要求1所述的方法,还包括:
如果在所述第一数据库中已存在完全相同的记录,则所述第二数据库舍弃所述第一记录。
3.如权利要求1所述的方法,还包括:
如果第二记录是在所述第二数据库上次向所述第一数据库发送记录之后创建或修改的、并且所述第二记录是在所述第二数据库上次从所述第一数据库接收记录之前创建或修改的,则向所述第一数据库发送所述第二数据库中的所述第二记录。
4.如权利要求1所述的方法,还包括:
在所述第一数据库和第三数据库之间启动同步;以及
如果所述第一记录是在所述第一数据库上次向所述第三数据库发送记录之后创建或修改的、并且所述第一记录是在所述第一数据库上次从所述第三数据库接收记录之前创建或修改的,则向所述第三数据库发送所述第一记录。
5.如权利要求1所述的方法,还包括:
在一个同步数据库中存储一组相对创建和修改时间,所述相对创建和修改时间指示一组何时创建或修改所述第一数据库和所述第二数据库中记录的相对时间。
6.如权利要求5所述的方法,其中,每个所述相对创建或修改时间包括来自系统时钟的相对时间。
7.如权利要求5所述的方法,其中,每个所述相对创建或修改时间包括来自递增计数器的相对时间。
8.如权利要求1所述的方法,还包括:
在所述第二数据库和第三数据库之间启动同步;以及
如果所述第一记录是在所述第二数据库上次向所述第三数据库发送记录之后创建或修改的、并且所述第一记录是在所述第二数据库上次从所述第三数据库接收记录之前创建或修改的,则从所述第二数据库向所述第三数据库发送所述第一记录。
9.一种用于同步第一数据库和第二数据库中记录的同步系统,包括:
一个同步数据库,所述同步数据库包括:
第一数据库发往第二数据库相对值,所述第一数据库发往第二数据库相对值存储一个指示何时第一数据库上次试图向第二数据库发送记录的第一相对时间值,
第一数据库收自第二数据库相对值,所述第一数据库收自第二数据库相对值存储一个指示何时所述第一数据库上次试图从所述第二数据库接收记录的第二相对时间值,
至少一个修改记录值,每个修改记录值对应于各个数据库中的每个记录,所述修改记录值存储一个表示何时创建或修改所述对应记录的第三相对时间值;以及
一个同步模块,如果对应于第一记录的第一修改记录值所指定的时间迟于所述第一数据库发往第二数据库相对值、并且所述第一修改记录值所指定的时间早于所述第一数据库收自第二数据库相对值,则所述同步模块将所述第一记录从所述第一数据库发送到所述第二数据库。
10.如权利要求9所述的同步系统,其中,所述同步数据库还包括:
第二数据库发往第一数据库相对值,所述第二数据库发往第一数据库相对值存储一个指示何时第二数据库上次试图向第一数据库发送记录的第四相对时间值,
第二数据库收自第一数据库相对值,所述第二数据库收自第一数据库相对值存储一个指示何时所述第二数据库上次试图从所述第一数据库接收记录的第五相对时间值,
其中,如果对应于第二记录的第二修改记录值所指定的时间迟于所述第二数据库发往第一数据库相对值、并且所述第二修改记录值所指定的时间早于所述第二数据库收自第一数据库相对值,则所述同步模块将所述第二记录从所述第二数据库发送到所述第一数据库。
11.如权利要求9所述的同步系统,其中,所述相对时间值包括系统时钟时间。
12.如权利要求9所述的同步系统,其中,所述相对时间值包括递增计数器。
13.一种同步多个数据库的方法,包括:
在所述多个数据库之间启动同步,所述多个数据库包括至少两个数据库即第一数据库和第二数据库;
检查所述第一数据库中的第一记录,来判断是否所述第一记录是在所述第一数据库上次向所述第二数据库发送记录之后、并且在所述第一数据库上次从所述第二数据库接收记录之前创建或修改的;以及
若所述第一记录是在所述第一数据库上次向所述第二数据库发送记录之后并且在所述第一数据库上次从所述第二数据库接收记录之前创建或修改的,则向所述第二数据库发送所述第一记录的拷贝。
14.如权利要求13所述的方法,还包括:
在所述第一数据库中记录一个第一值,以表示已经将所述第一记录的所述拷贝发送到所述第二数据库。
15.如权利要求14所述的方法,还包括:
在所述第二数据库中记录一个第二值,以表示已经从所述第一数据库接收到所述第一记录的所述拷贝。
16.如权利要求15所述的方法,其中,所述第一值和所述第二值来自(i)时钟、(ii)计数器、(iii)不等序列号(numbers)之一。
17.如权利要求13所述的方法,还包括:
检查所述第二数据库中的第二记录,来判断是否所述第二记录是在所述第二数据库上次向所述第一数据库发送记录之后、并且在所述第二数据库上次从所述第一数据库接收记录之前创建或修改的;
若所述第二记录是在所述第二数据库上次向所述第一数据库发送记录之后并且在所述第二数据库上次从所述第一数据库接收记录之前创建或修改的,则向所述第一数据库发送所述第二记录的拷贝;以及
在所述第二数据库中记录一个第三值,以表示已经将所述第二记录的所述拷贝发送到所述第一数据库;以及
在所述第一数据库中记录一个第四值,以表示已经从所述第二数据库接收到所述第二记录的所述拷贝。
18.如权利要求17所述的方法,其中,所述第三值和所述第四值来自(i)时钟、(ii)计数器、(iii)不等序列号之一。
19.一种用于同步多个数据库的同步系统,包括:
数据存储设备,用于第一数据库和第二数据库;
用于同步模块的存储器;
连接到所述存储器和所述数据存储设备的处理器,所述处理器使所述同步模块执行下列操作:
检查所述第一数据库中的第一记录,来判断是否所述第一记录是在所述第一数据库上次向所述第二数据库发送记录之后、并且在所述第一数据库上次从所述第二数据库接收记录之前创建或修改的;
若所述第一记录是在所述第一数据库上次向所述第二数据库发送记录之后并且在所述第一数据库上次从所述第二数据库接收记录之前创建或修改的,则向所述第二数据库发送所述第一记录的拷贝;
检查所述第二数据库中的第二记录,来判断是否所述第二记录是在所述第二数据库上次向所述第一数据库发送记录之后、并且在所述第二数据库上次从所述第一数据库接收记录之前创建或修改的;以及
若所述第二记录是在所述第二数据库上次向所述第一数据库发送记录之后并且在所述第二数据库上次从所述第一数据库接收记录之前创建或修改的,则向所述第一数据库发送所述第二记录的拷贝。
20.如权利要求19所述的同步系统,其中,所述第一数据库记录一个第一值,以识别已经将所述第一记录的所述拷贝发送到所述第二数据库;以及,所述第二数据库记录一个第二值,以表示已经从所述第一数据库接收到所述第一记录的所述拷贝。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US23903999A | 1999-01-27 | 1999-01-27 | |
US09/239,039 | 1999-01-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1262481A true CN1262481A (zh) | 2000-08-09 |
Family
ID=22900350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN00101146A Pending CN1262481A (zh) | 1999-01-27 | 2000-01-21 | 多个数据库的同步方法及装置 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1024441A3 (zh) |
JP (1) | JP2000235513A (zh) |
KR (1) | KR20010006590A (zh) |
CN (1) | CN1262481A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100343846C (zh) * | 2003-09-28 | 2007-10-17 | 华为技术有限公司 | 一种数据间差异性的分析比较方法 |
CN100353325C (zh) * | 2004-08-23 | 2007-12-05 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN100361439C (zh) * | 2002-07-30 | 2008-01-09 | 上海阿尔卡特网络支援系统有限公司 | 程控交换机数据库对比系统 |
CN100373347C (zh) * | 2005-07-13 | 2008-03-05 | 华硕电脑股份有限公司 | 一种具自动备份功能的电子装置 |
CN100409238C (zh) * | 2002-09-03 | 2008-08-06 | Sap股份公司 | 中央主数据管理 |
CN1677355B (zh) * | 2004-03-31 | 2010-05-26 | 深圳市朗科科技股份有限公司 | 文件同步更新的方法、系统及装置 |
WO2010145277A1 (zh) * | 2009-10-23 | 2010-12-23 | 中兴通讯股份有限公司 | 源数据库和目的数据库之间数据同步的方法、装置及系统 |
CN101317164B (zh) * | 2005-09-29 | 2011-09-07 | 捷讯研究有限公司 | 通过比较代表信息的有效数据库同步 |
CN104025090A (zh) * | 2012-01-11 | 2014-09-03 | 霍夫曼-拉罗奇有限公司 | 用于医疗记录的数据库同步的系统和方法 |
CN107357920A (zh) * | 2017-07-21 | 2017-11-17 | 北京奇艺世纪科技有限公司 | 一种增量式的多副本数据同步方法及系统 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671757B1 (en) | 2000-01-26 | 2003-12-30 | Fusionone, Inc. | Data transfer and synchronization system |
US8611873B2 (en) | 2004-05-12 | 2013-12-17 | Synchronoss Technologies, Inc. | Advanced contact identification system |
US8620286B2 (en) | 2004-02-27 | 2013-12-31 | Synchronoss Technologies, Inc. | Method and system for promoting and transferring licensed content and applications |
US8156074B1 (en) | 2000-01-26 | 2012-04-10 | Synchronoss Technologies, Inc. | Data transfer and synchronization system |
US7895334B1 (en) | 2000-07-19 | 2011-02-22 | Fusionone, Inc. | Remote access communication architecture apparatus and method |
US8073954B1 (en) | 2000-07-19 | 2011-12-06 | Synchronoss Technologies, Inc. | Method and apparatus for a secure remote access system |
US6611849B1 (en) * | 2000-09-29 | 2003-08-26 | Palm Source, Inc. | System for synchronizing databases on multiple devices utilizing a home base |
US7818435B1 (en) | 2000-12-14 | 2010-10-19 | Fusionone, Inc. | Reverse proxy mechanism for retrieving electronic content associated with a local network |
KR20020048832A (ko) * | 2000-12-18 | 2002-06-24 | (주)소프트컴퍼니 | 웹과 로컬 시스템 데이터의 동기화 프로그램 |
US6985915B2 (en) | 2001-02-28 | 2006-01-10 | Kiran Somalwar | Application independent write monitoring method for fast backup and synchronization of files |
US6847983B2 (en) | 2001-02-28 | 2005-01-25 | Kiran Somalwar | Application independent write monitoring method for fast backup and synchronization of open files |
US8615566B1 (en) | 2001-03-23 | 2013-12-24 | Synchronoss Technologies, Inc. | Apparatus and method for operational support of remote network systems |
US6839564B2 (en) | 2001-04-25 | 2005-01-04 | Nokia Corporation | Synchronization of database data |
US6993522B2 (en) * | 2001-06-27 | 2006-01-31 | Microsoft Corporation | System and method for resolving conflicts detected during a synchronization session |
EP1383054A1 (en) * | 2002-07-19 | 2004-01-21 | SCHLUMBERGER Systèmes | Data synchronization procedures for smartcards |
JP3860098B2 (ja) * | 2002-08-30 | 2006-12-20 | 株式会社東芝 | 情報端末装置 |
KR20040039863A (ko) * | 2002-11-05 | 2004-05-12 | 한국신용평가정보주식회사 | 개인정보와 기업정보의 동기화 시스템 |
FR2850814A1 (fr) * | 2003-02-03 | 2004-08-06 | France Telecom | Systeme et procede de synchronisation de donnees entre des portails de services et plate-forme d'acces a des services utilisant un tel systeme de synchronisation |
EP1652048A4 (en) | 2003-07-21 | 2009-04-15 | Fusionone Inc | ORDERING NEWS MANAGEMENT SYSTEM |
US9542076B1 (en) | 2004-05-12 | 2017-01-10 | Synchronoss Technologies, Inc. | System for and method of updating a personal profile |
US8181111B1 (en) | 2007-12-31 | 2012-05-15 | Synchronoss Technologies, Inc. | System and method for providing social context to digital activity |
US8255006B1 (en) | 2009-11-10 | 2012-08-28 | Fusionone, Inc. | Event dependent notification system and method |
US8943428B2 (en) | 2010-11-01 | 2015-01-27 | Synchronoss Technologies, Inc. | System for and method of field mapping |
CN102843395B (zh) * | 2011-06-22 | 2015-08-19 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及装置 |
US8996456B2 (en) * | 2011-11-14 | 2015-03-31 | Google Inc. | Data processing service |
KR20130119104A (ko) * | 2012-04-23 | 2013-10-31 | 삼성에스디에스 주식회사 | 이기종 공간 데이터베이스간 지리 정보 데이터 동기화 시스템 및 방법 |
US9043278B1 (en) | 2012-05-09 | 2015-05-26 | Bertec Corporation | System and method for the merging of databases |
US8700569B1 (en) | 2012-05-09 | 2014-04-15 | Bertec Corporation | System and method for the merging of databases |
US8543540B1 (en) | 2012-05-09 | 2013-09-24 | Bertec Corporation | System and method for the merging of databases |
US9361433B2 (en) | 2012-08-03 | 2016-06-07 | Synchronoss Technologies, Inc | Enterprise leasing license algorithm |
EP2843879A1 (fr) * | 2013-09-03 | 2015-03-04 | HAGER CONTROLS (Société par Actions Simplifiée) | Configuration d'un réseau domotique |
US20160012116A1 (en) * | 2014-07-10 | 2016-01-14 | Siemens Product Lifecycle Management Software Inc. | Data re-transfer with site based three point merges using import records |
CN104537046B (zh) * | 2014-12-24 | 2018-09-11 | 北京奇虎科技有限公司 | 数据补全方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5710922A (en) * | 1993-06-02 | 1998-01-20 | Apple Computer, Inc. | Method for synchronizing and archiving information between computer systems |
US5684990A (en) * | 1995-01-11 | 1997-11-04 | Puma Technology, Inc. | Synchronization of disparate databases |
US5870765A (en) * | 1996-10-09 | 1999-02-09 | Oracle Corporation | Database synchronizer |
-
2000
- 2000-01-21 CN CN00101146A patent/CN1262481A/zh active Pending
- 2000-01-26 KR KR1020000003735A patent/KR20010006590A/ko not_active Application Discontinuation
- 2000-01-26 JP JP2000017375A patent/JP2000235513A/ja active Pending
- 2000-01-27 EP EP00300614A patent/EP1024441A3/en not_active Withdrawn
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100361439C (zh) * | 2002-07-30 | 2008-01-09 | 上海阿尔卡特网络支援系统有限公司 | 程控交换机数据库对比系统 |
CN100409238C (zh) * | 2002-09-03 | 2008-08-06 | Sap股份公司 | 中央主数据管理 |
CN100343846C (zh) * | 2003-09-28 | 2007-10-17 | 华为技术有限公司 | 一种数据间差异性的分析比较方法 |
CN1677355B (zh) * | 2004-03-31 | 2010-05-26 | 深圳市朗科科技股份有限公司 | 文件同步更新的方法、系统及装置 |
CN100353325C (zh) * | 2004-08-23 | 2007-12-05 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN100373347C (zh) * | 2005-07-13 | 2008-03-05 | 华硕电脑股份有限公司 | 一种具自动备份功能的电子装置 |
CN101317164B (zh) * | 2005-09-29 | 2011-09-07 | 捷讯研究有限公司 | 通过比较代表信息的有效数据库同步 |
WO2010145277A1 (zh) * | 2009-10-23 | 2010-12-23 | 中兴通讯股份有限公司 | 源数据库和目的数据库之间数据同步的方法、装置及系统 |
US8655836B2 (en) | 2009-10-23 | 2014-02-18 | Zte Corporation | Method, device and system for implementing data synchronization between source database and target database |
CN104025090A (zh) * | 2012-01-11 | 2014-09-03 | 霍夫曼-拉罗奇有限公司 | 用于医疗记录的数据库同步的系统和方法 |
CN107357920A (zh) * | 2017-07-21 | 2017-11-17 | 北京奇艺世纪科技有限公司 | 一种增量式的多副本数据同步方法及系统 |
CN107357920B (zh) * | 2017-07-21 | 2020-05-22 | 北京奇艺世纪科技有限公司 | 一种增量式的多副本数据同步方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
JP2000235513A (ja) | 2000-08-29 |
EP1024441A2 (en) | 2000-08-02 |
KR20010006590A (ko) | 2001-01-26 |
EP1024441A3 (en) | 2001-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1262481A (zh) | 多个数据库的同步方法及装置 | |
US7593925B2 (en) | Method and system for locating contact information collected from contact sources | |
CN100336351C (zh) | 选择同步数据 | |
US8751926B2 (en) | Intelligent rendering on a mobile computing device | |
CN1142482C (zh) | 控制普及计算设备应用程序/优选的方法和系统 | |
US20060195422A1 (en) | Method and system for collecting contact information from contact sources and tracking contact sources | |
CN101068156A (zh) | 数据同步时冲突处理方法及冲突处理服务器 | |
US7693918B2 (en) | Rapid prototyping, generating and dynamically modifying a schema representing a database | |
CN101227379B (zh) | 一种实现数据同步的系统和方法 | |
CN1705946A (zh) | 用于同步身份信息的方法和系统 | |
CN1682207A (zh) | 基于分级组织结构图来维护email邮寄列表 | |
US8325894B2 (en) | Method, system, and program product for managing conference calls | |
CN101080056A (zh) | 一种移动终端的网络浏览器收藏夹的管理方法及系统 | |
CN1917480A (zh) | 用于经由即时消息的任务委托的方法和系统 | |
CN101031101A (zh) | 短消息拆分提示方法及装置 | |
US20030229644A1 (en) | Accounting for references between a client and server that use disparate e-mail storage formats | |
CN1855981A (zh) | 文档管理系统、文档管理方法和存储文档管理程序的记录介质 | |
CN1411319A (zh) | 立体声双声道地址分配装置、信息发送装置及系统 | |
CN105260881A (zh) | 一种基于任务的信息管理方法、装置及系统 | |
CN1763775A (zh) | 宴会厅预订管理系统 | |
CN1471273A (zh) | 利用即时通讯工具创建动态讨论组的实现方法和控制流程 | |
US20080148159A1 (en) | Activity centric project management tool | |
CN1881243A (zh) | 电子邮件制作系统及其方法 | |
US20070168562A1 (en) | Participant-selective event synchronization for portable electronic devices | |
CN102342077A (zh) | 用于实时综合与用户有关的交互的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |