System and method for the merging of databases
First Claim
1. A system for merging two databases with one another, the system comprising:
- first, second, and third computing devices having respective first, second, and third databases stored thereon, the first, second, and third databases each comprising one or more records, each of the one or more records having a unique identifier and timestamp associated therewith, the first, second, and third computing devices being operatively connected to one another by a network connection in a peer-to-peer manner without using a central master server, each of the first, second, and third computing devices being peers with respect to one another such that syncing occurs between the first computing device and the second computing device, syncing occurs between the first computing device and the third computing device, and syncing occurs between the second computing device and the third computing device;
the first computing device being specially programmed to;
prior to determining whether it is already syncing with the second computing device, send an initial command to the second computing device;
when the second computing device responds to the initial command sent by the first computing device, receive at least the following;
(i) a unique identifier of the second computing device, (ii) a maximum data block size that the second computing device is capable of receiving as one payload, and (iii) a last time the second computing device communicated with the first computing device;
determine whether it is already syncing with the second computing device;
when it is determined that the first computing device is already syncing with the second computing device, communications between the first computing device and the second computing device are ended;
when it is determined that the first computing device is not already syncing with the second computing device, generate a first filtered listing of the one or more unique identifiers and timestamps associated with the one or more records in the first database by using a timestamp filter, the timestamp filter comprising a first last-seen timestamp value which is indicative of the last time the first computing device communicated with the second computing device, the first last-seen timestamp value being specific to communications between the first computing device and the second computing device, wherein records having timestamps older than the first last-seen timestamp value are not included in the first filtered listing, the timestamp filter further comprising a second last-seen timestamp value that is specific to communications between the first computing device and the third computing device;
send the first filtered listing of one or more unique identifiers and timestamps from the first computing device to the second computing device;
the second computing device being specially programmed to;
generate a second filtered listing of one or more unique identifiers and timestamps associated with the one or more records in the second database using the first last-seen timestamp value sent to the second computing device from the first computing device;
compare the first filtered listing of the one or more unique identifiers and timestamps associated with the one or more records in the first database to the second filtered listing of one or more unique identifiers and timestamps associated with the one or more records in the second database;
determine whether each of the one or more unique identifiers in the first filtered listing exists in the second filtered listing, and whether each of the one or more unique identifiers in the second filtered listing exists in the first filtered listing;
when it is determined that one or more unique identifiers in the first filtered listing do not exist in the second filtered listing, add one or more records associated with the one or more unique identifiers that do not exist to a record request list;
when it is determined that one or more unique identifiers in the first filtered listing also exist in the second filtered listing, further determine, a most recent version of one or more records associated with the one or more unique identifiers existing in both listings by comparing one or more timestamps in the first filtered listing to one or more timestamps of one or more corresponding records in the second filtered listing;
when it is determined that one or more records in the first filtered listing have a more recent timestamp than one or more corresponding records in the second filtered listing with matching unique identifiers, adding the one or more records having more recent timestamps to the record request list;
when it is determined that one or more records in the second filtered listing have a more recent timestamp than one or more corresponding records in the first filtered listing with matching unique identifiers, add the one or more records having more recent timestamps to a record send list;
when it is determined that one or more unique identifiers in the second filtered listing do not exist in the first filtered listing, add one or more records associated with the one or more unique identifiers that do not exist to the record send list;
transfer the record request list to the first computing device;
copy the one or more records on the record send list into a second export queue of the second computing device; and
the first computing device being further specially programmed to;
copy the one or more records on the record request list into a first export queue of the first computing device.
1 Assignment
0 Petitions
Accused Products
Abstract
A system and method for merging a first database with a second database (one-way merge), and a system and method for merging two databases with one another (two-way merge) is described herein. During the one-way merge, new or updated records are transferred from a copy of a client database to a server database after it is determined that the server database either does not contain one or more records in the copy of the client database or contains an older version of one or more records in the copy of the client database. During the two-way merge, new or updated records are transferred between a client database and a server database after it is determined that either the client database or the server database does not contain one or more records in the other database or contains an older version of one or more records in the other database.
149 Citations
17 Claims
-
1. A system for merging two databases with one another, the system comprising:
-
first, second, and third computing devices having respective first, second, and third databases stored thereon, the first, second, and third databases each comprising one or more records, each of the one or more records having a unique identifier and timestamp associated therewith, the first, second, and third computing devices being operatively connected to one another by a network connection in a peer-to-peer manner without using a central master server, each of the first, second, and third computing devices being peers with respect to one another such that syncing occurs between the first computing device and the second computing device, syncing occurs between the first computing device and the third computing device, and syncing occurs between the second computing device and the third computing device; the first computing device being specially programmed to; prior to determining whether it is already syncing with the second computing device, send an initial command to the second computing device; when the second computing device responds to the initial command sent by the first computing device, receive at least the following;
(i) a unique identifier of the second computing device, (ii) a maximum data block size that the second computing device is capable of receiving as one payload, and (iii) a last time the second computing device communicated with the first computing device;determine whether it is already syncing with the second computing device; when it is determined that the first computing device is already syncing with the second computing device, communications between the first computing device and the second computing device are ended; when it is determined that the first computing device is not already syncing with the second computing device, generate a first filtered listing of the one or more unique identifiers and timestamps associated with the one or more records in the first database by using a timestamp filter, the timestamp filter comprising a first last-seen timestamp value which is indicative of the last time the first computing device communicated with the second computing device, the first last-seen timestamp value being specific to communications between the first computing device and the second computing device, wherein records having timestamps older than the first last-seen timestamp value are not included in the first filtered listing, the timestamp filter further comprising a second last-seen timestamp value that is specific to communications between the first computing device and the third computing device; send the first filtered listing of one or more unique identifiers and timestamps from the first computing device to the second computing device; the second computing device being specially programmed to; generate a second filtered listing of one or more unique identifiers and timestamps associated with the one or more records in the second database using the first last-seen timestamp value sent to the second computing device from the first computing device; compare the first filtered listing of the one or more unique identifiers and timestamps associated with the one or more records in the first database to the second filtered listing of one or more unique identifiers and timestamps associated with the one or more records in the second database; determine whether each of the one or more unique identifiers in the first filtered listing exists in the second filtered listing, and whether each of the one or more unique identifiers in the second filtered listing exists in the first filtered listing; when it is determined that one or more unique identifiers in the first filtered listing do not exist in the second filtered listing, add one or more records associated with the one or more unique identifiers that do not exist to a record request list; when it is determined that one or more unique identifiers in the first filtered listing also exist in the second filtered listing, further determine, a most recent version of one or more records associated with the one or more unique identifiers existing in both listings by comparing one or more timestamps in the first filtered listing to one or more timestamps of one or more corresponding records in the second filtered listing; when it is determined that one or more records in the first filtered listing have a more recent timestamp than one or more corresponding records in the second filtered listing with matching unique identifiers, adding the one or more records having more recent timestamps to the record request list; when it is determined that one or more records in the second filtered listing have a more recent timestamp than one or more corresponding records in the first filtered listing with matching unique identifiers, add the one or more records having more recent timestamps to a record send list; when it is determined that one or more unique identifiers in the second filtered listing do not exist in the first filtered listing, add one or more records associated with the one or more unique identifiers that do not exist to the record send list; transfer the record request list to the first computing device; copy the one or more records on the record send list into a second export queue of the second computing device; and the first computing device being further specially programmed to; copy the one or more records on the record request list into a first export queue of the first computing device. - View Dependent Claims (2, 3, 4)
-
-
5. A method for merging two databases with one another, the method comprising the steps of:
-
providing first, second, and third computing devices having respective first, second, and third databases stored thereon, the first, second, and third databases each comprising one or more records, each of the one or more records having a unique identifier and timestamp associated therewith; connecting each of the first, second, and third computing devices to one another by utilizing a network connection in a peer-to-peer manner without using a central master server, each of the first, second, and third computing devices being peers with respect to one another such that syncing occurs between the first computing device and the second computing device, syncing occurs between the first computing device and the third computing device, and syncing occurs between the second computing device and the third computing device; prior to determining whether the first computing device is already syncing with the second computing device, sending an initial command to the second computing device using the first computing device; when the second computing device responds to the initial command sent by the first computing device, receiving at least the following information at the first computing device;
(i) a unique identifier of the second computing device, (ii) a maximum data block size that the second computing device is capable of receiving as one payload, and (iii) a last time the second computing device communicated with the first computing device;determining, by using the first computing device, whether the first computing device is already syncing with the second computing device; when it is determined that the first computing device is already syncing with the second computing device, ending communications between the first computing device and the second computing device; when it is determined that the first computing device is not already syncing with the second computing device, generating, by using the first computing device, a first filtered listing of the one or more unique identifiers and timestamps associated with the one or more records in the first database by using a timestamp filter, the timestamp filter comprising a first last-seen timestamp value which is indicative of the last time the first computing device communicated with the second computing device, the first last-seen timestamp value being specific to communications between the first computing device and the second computing device, wherein records having timestamps older than the first last-seen timestamp value are not included in the first filtered listing, the timestamp filter further comprising a second last-seen timestamp value that is specific to communications between the first computing device and the third computing device; sending the first filtered listing of one or more unique identifiers and timestamps from the first computing device to the second computing device; comparing, by using the second computing device, the first filtered listing of the one or more unique identifiers and timestamps associated with the one or more records in the first database to a second filtered listing of one or more unique identifiers and timestamps associated with the one or more records in the second database, the second filtered listing being generated using the first last-seen timestamp value sent to the second computing device from the first computing device; determining, by using the second computing device, whether each of the one or more unique identifiers in the first filtered listing exists in the second filtered listing, and whether each of the one or more unique identifiers in the second filtered listing exists in the first filtered listing; when it is determined that one or more unique identifiers in the first filtered listing do not exist in the second filtered listing, adding one or more records associated with the one or more unique identifiers that do not exist to a record request list; when it is determined that one or more unique identifiers in the first filtered listing also exist in the second filtered listing, further determining, by using the second computing device, a most recent version of one or more records associated with the one or more unique identifiers existing in both listings by comparing one or more timestamps in the first filtered listing to one or more timestamps of one or more corresponding records in the second filtered listing; when it is determined that one or more records in the first filtered listing have a more recent timestamp than one or more corresponding records in the second filtered listing with matching unique identifiers, adding the one or more records having more recent timestamps to the record request list; when it is determined that one or more records in the second filtered listing have a more recent timestamp than one or more corresponding records in the first filtered listing with matching unique identifiers, adding the one or more records having more recent timestamps to a record send list; when it is determined that one or more unique identifiers in the second filtered listing do not exist in the first filtered listing, adding one or more records associated with the one or more unique identifiers that do not exist to the record send list; transferring the record request list from the second computing device to the first computing device; copying, using the second computing device, the one or more records on the record send list into a second export queue of the second computing device; and copying, using the first computing device, the one or more records on the record request list into a first export queue of the first computing device. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12)
-
-
13. A system for merging two databases with one another, the system comprising:
-
first, second, and third computing devices having respective first, second, and third databases stored thereon, the first, second, and third databases each comprising one or more records, each of the one or more records having a unique identifier and timestamp associated therewith, the first, second, and third computing devices being operatively connected to one another by a network connection in a peer-to-peer manner without using a central master server, each of the first, second, and third computing devices being peers with respect to one another; the first computing device being specially programmed to; perform a user datagram protocol process in order to determine a sync group list of networked computing devices that are capable of being synced with the first computing device by broadcasting a data packet that at least includes a sync group name and a database schema to the second and third computing devices; receive a response from the second and third computing devices during the user datagram protocol process, and add the second and third computing devices to the sync group list so that the first computing device is capable of syncing with the second computing device, and the first computing device is capable of syncing with the third computing device; determine whether the first computing device is already syncing with the second computing device; when it is determined that the first computing device is already syncing with the second computing device, communications between the first computing device and the second computing device are ended; when it is determined that the first computing device is not already syncing with the second computing device, generate a first filtered listing of the one or more unique identifiers and timestamps associated with the one or more records in the first database by using a timestamp filter, the timestamp filter comprising a first last-seen timestamp value which is indicative of the last time the first computing device communicated with the second computing device, the first last-seen timestamp value being specific to communications between the first computing device and the second computing device, wherein records having timestamps older than the first last-seen timestamp value are not included in the first filtered listing, the timestamp filter further comprising a second last-seen timestamp value that is specific to communications between the first computing device and the third computing device; send the first filtered listing of one or more unique identifiers and timestamps from the first computing device to the second computing device; the second computing device being specially programmed to; generate a second filtered listing of one or more unique identifiers and timestamps associated with the one or more records in the second database using the first last-seen timestamp value sent to the second computing device from the first computing device; compare the first filtered listing of the one or more unique identifiers and timestamps associated with the one or more records in the first database to the second filtered listing of one or more unique identifiers and timestamps associated with the one or more records in the second database; determine whether each of the one or more unique identifiers in the first filtered listing exists in the second filtered listing, and whether each of the one or more unique identifiers in the second filtered listing exists in the first filtered listing; when it is determined that one or more unique identifiers in the first filtered listing do not exist in the second filtered listing, add one or more records associated with the one or more unique identifiers that do not exist to a record request list; when it is determined that one or more unique identifiers in the first filtered listing also exist in the second filtered listing, further determine, a most recent version of one or more records associated with the one or more unique identifiers existing in both listings by comparing one or more timestamps in the first filtered listing to one or more timestamps of one or more corresponding records in the second filtered listing; when it is determined that one or more records in the first filtered listing have a more recent timestamp than one or more corresponding records in the second filtered listing with matching unique identifiers, adding the one or more records having more recent timestamps to the record request list; when it is determined that one or more records in the second filtered listing have a more recent timestamp than one or more corresponding records in the first filtered listing with matching unique identifiers, add the one or more records having more recent timestamps to a record send list; when it is determined that one or more unique identifiers in the second filtered listing do not exist in the first filtered listing, add one or more records associated with the one or more unique identifiers that do not exist to the record send list; transfer the record request list to the first computing device; copy the one or more records on the record send list into a second export queue of the second computing device; and the first computing device being further specially programmed to; copy the one or more records on the record request list into a first export queue of the first computing device. - View Dependent Claims (14, 15, 16, 17)
-
Specification