# US 8,543,581 B2 · Synchronizing records between databases

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,543,581 B2
- Document ID: US8543581B2
- Status: Granted
- Kind: B2
- Application number: 13/079,027
- Filed: 2011-04-04
- Published: 2012-10-04
- Granted: 2013-09-24
- Earliest claimed: 2011-04-04
- Assignees: Microsoft Corporation
- Applicants: Pierre N. Martin; Bryan Dove
- Inventors: Pierre N. Martin; Bryan Dove
- Web page: https://patentgrep.com/patent/US8543581B2

## CPC

- G06F 16/275: {Synchronous replication}
- G06F 16/23: Updating
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The described implementations relate to synchronizing records between databases. One implementation can cause historical data of a source database to be recorded as entries on a transaction log and can subsequently cause new data of the source database to be recorded on the transaction log in a same manner as the historical data. This implementation can also identify a distinct attribute associated with an individual entry and generate a message that reflects the individual entry.

## Claims

### Claim 1

At least one computer-readable storage medium having instructions stored thereon that, when executed by a computing device, cause the computing device to perform acts, the acts comprising:
performing synchronization of a source database to a target database by processing historical data and new data of the source database for conversion from a source format of the source database to a target format of the target database, wherein the source format and the target format are different formats, the processing comprising:
causing the historical data of the source database to be recorded as historical entries on a transaction log, wherein the historical data is already stored in the source database when the synchronization is commenced,
subsequently causing the new data of the source database to be recorded as new entries on the transaction log with the historical entries, wherein the new data is not present in the source database when the synchronization is commenced,
identifying a distinct attribute associated with an individual historical entry,
generating a message that reflects the individual historical entry, and
sending the message to another computing device for uploading into the target database in the target format,
wherein the transaction log is created after the historical data is already stored in the source database.

### Claim 2 (depends on 1)

The computer-readable storage medium of claim 1, wherein the causing the historical data to be recorded comprises recording the historical data on the transaction log in the same manner as the new data are recorded on the transaction log for the synchronization between the source database and the target database.

### Claim 3 (depends on 1)

The computer-readable storage medium of claim 1, wherein the acts further comprise:
at start-up of the synchronization, uploading the historical data to the target database as one or more data changes of the transaction log and uploading the new data to the target database as one or more other data changes of the transaction log.

### Claim 4 (depends on 1)

The computer-readable storage medium of claim 1, wherein the causing and the subsequently causing comprise generating views of the historical data and the new data from the source database and generating the transaction log from the views.

### Claim 5 (depends on 1)

The computer-readable storage medium of claim 1, wherein the identifying comprises generating the distinct attribute from the historical data.

### Claim 6 (depends on 1)

The computer-readable storage medium of claim 1, further comprising associating the distinct attribute with the message as metadata.

### Claim 7 (depends on 1)

The computer-readable storage medium of claim 1, wherein the identifying the distinct attribute comprises identifying a patient identifier.

### Claim 8 (depends on 1)

The computer-readable storage medium of claim 1, wherein the message includes a historical data record associated with the individual historical entry.

### Claim 9 (depends on 1)

The computer-readable storage medium of claim 1, wherein the message is in a markup language format.

### Claim 10 (depends on 1)

The computer-readable storage medium of claim 1, wherein the processing comprises utilizing context-neutral processing for conversion into the target format of the target database.

### Claim 11 (depends on 1)

The computer-readable storage medium of claim 1, wherein the processing is performed on a client side and the message is sent to a server side.

### Claim 12 (depends on 1)

The computer-readable storage medium of claim 1, the processing further comprising:
queuing the message for converting into the target format of the target database based upon the distinct attribute.

### Claim 13 (depends on 12)

The computer-readable storage medium of claim 12, wherein the queuing groups the converting for a set of messages that share the distinct attribute.

### Claim 14

At least one computer-readable storage medium having instructions stored thereon that, when executed by a computing device, cause the computing device to perform acts, the acts comprising:
receiving a first message that conveys a first entry from a transaction log of database entries, the database entries including new database entries and historical database entries;
receiving a second message that conveys a second entry from the transaction log of database entries;
creating a first metadata tag for the first message, the first metadata tag including a first distinct identifier for the first entry, wherein the first distinct identifier indicates that the first message belongs to a first processing job such that processing of the first message for uploading in a target database format is performed by the first processing job with a first group of messages that are also associated with the first distinct identifier; and
creating a second metadata tag for the second message, the second metadata tag including a second distinct identifier for the second entry, wherein the second distinct identifier indicates that the second message belongs to a second processing job such that processing of the second message for uploading in the target database format is performed by the second processing job with a second group of messages that are also associated with the second distinct identifier.

### Claim 15 (depends on 14)

The computer-readable storage medium of claim 14, wherein the first distinct identifier is associated with a first patient and the second distinct identifier is associated with a second patient.

### Claim 16 (depends on 14)

The computer-readable storage medium of claim 14
wherein the first processing job and the second processing job operate in parallel.

### Claim 17

A system, comprising:
a data acquisition and distribution tool configured to:
obtain a first message, wherein the first message relates to first changed data in a source database of records,
obtain a second message, wherein the second message relates to second changed data in the source database of records,
identify a first identifier associated with the first message and a second identifier associated with the second message,
attach the first identifier to the first message as first metadata and attach the second identifier to the second message as second metadata, and,
specify a first processing path from available parallel processing paths, wherein the first processing path is configured to convert the first changed data into a target format and upload the first converted data into a target database, the first processing path being specified based at least in part on the first identifier of the first metadata;
specify a second processing path from the available parallel processing paths, wherein the second processing path is configured to convert the second changed data into the target format and upload the second converted data into the target database, the second processing path being specified based at least in part on the second identifier of the second metadata; and
a computing device configured to execute the data acquisition and distribution tool.

### Claim 18 (depends on 17)

The system of claim 17, further comprising a view generation tool configured to generate views of historical entries and new entries of the source database, and a change tracking tool configured to generate a context-neutral transaction log from the views.

### Claim 19 (depends on 17)

The system of claim 17, further comprising a change capture tool configured to generate the first message from a context-neutral transaction log.

### Claim 20 (depends on 19)

The system of claim 19, wherein the data acquisition and distribution tool and the change capture tool both occur on the computing device.
