IP Library Granted Patent US 7,693,888
Granted Patent B2
US 7,693,888 · App. 11/125,546 · Granted Apr 6, 2010

Data synchronizer with failover facility

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,693,888
App. No.
11/125,546
Granted
Apr 6, 2010
Kind
B2
Abstract

A data management system with data stored in multiple disparate formats in synchronized stores, method of synchronizing the data and recovering from synchronization failures and program product therefor. Data changes in one data store are cached in a universal format in an active synchronizer and forwarded to a second store from the universal format cache. Standby synchronizers provide failover handling by identifying synchronization failures and self-selecting a replacement synchronizer to serve as the active synchronizer.

Claims (65)

1. A method of synchronizing data stored in multiple disparate formats, said method comprising the steps of:

a) instantiating a plurality of connectors, each instantiated connector being associated with a respective one of a plurality of stores, at least two of said stores storing a copy of data being synchronized in first and second formats, said first and second formats being disparate formats;

b) creating a universal data cache (UDC) caching data in a data format different than said first and second formats;

c) monitoring each said copy for changes, comprising one or more synchronizers monitoring a configuration file for changes;

d) identifying an active synchronizer including said universal data cache, said each copy being connected to said active synchronizer through a corresponding one of said instantiated connectors; and

e) passing changes from a first said copy through said UDC to a second said copy.

2. A method of synchronizing data as in claim 1 , wherein changes in said configuration file include addition and removal of ones to said plurality of stores, connectors being added and removed responsive to said changes in said configuration file.

3. A method of synchronizing data as in claim 2 , wherein said plurality of connectors are instantiated in step (a) responsive to said configuration file.

4. A method of synchronizing data as in claim 2 , wherein said active synchronizer instantiates said connectors in step (a) and in step (U creates said universal data cache responsive to said configuration file.

5. A method of synchronizing data as in claim 4 , wherein the step (a) of instantiating connectors comprises:

i) instantiating an In-Connector at a first store of said plurality of stores, said changes being passed to said In-Connector in said first format and from said In-Connector to said synchronizer in said data format; and

ii) instantiating an Out-Connector at second store of said plurality of stores, cached changes from said UDC being passed to said Out-Connector from said synchronizer in said data format and from said Out-Connector in said second format.

6. A method of synchronizing data as in claim 2 , wherein the step (c) of monitoring comprises:

i) setting a synchronization interval; and a plurality of synchronizers ii) monitoring at least one said copy for changes until the end of said synchronization interval; and

iii) checking whether a current active synchronizer has failed to complete a synchronization.

7. A method of synchronizing data in claim 6 , wherein if said current active synchronizer has failed to complete a synchronization in step (iii), a standby synchronizer is selected active.

8. A method of synchronizing data as in claim 1 , wherein the step (e) of passing changes comprises:

i) requesting a target store cookie from one of said at least two stores;

ii) retrieving changes through an In-Connector to said UDC from another of said at least two stores; and

iii) passing said changes from said UDC to said one.

9. A method of synchronizing data as in claim 1 , wherein identifying the active synchronizer in step (d) identifies said active synchronizer from a plurality of synchronizers, remaining ones of said plurality of synchronizers being standby synchronizers selectively becoming active responsive to a synchronization failure between a first store of said plurality of stores and a second store of said plurality of stores in step (e).

10. A method of synchronizing data as in claim 9 , wherein the step (e) of passing changes further comprises storing synchronization progress data from passing said changes during a synchronization, said changes being stored in a progress store.

11. A method of synchronizing data as in claim 10 , wherein the step (e) of passing changes further comprising the steps of:

i) reading synchronization progress information from a progress store;

ii) monitoring synchronization by said active synchronizer; and upon failure of said active synchronizer,

iii) self-selecting one from said standby synchronizers, said self-selected one being identified as said active synchronizer; and

iv) resuming synchronization of said plurality of stores.

12. A method of synchronizing data as in claim 11 , wherein the step (c) of monitoring comprises:

i) determining whether said active synchronizer is currently synchronizing; and if not,

ii) determining whether a period of time has lapsed exceeding a synchronization interval, said self-selected one being selected in step (d) responsive to finding said period of time has lapsed.

13. A method of synchronizing data as in claim 12 , wherein the step (iv) of resuming synchronization of said multiple stores comprises:

i) setting a replication in progress flag in said progress store;

ii) synchronizing each of said multiple stores; and

iii) setting said identified self-selected one as active synchronizer in said progress store.

14. A method of synchronizing data as in claim 9 , wherein the step (e) of passing changes further comprises serially synchronizing a plurality of copies, wherein after each copy is updated, an In-Connector is instantiated at the respective store and an Out-Connector is instantiated another store being updated, until all copies are updated.

15. A computer-readable medium having stored thereon a plurality of instructions, the plurality of instructions including instructions that, when executed by a processor, cause the processor to:

a) instantiate a plurality of connectors, each instantiated connector being associated with a respective one of a plurality of stores, at least two of said stores storing a copy of data being synchronized in first and second formats, said first and second formats being disparate formats;

b) create a universal data cache (UDC) caching data in a data format different than said first and second formats;

c) monitor each said copy for changes, comprising one or more synchronizers monitoring a configuration file for changes;

d) self-identify an active synchronizer including said universal data cache, said each copy being connected to said active synchronizer through a corresponding one of said instantiated connectors; and

e) pass changes from a first said copy through said UDC to a second said copy.

16. A computer-readable medium as in claim 15 , wherein changes in said configuration file include addition and removal of stores to said plurality of stores, said processor adding and removing connectors responsive to said changes in said configuration file.

17. A computer-readable medium as in claim 16 , wherein said processor instantiates said plurality of connectors in step (a) responsive to said configuration file.

18. A computer-readable medium as in claim 16 , wherein said processor creates said universal data cache in step (b) responsive to said configuration file.

19. A computer-readable medium as in claim 18 , wherein the step (e) of instantiating connectors changes causes the processor to:

i) instantiate an In-Connector at a first store of said plurality of stores, said changes being passed to said In-Connector in said first format and from said In-Connector to said synchronizer in said data format; and

ii) instantiate an Out-Connector at second store of said plurality of stores, cached changes from said UDC being passed to said Out-Connector from said synchronizer in said data format and from said Out-Connector in said second format.

20. A computer-readable medium as in claim 15 , wherein the step (e) of passing changes causes the processor to:

i) request a target store cookie from one of said at least two stores;

ii) retrieve changes through an In-Connector to said UDC from another of said at least two stores; and

iii) pass said changes from said UDC to said one of said at least two stores.

21. A computer-readable medium as in claim 15 , wherein identifying the active synchronizer in step (d) causes the processor to determine if another synchronizer is currently active from a plurality of synchronizers, said processor remaining a standby synchronizer and selectively becoming active responsive to a synchronization failure between a first store of said plurality of stores and a second store of said plurality of stores in step (e) for a currently active synchronizer.

22. A computer-readable medium as in claim 21 , wherein the step (e) of passing changes further causes the processor to store synchronization progress data from passing said changes during a synchronization, said changes being stored in a progress store.

23. A computer-readable medium as in claim 22 , wherein the step (e) of passing changes further causes the processor to:

i) read synchronization progress information from a progress store;

ii) monitor synchronization by said active synchronizer; and upon failure of said active synchronizer,

iii) self-select one from said standby synchronizers, said self-selected one being identified as said active synchronizer; and when selected as said active synchronizer

iv) resume synchronization of said plurality of stores.

24. A computer-readable medium as in claim 23 , wherein when another synchronizer is selected as said active synchronizer, the step (c) of monitoring causes the processor to:

i) determine whether said active synchronizer is currently synchronizing; and if not,

ii) determine whether a period of time has lapsed exceeding a synchronization interval, said self-selected one being selected in step (d) responsive to finding said period of time has lapsed.

25. A computer-readable medium as in claim 23 , wherein the step (iv) of resuming synchronization of said multiple stores causes the processor to:

i) set a replication in progress flag in said progress store;

ii) synchronize each of said multiple stores; and

iii) set said identified self-selected one as active synchronizer in said progress store.

Assignments (16)
RELEASE OF SECURITY INTEREST Recorded Jun 24, 2025
From: WILMINGTON SAVINGS FUND SOCIETY, FSB
To: MITEL (DELAWARE), INC.; MITEL COMMUNICATIONS, INC.; MITEL NETWORKS, INC.; MITEL NETWORKS CORPORATION
Reel/Frame 071712/0821 →
NOTICE OF SUCCCESSION OF AGENCY - 3L Recorded Jan 14, 2025
From: UBS AG, STAMFORD BRANCH, AS LEGAL SUCCESSOR TO CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: WILMINGTON SAVINGS FUND SOCIETY, FSB
Reel/Frame 070006/0268 →
NOTICE OF SUCCCESSION OF AGENCY - 2L Recorded Jan 14, 2025
From: UBS AG, STAMFORD BRANCH, AS LEGAL SUCCESSOR TO CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: WILMINGTON SAVINGS FUND SOCIETY, FSB
Reel/Frame 069896/0001 →
NOTICE OF SUCCCESSION OF AGENCY - PL Recorded Jan 14, 2025
From: UBS AG, STAMFORD BRANCH, AS LEGAL SUCCESSOR TO CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: WILMINGTON SAVINGS FUND SOCIETY, FSB
Reel/Frame 069895/0755 →
CHANGE OF NAME Recorded Oct 24, 2024
From: UNIFY PATENTE GMBH & CO. KG
To: UNIFY BETEILIGUNGSVERWALTUNG GMBH & CO. KG
Reel/Frame 069242/0312 →
SECURITY INTEREST Recorded Jan 5, 2024
From: UNIFY PATENTE GMBH & CO. KG
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 066197/0073 →
SECURITY INTEREST Recorded Jan 5, 2024
From: UNIFY PATENTE GMBH & CO. KG
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 066197/0299 →
SECURITY INTEREST Recorded Jan 5, 2024
From: UNIFY PATENTE GMBH & CO. KG
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 066197/0333 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2023
From: UNIFY INC.
To: UNIFY GMBH & CO. KG
Reel/Frame 065394/0737 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2023
From: UNIFY GMBH & CO. KG
To: UNIFY PATENTE GMBH & CO. KG
Reel/Frame 065394/0769 →
RELEASE OF SECURITY INTEREST Recorded Feb 1, 2016
From: WELLS FARGO TRUST CORPORATION LIMITED
To: UNIFY INC.
Reel/Frame 037661/0781 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jan 20, 2016
From: WELLS FARGO TRUST CORPORATION LIMITED, AS SECURITY AGENT
To: UNIFY INC. (F/K/A SIEMENS ENTERPRISE COMMUNICATIONS, INC.)
Reel/Frame 037564/0703 →
CHANGE OF NAME Recorded Nov 11, 2015
From: SIEMENS ENTERPRISE COMMUNICATIONS, INC.
To: UNIFY, INC.
Reel/Frame 037090/0909 →
GRANT OF SECURITY INTEREST IN U.S. PATENTS Recorded Nov 10, 2010
From: SIEMENS ENTERPRISE COMMUNICATIONS, INC.
To: WELLS FARGO TRUST CORPORATION LIMITED, AS SECURITY AGENT
Reel/Frame 025339/0904 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2010
From: SIEMENS COMMUNICATIONS, INC.
To: SIEMENS ENTERPRISE COMMUNICATIONS, INC.
Reel/Frame 024294/0040 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2005
From: URSCHELER, ROGER; PASTRO, RODRIGO; FIEREMANS, GEERT; JOSE, SAJEEVE
To: SIEMENS COMMUNICATIONS, INC.
Reel/Frame 016554/0160 →