DE60223453T2 - Verfahren und Vorrichtung zur Benutzung eines Synchronisationsschlüssels - Google Patents

Verfahren und Vorrichtung zur Benutzung eines Synchronisationsschlüssels Download PDF

Info

Publication number
DE60223453T2
DE60223453T2 DE60223453T DE60223453T DE60223453T2 DE 60223453 T2 DE60223453 T2 DE 60223453T2 DE 60223453 T DE60223453 T DE 60223453T DE 60223453 T DE60223453 T DE 60223453T DE 60223453 T2 DE60223453 T2 DE 60223453T2
Authority
DE
Germany
Prior art keywords
synchronization
sync
key
partner
successful
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.)
Expired - Lifetime
Application number
DE60223453T
Other languages
English (en)
Other versions
DE60223453D1 (de
Inventor
Edward Eric Redmond Thomas
Stephen D. Sammamish Flanagin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE60223453D1 publication Critical patent/DE60223453D1/de
Publication of DE60223453T2 publication Critical patent/DE60223453T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99948Application of database or data structure, e.g. distributed, multimedia, or image
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99955Archiving or backup

Description

  • Die vorliegende Erfindung bezieht sich im allgemeinen auf Computersoftware und insbesondere auf die Synchronisation von Daten.
  • Berechnungsvorrichtungen können Daten an mehr als einem Ort speichern. Wenn dieselben oder sich auf diese beziehende Informationen an zwei Orten gespeichert sind, besteht die Möglichkeit, dass sich die Daten an einem Ort (Speicher) ändern und dies am anderen Ort nicht tun. Es wurden Synchronisationsverfahren entwickelt, um die Änderungen zwischen unterschiedlichen Speichern zu verbreiten, so dass die Informationen in unterschiedlichen Speichern miteinander korrelieren.
  • Bei einem Verfahren werden während der Synchronisation Änderungen an den Daten in den unterschiedlichen Speichern gesammelt, verglichen und abgeglichen. Der Synchronisationsvorgang an sich beinhaltet die Ausführung von Änderungen ("Synchronisationsänderungen") an den Datenspeichern, um die Änderungen, die an anderen Speichern vorgenommen werden, zu "aktualisieren" oder zu verbreiten. Sämtliche der erforderlichen Änderungen für die Synchronisation der Speicher können während jedes Synchronisationsversuches möglicherweise nicht abgeschlossen werden. Eine Verbindung zwischen Speichern kann beispielsweise während des Vorgangs zerstört werden, wodurch verursacht wird, dass der Synchronisationsversuch unvollständig bleibt. Ein Speicher kann jedoch melden, dass die Synchronisation erfolgreich abgeschlossen ist, wenn tatsächlich die Synchronisation nicht erfolgreich war.
  • Bei einem weiteren Verfahren, werden Änderungen inkrementell zwischen Speichern mit Hilfe von Meldungen gesendet, dass die Änderungen erfolgen. Einige Anwendungen verwenden beide dieser Verfahren zusammen.
  • WO-A-97/04391 beschreibt ein Verfahren und eine Vorrichtung zum Verwalten eines Transaktions-Logs, das eine Sequenz von Transaktionen in einem Netzwerk von Computern repräsentiert, die verbunden werden können. Jede Transaktion enthält wenigstens eine Aktualisierung, die auf ein Objekt in einer Replik einer verteilten Zieldatenbank abzielt. Die Log-Datenbank enthält Objekte, die den Aktualisierungen und Transaktionen in festgelegten Abschnitten des Transaktions-Logs entsprechen. Dadurch ist eine Wiederherstellung vorheriger Versionen von Datenbankobjekten mit Hilfe des Log bereitgestellt. Eine Konsistenz-Verarbeitungseinrichtung bestimmt, ob sie Aktualisierungen versäumt hat, indem sie ein PTID (Prozessor-Transaktionskennzeichen) untersucht. Wurden Aktualisierungen versäumt, wird das PTID der letzten Transaktion, die ordnungsgemäß empfangen wurde, zur Konsistenz-Verteilungseinrichtung gesendet, die die Aktualisierungen ausgesendet hatte, die es daraufhin einrichtet, die fehlenden Aktualisierungen zu senden. Ob eine Synchronisation erfolgreich war, wird mit Hilfe von bestätigten Anfragen bestimmt, die Threads oder ähnliche Mechanismen verwenden, die zwischen den zu synchronisierenden Vorrichtungen ausgetauscht werden.
  • Per Cederqvist, "Version Management with CVS, for CVS 1.11.2" URL: www.cvshome.org/docs/manual/cvs.html beschreibt eine befehlsbasierte Versionsverwaltung von Dateien, insbesondere eine Versionssteuersoftware, um die Historie von Ursprungsdateien aufzuzeichnen.
  • Das Ziel der vorliegenden Erfindung besteht darin, ein Verfahren zum Synchronisieren von Daten zwischen einer die Synchronisation einleitenden Seite und einem Synchronisationspartner, der eine Synchronisationsanfrage zum Kennzeichnen einer letzten erfolgreichen Synchronisation verwendet, zum Verbessern der Aktualisierung des Kennzeichens der letzten erfolgreichen Synchronisation nach einer Synchronisationsanfrage wie auch ein entsprechendes computerlesbares Medium und System anzugeben.
  • Dieses Ziel wird durch den Gegenstand der unabhängigen Ansprüche erreicht.
  • Bevorzugte Ausführungsformen sind in den abhängigen Ansprüchen definiert.
  • Die vorliegende Erfindung bezieht sich auf ein System und ein Verfahren zum Synchronisieren von Datenspeichern. Bei jeder Synchronisationsaktualisierung versuchen die synchronisierenden Einheiten bis zu dem Zustand zum Zeitpunkt der Verarbeitung der Synchronisationsanfrage einander zu aktualisieren. Dieser Zeitpunkt oder Zustand wird als Synchronisations-Prüfpunkt ("Sync-Prüfpunkt") bezeichnet. Gemäß einem Aspekt der vorliegenden Erfindung wird jedem dieser Punkte ein eindeutiger Synchronisations-Schlüssel ("Sync-Key") gegeben, um den Prüfpunktzustand darzustellen.
  • Gemäß einem Aspekt der vorliegenden Erfindung sendet eine die Synchronisation einleitende Seite den Sync-Key, der in Erwiderung der letzten erfolgreichen Synchronisation empfangen wurde, zum Synchronisationspartner. Wenn der empfangende Partner einen gültigen Sync-Key vom Sender empfängt, antwortet der Empfänger auf die Anfrage des Clients. Andernfalls antwortet der Empfänger auf den Sender in geeigneter Weise. Beispielsweise kann der Empfänger auf den Sender antworten, indem der darauf hinweist, dass der Sync-Key nicht gültig ist.
  • Gemäß einem weiteren Aspekt der Erfindung ist der Sync-Key eine ganze Zahl, die bei Null beginnt und mit jedem Synchronisationsversuch erhöht wird, der erfolgreich abgeschlossen ist. Die die Synchronisation einleitende Seite (der Sender der Synchronisationsanfrage) bestimmt den Wert ihres Sync-Keys, der auf ihrem letzten Synchronisationsversuch basiert. Der Sync-Key wird lediglich bei erfolgreichem Empfang und Verarbeitung der letzten Synchronisationsantwort erhöht.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung kann eine die Synchronisation einleitende Seite auf einen Synchronisations-Prüfpunkt synchronisieren, vom letzten Prüfpunkt erneut synchronisieren oder von Grund auf eine vollständig neue Synchronisation initiieren. Ist beispielsweise N der Sync-Key-Wert von der letzten erfolgreichen Synchronisation, kann die die Synchronisation einleitende Seite einen neuen Sync-Key-Wert von N senden, um zu melden, dass sie die Synchronisationsantwort für die letzte Synchronisation empfangen hat und von diesem Prüfpunkt eine Synchronisation zum momentanen Zustand durchführen möchte. Sendet die die Synchronisation einleitende Seite eine Anfrage mit dem Sync-Key = N-1, bestimmt der Synchronisationspartner, dass die die Synchronisation einleitende Seite keine Antwort auf ihre letzte Synchronisationsanfrage empfangen hat, oder wünscht es andernfalls, eine erneute Synchronisation vom letzten erfolgreich verarbeiteten Synchronisationszustand auszuführen.
  • 1 ist ein Funktionsblockschaltbild einer Berechnungsvorrichtung, die dazu eingerichtet ist, eine Ausführungsform der Erfindung einzusetzen;
  • 2 zeigt eine mobile Berechnungsvorrichtung; die bei einer beispielhaften Ausführungsform der vorliegenden Erfindung verwendet werden kann;
  • 3 ist ein Funktionsblockschaltbild eines beispielhaften Synchronisationssystems, wie es mit Hilfe der Berechnungsvorrichtung, die in 1 gezeigt ist, und der mobilen Berechnungsvorrichtung eingesetzt wird, die in 2 dargestellt ist;
  • 4 ist eine Tabelle, die beispielhafte Synchronisationsschritte zeigt;
  • 5 ist ein Übersichts-Flussdiagramm, das die Synchronisation darstellt;
  • 6 zeigt einen logischen Fluss zur Vorbereitung einer Synchronisationsanfrage gemäß einer Ausführungsform der Erfindung;
  • 7 zeigt einen logischen Fluss zur Verarbeitung eines empfangenen Sync-Keys;
  • 8 zeigt einen logischen Fluss für den Fall, dass ein Synchronisationsschlüssel, der sich auf den Client bezieht, nicht gefunden wird; und
  • 9 zeigt einen logischen Fluss zum Ausführen einer Synchronisation auf der Basis von Sync-Keys.
  • Die vorliegende Erfindung gibt ein Verfahren und eine System zum Synchronisieren von Daten an. Kurz gesagt wird ein Synchronisationsschlüssel, der einen Synchronisationsprüfpunkt kennzeichnet, von einer die Synchronisation einleitenden Seite oder einem Synchronisationspartner gesendet. Wenn der Synchronisationsschlüssel, der vom Synchronisationspartner empfangen wird, gültig ist, gibt der Partner Synchronisationsdaten an die die Synchronisation einleitende Seite zurück, um die Speicher zwischen der einleitenden Seite und dem Partner zu synchronisieren.
  • Unter Bezugnahme auf 1 enthält ein beispielhaftes System zur Anwendung der vorliegenden Erfindung eine Berechnungsvorrichtung, wie etwa die Berechnungsvorrichtung 100. Bei einer grundlegenden Konfiguration enthält die Berechnungsvorrichtung 100 normalerweise eine Verarbeitungseinheit 102 und einen Systemspeicher 104. In Abhängigkeit der exakten Konfiguration und des Typs der Berechnungsvorrichtung kann der Systemspeicher 104 flüchtig (wie etwa ein RAM), nicht flüchtig (wie etwa ein ROM, ein Flash-Speicher und dergleichen) oder eine Kombination aus beiden sein. Der Systemspeicher 104 enthält normalerweise ein Betriebssystem 105, ein oder mehrere Programmmodule 106 und kann Programmdaten 107 enthalten. Die grundlegende Konfiguration ist in 1 durch jene Komponenten dargestellt, die sich innerhalb der Strichlinie 108 befinden.
  • Die Berechungsvorrichtung 100 kann zudem zusätzliche Merkmale oder Funktionalitäten haben. Beispielsweise kann die Berechnungsvorrichtung 100 zusätzliche Datenspeichervorrichtungen (entnehmbar und/oder nicht entnehmbar), wie etwa magnetische Platten, optische Platten oder ein Band, enthalten. Derartiger zusätzlicher Speicher ist in 1 durch einen entnehmbaren Speicher 109 und einen nicht entnehmbaren Speicher 110 dargestellt. Computerspeichermedien können flüchtige und nicht flüchtige, entnehmbare und nicht entnehmbare Medien beinhalten, die durch ein beliebiges Verfahren oder eine Technologie zum Speichern von Informationen, wie etwa computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten, eingesetzt werden.
  • Der Systemspeicher 104, der entnehmbare Speicher 109 und der nicht entnehmbare Speicher 110 sind allesamt Beispiele von Computerspeichermedien. Computerspeichermedien beinhalten, ohne darauf beschränkt zu sein, einen RAM, einen ROM, einen EEPROM, einen Flash-Speicher oder eine andere Speichertechnologie, ein CD-ROM, eine DVD oder einen anderen optischen Speicher, Magnetkassetten, ein Magnetband, einen Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder ein beliebiges anderes Medium, das verwendet werden kann, um die gewünschten Informationen zu speichern, und auf das durch die Berechnungsvorrichtung 100 zugegriffen werden kann. Ein beliebiges dieser Computerspeichermedien kann Teil der Vorrichtung 100 sein. Die Berechnungsvorrichtung 100 kann zudem über Eingabevorrichtungen 112, wie etwa eine Tastatur, eine Maus, einen Stift, eine Spracheingabevorrichtung, eine Tasteingabevorrichtung und dergleichen verfügen. Ausgabevorrichtungen 114, wie etwa eine Anzeige, Lautsprecher, ein Drucker oder dergleichen, können ebenfalls enthalten sein. Alle diese Vorrichtungen sind nach dem Stand der Technik bekannt und müssen hier nicht in der gesamten Länge erläutert werden.
  • Die Berechnungsvorrichtung 100 enthält zudem eine Kommunikationsverbindung(en) 116, die es der Vorrichtung gestattet (gestatten), mit anderen Berechnungsvorrichtungen 118 etwa über ein Netzwerk zu kommunizieren. Eine Kommunikationsverbindung(en) 116 ist (sind) ein Beispiel von Kommunikationsmedien. Kommunikationsmedien enthalten normalerweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten in einem modulierten Datensignal, wie etwa einer Trägerwelle oder einem anderen Transportmechanismus, und beinhalten beliebige Informationszustellungsmedien. Der Begriff "moduliertes Datensignal" bezeichnet ein Signal, bei dem eine oder mehrere seiner Eigenschaften derart eingestellt oder geändert werden, dass Informationen im Signal codiert werden. Beispielsweise beinhalten, ohne dabei einschränkend zu sein, Kommunikationsmedien drahtgebundene Medien, wie etwa ein drahtgebundenes Netzwerk oder eine direkt verdrahtete Verbindung, sowie drahtlose Medien, wie etwa Hochfrequenz-, Infrarot- oder andere Drahtlosmedien. Der Begriff computerlesbare Medien, wie er hier verwendet wird, beinhaltet sowohl Speichermedien als auch Kommunikationsmedien.
  • 2 zeigt eine mobile Berechnungsvorrichtung, die bei einer beispielhaften Ausführungsform der vorliegenden Erfindung verwendet werden kann. Unter Bezugnahme auf. 2 enthält ein beispielhaftes System zur Ausführung der Erfindung eine mobile Berechnungsvorrichtung, wie etwa die mobile Berechnungsvorrichtung 200. Die mobile Berechnungsvorrichtung 200 verfügt über einen Prozessor 260, einen Speicher 262, eine Anzeige 228 und ein Tastenfeld 232. Der Speicher 262 enthält im allgemeinen sowohl einen flüchtigen Speicher (z. B. einen RAM) als auch einen nicht flüchtigen Speicher (z. B. ROM, Flash-Speicher oder dergleichen). Die mobile Berechnungsvorrichtung 200 enthält ein Betriebssystem 264, wie etwa das Windows CE Betriebssystem von der Microsoft Corporation, oder ein anderes Betriebssystem, das sich im Speicher 262 befindet und auf dem Prozessor 260 ausgeführt wird. Das Tastenfeld kann ein numerisches Drucktasten-Wählfeld (wie etwa auf einem typischen Telefon) oder ein Mehrtastenfeld (wie etwa eine herkömmliche Tastatur) sein. Die Anzeige 228 kann eine Flüssigkristallanzeige oder ein beliebiger anderer Typ einer Anzeige sein, die gemeinhin in mobilen Berechnungsvorrichtungen verwendet wird. Die Anzeige 228 kann beruhrungsempfindlich sein und würde dann ebenfalls als Eingabevorrichtung dienen.
  • Ein oder mehrere Applikationsprogramme 266 werden in den Speicher 262 geladen und laufen unter dem Betriebssystem 264. Beispiele von Applikationsprogrammen beinhalten Telefonwählprogramme, E-Mail-Programme, Terminplanprogramme, PIM-Programme (PIM – Persönliche Informationsverwaltung), Textverarbeitungsprogramme, Tabellenkalkulationsprogramme, Internetbrowser-Programme und dergleichen. Die mobile Berechnungsvorrichtung 200 enthält zudem einen nicht flüchtigen Speicher 268 innerhalb des Speichers 262. Der nicht flüchtige Speicher 268 kann verwendet werden, um beständige Informationen zu speichern, die nicht verlorengehen sollten, wenn die mobile Berechnungsvorrichtung 200 abgeschaltet wird. Die Applikationen 266 können Informationen im Speicher 268 verwenden und speichern, wie etwa E-Mail oder andere Nachrichten, die von einer E-Mail-Applikation verwendet werden, Kontaktinformationen, die von einer PIM verwendet werden, Verabredungsinformationen, die von einem Terminplanprogramm verwendet werden, Dokumente, die von einer Textverarbeitungs-Applikation verwendet werden, und dergleichen. Eine Synchronisations-Applikation befindet sich ebenfalls in der mobilen Berechnungsvorrichtung 200 und ist so programmiert, dass sie mit einer entsprechenden Synchronisations-Applikation interagiert, die sich auf einem Host- oder Server-Computer befindet, um Informationen, die im Speicher 268 gespeichert sind, mit entsprechenden Informationen synchron zu halten, die auf dem Host-Computer gespeichert sind.
  • Die mobile Berechungsvorrichtung 200 hat eine Stromversorgung 270, die in Gestalt einer oder mehrerer Batterien ausgeführt sein kann. Die Stromversorgung 270 kann weiterhin eine externe Stromquelle, wie etwa einen Wechselstromadapter, oder eine mit Strom versorgte Ladestation beinhalten, die die Batterien ergänzt oder neu auflädt.
  • Die mobile Berechnungsvorrichtung 200 ist mit zwei Typen externer Meldemechanismen ausgestattet: einer LED 240 und einer Audioschnittstelle 274. Diese Vorrichtungen können direkt mit der Stromversorgung 270 verbunden sein, so dass bei deren Aktivierung diese für eine Dauer eingeschaltet bleiben, die durch den Meldemechanismus zugeteilt ist, auch wenn der Prozessor 260 und andere Komponenten abschalten könnten, um Batterieleistung zu sparen. Die LED 240 kann derart programmiert sein, dass sie unbegrenzt eingeschaltet bleibt, bis der Benutzer eine Tätigkeit ausführt, um den eingeschalteten Zustand der Vorrichtung zu kennzeichnen. Die Audio-Schnittstelle 274 wird verwendet, um hörbare Signale zu erzeugen und hörbare Signale vom Benutzer zu empfangen. Beispielsweise kann die Audio-Schnittstelle 274 mit einem Lautsprecher verbunden sein, um eine hörbare Ausgabe zu erzeugen, und mit einem Mikrofon, um eine hörbare Eingabe zu empfangen, um so etwa eine Telefonunterhaltung zu ermöglichen.
  • Die mobile Berechnungsvorrichtung 200 enthält zudem eine Funk-Schnittstellenebene 272, die die Funktion des Sendens und Empfangens von Kommunikationen, wie etwa Funk-Kommunikationen, ausführt. Die Funk-Schnittstellenebene 272 ermöglicht eine drahtlose Verbindung zwischen der Berechungsvorrichtung 200 und der Außenwelt über einen Kommunikationsträger oder einen Dienstanbieter. Sendungen zu und von der Funk-Schnittstellenebene 272 werden unter Steuerung des Betriebssystems 264 ausgeführt. Mit anderen Worten können Kommunikationen, die von der Funk-Schnittstellenebene 272 empfangen werden, auf Applikationsprogramme 266 über das Betriebssystem 264 verteilt werden, und umgekehrt.
  • 3 ist ein Funktionsblockschaltbild, das allgemein eine Ausführungsform für ein Synchronisationssystem 300 zur Synchronisation zwischen einer festen Berechungsvorrichtung, wie etwa einem Informationsserver 310, und einer mobilen Vorrichtung 320 gemäß der vorliegenden Erfindung darstellt. Bei dieser Anwendung ist der Informationsserver 310 eine Berechnungsvorrichtung, die etwa jene, die oben in Verbindung mit 1 beschrieben wurde, und ist die mobile Vorrichtung 320 eine mobile Berechungsvorrichtung, wie etwa jene, die oben in Verbindung mit 2 beschrieben wurde. Eine Synchronisationsapplikation 342 führt den Synchronisationsvorgang zwischen dem Informations-Server 310 und der mobilen Vorrichtung 320 aus. Bei der dargestellten Ausführungsform befindet sich die Synchronisationsapplikation 342 auf einem Synchronisations-Server 340, der eine Berechnungsvorrichtung ist, wie sie oben in Verbindung mit 1 beschrieben wurde. Normalerweise befindet sich eine Firewall (nicht gezeigt) zwischen dem Synchronisations-Server 340 und dem Informations-Server 310, um Daten zu schützen, die für den Informations-Server 310 zugänglich sind. Bei einer weiteren Ausführungsform kann sich die Synchronisations-Applikation 342 auf dem Informations-Server 310 befinden.
  • Die mobile Vorrichtung 320 halt mobile Daten 322 lokal in ihrem Speicher 268 (gezeigt in 2). Wie es zuvor erwähnt wurde, können die mobilen Daten E-Mail oder andere Nachrichten, die von einer E-Mail-Applikation verwendet werden, Kontaktinformationen, die von einer PIM verwendet werden, Verabredungsinformationen, die von einem Terminplanprogramm verwendet werden, und dergleichen beinhalten. Die mobile Vorrichtung 320 kann die mobilen Daten 322 zu jedem beliebigen Zeitpunkt ändern. Sobald die mobilen Daten 322 geändert sind, haben die Server-Daten 312, auf die vom Informationsserver 310 zugegriffen werden kann, keine korrelierenden Informationen, bis eine erfolgreiche Synchronisation erfolgt. In ähnlicher Weise kann der Informations-Server 310 die Server-Daten 312 ändern, wie etwa durch eine beliebige Anzahl von vernetzten PCs (nicht gezeigt), die mit dem Informations-Server 310 verbunden sind. Wiederum gilt, dass, sobald die Server-Daten 312 geändert werden, die mobilen. Daten 322 und die Server-Daten 312 nicht länger korrelieren (d. h. Daten sind nicht synchronisiert). Damit die mobilen Daten 322 und die Server-Daten 312 korrelieren (d. h. synchronisiert sind), initiiert die mobile Vorrichtung 320 eine Synchronisations-Session. Die Synchronisations-Applikation 342 sichert Informationen, die die Synchronisations-Sessions betreffen, in einer Synchronisations-Zustandstabelle 344.
  • Kurz gesagt werden bei der Synchronisations-Session Synchronisationsdaten zwischen der mobilen Vorrichtung 320 und dem Informationsserver 310 mit Hilfe der Drahtlostechnologie übertragen. Die Synchronisationsdaten beinhalten Ladeverzeichnisse 324, die von der mobilen Vorrichtung 320 gesendet werden, sowie inkrementelle Aktualisierungen 326, die von der Synchronisationsapplikation 342 zur mobilen Vorrichtung gesendet werden. Die inkrementellen Aktualisierungen legen Änderungen an den Serverdaten 312 seit der letzten erfolgreichen Synchronisation fest.
  • 4 zeigt beispielhafte Synchronisationsschritte. Bei Schritt 1 bereitet eine die Synchronisation einleitende Seite, wie etwa ein Client, einen anfänglichen Sync-Key vor und sendet den Sync-Key zu einem Synchronisationspartner, wie etwa einem Synchronisationsserver. Der Server verarbeitet den empfangenen Sync-Key bei Schritt 2. Bei Schritt 3 gibt der Server die Synchronisationsdaten an den Client zurück, wobei an diesem Punkt der Client die Synchronisationsdaten empfängt. Nach einer erfolgreichen Synchronisation aktualisiert der Client den Synchronisationsschlüssel, um die erfolgreiche Synchronisation wiederzuspiegeln. Zu einem bestimmten Zeitpunkt nach der anfänglichen Synchronisation sendet der Client normalerweise eine Synchronisationsanfrage zum Server, um eine Synchronisation zu einem neuen Synchronisations-Prüfpunkt durchzuführen. Mit anderen Worten fragt der Client an, sämtliche Daten zu empfangen, die seit der letzten Synchronisation zwischen dem Client und dem Server nicht synchronisiert wurden.
  • Die Schritte 4 bis 8 zeigen zwei unterschiedliche Synchronisationsversuche. Bei Schritt 4 sendet der Client den letzten erfolgreichen Sync-Key, der dem Server meldet, Änderungen in den Daten seit der letzten erfolgreichen Synchronisation zu senden. Der Server empfängt die Anfrage (Schritt 4), verarbeitet die Anfrage (Schritt 5) und gibt die geänderten Daten zum Client zurück. Bei diesem speziellen Beispiel empfängt der Client sämtliche Aktualisierungen, die nach der anfänglichen Synchronisation zwischen dem Client und dem Server aufgetreten sind. Der Client empfängt die Daten und aktualisiert seinen Datenspeicher.
  • In ähnlicher Weise fragt der Client in- Schritt 7 eine Synchronisation an, um Aktualisierungen seit der letzten erfolgreichen Synchronisation einzuschließen. Bei diesem speziellen Beispiel wurde die letzte erfolgreiche Synchronisation bei Schritt 4 angefragt. Bei Schritt 8 verarbeitet der Server die Synchronisationsanfrage vom Client. Bei diesem speziellen Beispiel sendet der Server die Aktualisierungen zum Client, wobei jedoch nicht sämtliche Daten den Client erreichen. Der Server geht davon aus, dass der Client synchronisiert wurde, und aktualisiert seinen Synchro nisationsschlüssel, was dazu führt, dass der Client und der Server denselben gültigen Synchronisationsschlüssel haben.
  • Die Schritte 9 und 10 zeigen einen Client, der eine Synchronisation zu einem Prüfpunkt anfragt, von dem der Server ausgeht, dass der Client bereits synchronisiert wurde. Bei Schritt 9 fragt der Client eine Synchronisation von demselben Zustand ab, wie er bei Schritt 7 angefragt wurde. Der Server empfängt die Anfrage (Schritt 9) und erkennt, dass die letzte Synchronisationsanfrage für den Client nicht erfolgreich war. Der Server gibt somit die aktualisierten Einträge zum Client vom Zeitpunkt des Synchronisations-Prüfpunktes entsprechend dem Synchronisations-Schlüssels zurück, der vom Client gesendet wurde.
  • 5 ist ein Übersichtsflussdiagramm, das die Synchronisation darstellt. In einem Startblock wird ein Synchronisationsvorgang initiiert. Die Synchronisation kann durch einen beliebigen der Synchronisationspartner initiiert werden. Gemäß einer Ausführungsform der vorliegenden Erfindung, wünscht ein Client eine Synchronisation mit einem Server. Bei Block 510 bereitet der Client oder die die Synchronisation einleitende Seite eine Synchronisation mit dem Synchronisationspartner ("Server") vor. (Siehe 6 und die zugehörige Beschreibung). Eine erfolgreiche Synchronisation bringt den Zustand der Datenspeicher auf dem Client und dem Server auf denselben Zustand an einem speziellen Synchronisations-Prüfpunkt. Durch Fortschreiten zu einem Block 520 wird die Synchronisation ausgeführt. Im-allgemeinen sendet der Server Daten zum Client, der sämtliche Aktualisierungen vom angefragten Synchronisationszustand zum momentanen Zustand des Servers beinhaltet. Die Daten können zum Client mit Hilfe zahlreicher unterschiedlicher Verfahren gesendet werden, wie es dem Fachmann hinlänglich bekannt ist. Bei einem Entscheidungsblock 530 erfolgt eine Bestimmung, ob die Synchronisation erfolgreich ist. Eine erfolgreiche Synchronisation für einen Client bedeutet, dass die Synchronisationsdaten, die vom Client empfangen werden, in geeigneter Weise verarbeitet wurden. Eine erfolgreiche Synchronisation für einen Server bedeutet, dass der Server davon ausgeht, dass sämtliche Synchronisationsdaten zum Client gesendet worden sind. Ist die Synchronisation nicht erfolgreich, endet der logische Fluss. Ist die Synchronisation erfolgreich, bewegt sich der logische Fluss zu einem Block 540, an welchem Punkt der Sync-Key, der im Client und im Server gespeichert ist, aktualisiert wird, um die erfolgreiche Synchronisation widerzuspiegeln.
  • 6 zeigt einen logischen Fluss zur Vorbereitung der Synchronisation gemäß einer Ausführungsform der Erfindung. Beginnend bei Block 610 bereitet ein Client ein Synchronisations-Ladeverzeichnis vor. Gemäß einer Ausführungsform der Erfindung enthält ein Synchronisations-Ladeverzeichnis kennzeichnende Informationen über den Client und einen Synchronisations-Schlüssel. Der Synchronisations-Schlüssel enthält Informationen, die kennzeichnen, von welchem Prüfpunkt aus der Client mit dem Server synchronisieren möchte. Der Synchronisations-Schlüssel kann als Synchronisations-Versuchskennzeichen erachtet werden. Gemäß einer Ausführungsform der Erfindung ist der Sync-Key eine ganze Zahl, die bei einem Wert von minus eins beginnt und mit jeder Synchronisation erhöht wird, die Erfolgreich ist. Es können zahlreiche andere Typen von Synchronisations-Schlüsseln verwendet werden. Beispielsweise kann der Sync-Key ein Bit (Bits), ein Float, ein Zeichen und dergleichen sein. Zu Block 620 fortschreitend, sendet der Client oder die die Synchronisation einleitende Seite das Ladeverzeichnis, das einen Sync-Key beinhaltet, zu einem Synchronisationspartner oder Server. Der Synchronisations-Server empfängt den Sync-Key und sendet dem Client die angefragten Synchronisationsdaten oder eine Fehlernachricht in Abhängigkeit des Ladeverzeichnisses und des Sync-Keys, der vom Client empfangen wird (Block 630) (Siehe 7 und die zugehörige Beschreibung). Zu Block 640 fortschreitend, empfängt der Client die Daten und verarbeitet die Daten. Der logische Fluss endet daraufhin.
  • 7 zeigt einen logischen Fluss zur Verarbeitung eines empfangenen Sync-Keys von einem Synchronisationspartner. Beginnend bei Block 710, bestimmt ein Synchronisations-Server den letzten Synchronisations-Schlüssel, der dem Client zugeordnet ist, der die Synchronisation anfragt. Gemäß einer Ausführungsform der vorliegenden Erfindung sucht der Synchronisations-Server nach dem Synchronisations-Schlüssel, der dem anfragenden Synchronisations-Client zugeordnet ist. Der Entscheidungsblock 720 bestimmt, ob der Synchronisations-Schlüssel für den Client gefunden ist. Wird ein Synchronisations-Schlüssel für den Client nicht gefunden, wird der Client mit keinem Speicher einer vorherigen Synchronisation synchronisiert (Block 730) (siehe 8 und zugehörige Beschreibung). Wird ein Synchronisations-Schlüssel, der sich auf den Client bezieht, gefunden, dann schreitet der Fluss zu einem Block 740 fort, bei welchem Punkt der Server den gefundenen Synchronisations-Schlüssel mit dem Synchronisations-Schlüssel vergleicht, der vom Client gesendet wird (Siehe 9 und zugehörige Beschreibung), und antwortet in entsprechender Weise.
  • 8 zeigt einen logischen Fluss für den Fall, dass ein Synchronisations-Schlüssel, der sich auf den Client bezieht, nicht gefunden wird. Beginnend bei einem Entscheidungsblock 810, erfolgt eine Bestimmung, ob dies die erste oder anfängliche Synchronisation zwischen dem Client und dem Server ist. Gemäß einer Ausführungsform der Erfindung wird eine anfängliche Synchronisation durch einen gesendeten Sync-Key-Wert von Null angezeigt. Ist dies eine anfängliche Synchronisation, schreitet der logische Fluss zu einem Block 820 fort, bei dem eine anfängliche Synchronisation ausgeführt wird. Eine anfängliche Synchronisation aktualisiert den Client mit sämtlichen der anfänglichen Informationen, die auf dem Server für den Client gespeichert sind. Mit anderen Worten wird eine Synchronisation von Grund auf begonnen. Ist dies keine anfängliche Synchronisation, schreitet der logische Fluss zu einem Block 830 fort, bei dem eine Fehlernachricht zurückgegeben wird. Eine Fehlernachricht zeigt an, dass ein Synchronisations-Schlüssel auf dem Server existieren sollte, dass jedoch ein gewisser Fehler bewirkt hat, dass die Synchronisations-Informationen für den Client verloren sind. Der logische Fluss endet daraufhin.
  • 9 zeigt einen logischen Fluss für eine Synchronisation, wenn ein Synchronisations-Schlüssel, der sich auf den Client bezieht, gefunden wird. Beginnend mit einem Startblock und fortschreitend zu einem Entscheidungsblock 910, erfolgt eine Bestimmung, ob eine Neusynchronisation angefragt wird. Gemäß einer Ausführungsform der vorliegenden Erfindung wird eine Neusynchronisation angefragt, wenn der Wert des Sync-Keys Null ist. Fragt der Client eine Neusynchronisation an, bewegt sich der logische Fluss zu Block 915. Bei Block 915 wird eine Synchronisation von einem Ausgangszustand ausgeführt. Eine Neusynchronisationsanfrage kann in zahlreichen unterschiedlichen Situationen auftreten. Wenn beispielsweise der Speicher des Clients gelöscht wurde oder der Client durch eine andere ähnliche Vorrichtung ersetzt wurde, wie etwa wenn eine Vorrichtung aktualisiert wird. Gemäß einer Ausführungsform der Erfindung führen der Client und der Server eine Neusynchronisation aus, als ob die Anfrage eine anfängliche Synchronisationsanfrage war. Anschließend endet der logische Fluss.
  • Wird eine Neusynchronisation nicht angefragt, bewegt sich der logische Fluss zu einem Entscheidungsblock 920. Bei einem Entscheidungsblock 920 erfolgt eine Bestimmung, ob dies die nächste erwartete Synchronisationsanfrage ist. Eine erwartete Synchronisationsanfrage tritt beispielsweise auf, wenn der Server einen Synchronisations-Schlüssel empfängt, der kennzeichnet, dass die letzte Synchronisation erfolgreich ausgeführt wurde. Gemäß einer speziellen Ausführungsform der Erfindung hat der erwartete Synchronisations-Schlüssel einen Wert des Synchronisations-Schlüssel des Servers. Wenn der Sync-Key des Servers beispielsweise den Wert 2 hat, dann wird der empfangene Wert des gesendeten Sync-Keys ebenfalls 2 sein. Gemäß einer weiteren Ausführungsform hat der erwartete Synchronisations-Schlüssel einen Wert des Synchronisations-Schlüssels des Servers für den Client plus 1. Hat der Sync-Key des Servers beispielsweise einen Wert 2, dann wäre der empfangene Wert des gesendeten Sync-Keys 3. Ist dies die nächste Synchronisationsanfrage, schreitet der logische Fluss zu Block 925 fort, bei dem die nächste Synchronisation ausgeführt wird. Der Server gibt Daten vom Punkt des letzten Synchronisations-Prüfpunktes zum momentanen Prüfpunkt zurück. Daraufhin endet der logische Fluss.
  • Bezieht sich die Anfrage nicht auf die nächste Synchronisation, schreitet der logische Fluss zu einem Entscheidungsblock 930 fort. Der Entscheidungsblock 930 bestimmt, ob die letzte Synchronisation erfolgreich war. War die Synchronisation nicht erfolgreich, bewegt sich der logische Fluss zu einem Block 935. Gemäß einer Ausführungsform der vorliegenden Erfindung wäre der empfangene Sync-Key-Wert geringer als der Sync-Key des Servers. In dieser Situation geht der Server davon aus, dass eine erfolgreiche Synchronisation für die letzte Synchronisationsanfrage vom Client erfolgte, der Client jedoch nicht erfolgreich bis zum letzten Prüfpunkt synchronisierte. Diese Situation kann unter zahlreichen unterschiedlichen Szenarios auftreten. Beispielsweise können Daten, die vom Server gesendet wurden, niemals den Client erreicht haben, oder der Client kann die Daten nicht ordnungsgemäß verarbeitet haben. Bei einem Block 935 wird der Client auf den momentanen Zustand des Servers synchronisiert, wobei die Informationen auf dem Server vom Prüfpunkt der letzten erfolgreichen Synchronisation enthalten sind, wie es durch den Client angezeigt ist.
  • Wenn die letzte erfolgreiche Synchronisation erfolgreich war, schreitet der logische Fluss zu einem Entscheidungsblock 940 fort, der bestimmt, ob der gesendete Synchronisations-Schlüssel nicht aktuell ist. Ist gemäß einer Ausführungsform der vorliegenden Erfindung der Synchronisations-Schlüssel mehr als ein angefragter Synchronisationszustand vom gefundenen Synchronisations-Schlüssel des Servers entfernt, so ist der Synchronisations-Schlüssel nicht aktuell. Hat der gesendete Sync-Key beispielsweise einen Wert 1 und hat der Server einen Sync-Key für den Client mit einem Wert von 5, dann ist der Sync-Key nicht aktuell. Wenn in ähnlicher Weise der empfangene Sync-Key einen Wert von 4 hat, und der Server einen Sync-Key-Wert von 2 hat, so ist der Sync-Key nicht aktuell. Ist der Synchronisations-Schlüssel nicht aktuell, schreitet der logische Fluss zu einem Block 945 fort. Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein Fehler zum Client zurückgesendet, der kennzeichnet, dass ein ungeeigneter Synchronisations-Schlüssel empfangen wurde (Block 945). Gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gibt der Server Synchronisationsdaten vom Synchronisations-Prüfpunkt zurück, wie es durch den gesendeten Sync-Key angezeigt ist. Es wird beispielsweise angenommen, dass fünf Synchronisationen erfolgreich zwischen dem Client und dem Server aufgetreten sind. Bei diesem Beispiel kann der Server sämtliche Synchronisations-Prüfpunkte speichern und von einem beliebigen der fünf Prüfpunkte synchronisieren. Fragt der Client an, mit dem Server von Zustand drei zu synchronisieren, wird der Server die Daten zum Client-Prüfpunkt drei zum momentanen Zustand zum Client senden. Andernfalls endet der logische Fluss.
  • Die obige Beschreibung, die Beispiele und die Daten geben eine umfassende Beschreibung der Herstellung und Verwendung des Aufbaus der Erfindung an. Da zahlreiche Ausführungsformen der Erfindung gemacht können, ohne vom Geltungsbereich der Erfindung abzuweichen, ist die Erfindung in den beiliegenden Ansprüchen definiert.

Claims (9)

  1. Verfahren zum Synchronisieren von Daten zwischen einer Synchronisation einleitenden Seite (320) und einem Synchronisations-Partner (340, 310), wobei das Verfahren umfasst: Senden eines Sync-Keys durch die Synchronisation einleitenden Seite (320) zu dem Synchronisations-Partner (340, 310), wobei der Sync-Key einen Synchronisations-Status spezifiziert, der die letzte erfolgreiche Synchronisation zwischen der Synchronisation einleitenden Seite und dem Synchronisations-Partner darstellt und der Synchronisations-Status ein Synchronisations-Status ist, von dem ausgehend die Synchronisation einleitende Seite synchronisieren möchte, und der Sync-Key einen Wert umfasst, der mit jeder erfolgreichen Synchronisation aktualisiert wird; Empfangen des Sync-Keys von der Synchronisation einleitenden Seite (320) durch den Synchronisations-Partner (340, 310); wobei der Synchronisations-Partner (340, 310) aus dem empfangenen Sync-Key einen gewünschten Synchronisations-Status, von dem ausgehend die Synchronisation einleitende Seite synchronisieren möchte, auf Basis des durch den empfangenden Sync-Keys spezifizierten Synchronisations-Status bestimmt, und das Bestimmen umfasst: Bestimmen eines Wertes des empfangenen Sync-Keys; Bestimmen (710) eines zuvor gespeicherten Wertes eines Sync-Keys des Synchronisations-Partners, der sich auf den empfangenen Sync-Key bezieht; und Bestimmen des gewünschten Synchronisations-Statuses durch Vergleichen (740) des bestimmten Wertes des Sync-Keys des Synchronisations-Partners mit dem Wert des empfangenden Sync-Keys; Unternehmen (520) eines Versuchs der Synchronisation mit der Synchronisation einleitenden Seite (320) von dem bestimmten gewünschten Synchronisations-Status ausgehend auf einen aktuellen Zustand, wobei der Versuch der Synchronisation das Senden von Synchronisationsdaten zu der Synchronisation einleitenden Seite (320) umfasst und die Synchronisations-Daten Änderungen in den zu synchronisierenden Daten umfassen, die seit der letzten erfolgreichen Synchronisation eingetreten sind, wie sie durch den bestimmten gewünschten Synchronisations-Status spezifiziert werden; und Bestimmen, ob die Synchronisation erfolgreich war, das umfasst: Bestimmen (530), ob die versuchte Synchronisation erfolgreich war, durch den Synchronisations-Partner (340, 310), wobei eine Synchronisation für den Synchronisations-Partner erfolgreich ist, wenn der Synchronisations-Partner alle Synchronisations-Daten zu der Synchronisation einleitenden Seite gesendet hat; wenn die Synchronisation für den Synchronisations-Partner erfolgreich war, Aktualisieren des Sync-Keys des Synchronisations-Partners; und Bestimmen, ob die versuchte Synchronisation erfolgreich war, durch die Synchronisation einleitende Seite (320), wobei eine Synchronisation für die Synchronisation einleitende Seite erfolgreich ist, wenn die Synchronisation einleitende Seite die empfangenen Synchronisations-Daten in geeigneter Weise verarbeitet hat; und Aktualisieren des Synchronisations-Sync-Keys der Synchronisation einleitenden Seite, wenn die Synchronisation für die Synchronisation einleitende Seite erfolgreich war.
  2. Verfahren nach Anspruch 1, das des Weiteren umfasst: Empfangen der Synchronisations-Daten durch die Synchronisation einleitende Seite (320); und Aktualisieren der Daten unter Verwendung der empfangenen Synchronisations-Daten durch die Synchronisation einleitende Seite (320).
  3. Verfahren nach Anspruch 1, wobei Bestimmen des gewünschten Synchronisations-Status auf Basis des Wertes des Sync-Keys des Weiteren umfasst: auf Basis des Wertes des Sync-Keys Bestimmen, ob der gewünschte Synchronisations-Status ein anfänglicher Synchronisations-Status ist; und auf Basis des Wertes des Sync-Keys Bestimmen, ob der gewünschte Synchronisations-Status ein anderer gültiger Synchronisations-Status ist.
  4. Verfahren nach Anspruch 1, wobei Bestimmen, ob der gewünschte Synchronisations-Status ein anderer gültiger Synchronisations-Status ist, auf Basis des Wertes des Sync-Keys des Weiteren umfasst: Bestimmen, ob der Wert des Sync-Keys einem gespeicherten Synchronisations-Prüfpunkt entspricht.
  5. Verfahren nach Anspruch 1, wobei der gesendete Sync-Key eine ganze Zahl ist und der Sync-Key des Synchronisations-Partners eine ganze Zahl ist.
  6. Computerlesbares Medium, das durch Computer ausführbare Befehle zum Synchronisieren von Daten zwischen einer Synchronisation einleitenden Seite, die ein Client (320) ist, und einem Synchronisations-Partner, der ein Server (340, 310) ist, aufweist, wobei das computerlesbare Medium durch Computer ausführbare Befehle zum Durchführen der Schritte nach einem der Ansprüche 1 bis 5 umfasst.
  7. Computerlesbares Medium nach Anspruch 6, das des Weiteren die folgenden Schritte umfasst: Einstellen des bestimmten gewünschten Synchronisations-Status auf eine anfängliche Synchronisation, wenn der Wert des gesendeten Sync-Keys Null ist; oder Einstellen des bestimmten gewünschten Synchronisations-Status auf einen gespeicherten Synchronisations-Status des Servers (340, 310), wenn mit dem Vergleich bestimmt wird, dass sich der Wert des gesendeten Keys auf einem gespeicherten Synchronisations-Status bezieht.
  8. Computerlesbares Medium nach Anspruch 7, wobei die Schritte des Aktualisierens des Wertes des Sync-Keys des Clients und des Aktualisierens des Wertes des Sync-Keys des Servers des Weiteren einen Schritt des Inkrementierens des Wertes des in dem Client (320) gespeicherten Sync-Keys und des in dem Server gespeicherten Sync-Keys umfassen.
  9. System (300) zum Synchronisieren von Daten zwischen einer Synchronisation einleitenden Seite (320) und einem Synchronisations-Partner (310), wobei das System (300) umfasst: eine Synchronisationsvorrichtung, die umfasst: einen Prozessor (102) und ein computerlesbares Medium (104); eine Betriebsumgebung (105), die auf dem computerlesbaren Medium (104) gespeichert ist und auf dem Prozessor (102) ausgeführt wird; eine Kommunikationsverbindungsvorrichtung (116), die von der Betriebsumgebung (105) gesteuert arbeitet; die Synchronisations-Vorrichtung ein Synchronisations-Partner (116) oder ein Synchronisations-Server (340) ist; die Synchronisationsvorrichtung von der Betriebsumgebung gesteuert arbeitet und in Betrieb Vorgänge ausführt, die einschließen: Empfangen eines Sync-Keys von der Synchronisation einleitenden Seite (320), wobei der Sync-Key einen Synchronisations-Status spezifiziert, der die letzte erfolgreiche Synchronisation zwischen der Synchronisation einleitenden Seite (320) und dem Synchronisations-Partner (310) darstellt, der Synchronisations-Status ein Synchronisations-Status ist, von dem ausgehend die Synchronisation einleitende Seite synchronisieren möchte, und der Sync-Key einen Wert umfasst, der mit jeder erfolgreichen Synchronisation aktualisiert wird; Bestimmen eines gewünschten Synchronisations-Status aus dem empfangenden Sync-Key, von dem ausgehend die Synchronisation einleitende Seite synchronisieren möchte, auf Basis des durch den empfangenen Sync-Key spezifizierten Synchronisations-Status, wobei das Bestimmen umfasst: Bestimmen eines Wertes des empfangenen Sync-Keys; Bestimmen eines zuvor gespeicherten Wertes eines Sync-Keys des Synchronisations-Partners (310), der sich auf den empfangenden Sync-Key bezieht; Bestimmen des gewünschten Synchronisations-Status durch Vergleichen des bestimmten Wertes des Sync-Keys des Synchronisations-Partners (310) mit dem Wert des empfangenden Sync-Keys; Unternehmen eines Versuchs der Synchronisation mit der Synchronisation einleitenden Seite (320) von dem bestimmten gewünschten Synchronisations-Status ausgehend auf den aktuellen Zustand, wobei der Versuch der Synchronisation Senden von Synchronisations-Daten zu der Synchronisation einleitenden Seite (320) umfasst und die Synchronisations-Daten Änderungen in den zu synchronisierenden Daten umfassen, die seit der letzten erfolgreichen Synchronisation eingetreten sind, wie sie durch den bestimmten gewünschten Synchronisations-Status spezifiziert werden; und Durchführen von Vorgängen, mit denen bestimmt wird, ob die Synchronisation erfolgreich war, durch den Synchronisationspartner (310), die einschließen: Bestimmen (530), ob die versuchte Synchronisation erfolgreich war, wobei eine Synchronisation für den Synchronisations-Partner erfolgreich ist, wenn der Synchronisations-Partner alle Synchronisations-Daten zu der Synchronisation einleitenden Seite gesendet hat, und wenn die Synchronisation für den Synchronisations-Partner erfolgreich war, aktualisieren des Sync-Keys des Synchronisations-Partners; Durchführen von Vorgängen, mit denen bestimmt wird, ob die Synchronisation erfolgreich war, durch die Synchronisation einleitende Seite (320), die einschließen: Bestimmen, ob die versuchte Synchronisation erfolgreich war, wobei eine Synchronisation für die Synchronisation einleitende Seite erfolgreich ist, wenn die Synchronisation einleitende Seite die empfangenen Synchronisations-Daten in geeigneter Weise verarbeitet hat; und Aktualisieren des Synchronisations-Sync-Keys, für die Synchronisation einleitende Seite, wenn die Synchronisation für die Synchronisation einleitende Seite erfolgreich war. Aktualisieren des Synchronisations-Sync-Keys, für die Synchronisation einleitende Seite, wenn die Synchronisation für die Synchronisation einleitende Seite erfolgreich war.
DE60223453T 2001-06-27 2002-06-20 Verfahren und Vorrichtung zur Benutzung eines Synchronisationsschlüssels Expired - Lifetime DE60223453T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/892,679 US6952708B2 (en) 2001-06-27 2001-06-27 Method and system for using a sync key
US892679 2001-06-27

Publications (2)

Publication Number Publication Date
DE60223453D1 DE60223453D1 (de) 2007-12-27
DE60223453T2 true DE60223453T2 (de) 2008-09-18

Family

ID=25400349

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60223453T Expired - Lifetime DE60223453T2 (de) 2001-06-27 2002-06-20 Verfahren und Vorrichtung zur Benutzung eines Synchronisationsschlüssels

Country Status (4)

Country Link
US (2) US6952708B2 (de)
EP (1) EP1271320B1 (de)
AT (1) ATE378635T1 (de)
DE (1) DE60223453T2 (de)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7072911B1 (en) * 2001-07-27 2006-07-04 Novell, Inc. System and method for incremental replication of changes in a state based distributed database
GB0228279D0 (en) * 2002-12-04 2003-01-08 Ibm A synchronization method
US7177865B2 (en) * 2003-06-30 2007-02-13 Sap Ag Data synchronization method and system
US7660833B2 (en) * 2003-07-10 2010-02-09 Microsoft Corporation Granular control over the authority of replicated information via fencing and unfencing
KR100584316B1 (ko) * 2003-10-17 2006-05-26 삼성전자주식회사 단말장치와 서버간의 프레전스 정보 데이터 동기화를 위한시스템 및 방법
US7925754B2 (en) 2003-11-21 2011-04-12 Microsoft Corporation Method and computer program product to provide synch notifications to client devices
US7406464B2 (en) 2003-12-08 2008-07-29 Ebay Inc. Custom caching
KR101042745B1 (ko) * 2004-01-30 2011-06-20 삼성전자주식회사 클라이언트 단말장치와 서버 사이의 세션 재설정을 위한시스템 및 방법
TWI233323B (en) * 2004-04-22 2005-05-21 Phoenix Prec Technology Corp Circuit board with identifiable information and method for fabricating the same
RU2367008C2 (ru) * 2004-04-30 2009-09-10 Майкрософт Корпорейшн Поддержание информации времени-даты для синхронизации устройств с низкой достоверностью данных
US7342555B2 (en) 2004-04-30 2008-03-11 Microsoft Corporation Detecting low fidelity sync data
US6944636B1 (en) * 2004-04-30 2005-09-13 Microsoft Corporation Maintaining time-date information for syncing low fidelity devices
US7730167B2 (en) 2004-04-30 2010-06-01 Microsoft Corporation Methods and systems for halting synchronization loops in a distributed system
US20050278458A1 (en) * 2004-06-09 2005-12-15 Microsoft Corporation Analysis services database synchronization
US7284021B2 (en) * 2004-06-28 2007-10-16 Microsoft Corporation Determining when a low fidelity property value has changed during a SYNC
US7269609B2 (en) * 2004-06-28 2007-09-11 Microsoft Corporation Preserving memory resources by limiting time-date information for a subset of properties
EP1805927A1 (de) 2004-10-11 2007-07-11 2Wire, Inc. Verminderung von periodischem impulsrauschen in einem dsl-system
US7953163B2 (en) 2004-11-30 2011-05-31 Broadcom Corporation Block linear equalization in a multicarrier communication system
US7852950B2 (en) 2005-02-25 2010-12-14 Broadcom Corporation Methods and apparatuses for canceling correlated noise in a multi-carrier communication system
US7587752B2 (en) * 2005-03-04 2009-09-08 Qualcomm Incorporated Methods and apparatus for providing a control channel in a data network
US9374257B2 (en) 2005-03-18 2016-06-21 Broadcom Corporation Methods and apparatuses of measuring impulse noise parameters in multi-carrier communication systems
US7555037B2 (en) * 2005-03-18 2009-06-30 2Wire, Inc. Methods and apparatuses to provide synchronization symbol on demand for DSL systems
US7478278B2 (en) * 2005-04-14 2009-01-13 International Business Machines Corporation Template based parallel checkpointing in a massively parallel computer system
CN1870808A (zh) * 2005-05-28 2006-11-29 华为技术有限公司 一种密钥更新方法
US8103880B2 (en) * 2005-06-03 2012-01-24 Adobe Systems Incorporated Method for communication between computing devices using coded values
US8001076B2 (en) * 2005-07-12 2011-08-16 International Business Machines Corporation Ranging scalable time stamp data synchronization
US20070014243A1 (en) * 2005-07-14 2007-01-18 Yahoo! Inc. System and method for provisioning a user device
US8417782B2 (en) * 2005-07-14 2013-04-09 Yahoo! Inc. Universal calendar event handling
US8112549B2 (en) 2005-07-14 2012-02-07 Yahoo! Inc. Alert mechanism for notifying multiple user devices sharing a connected-data-set
US7630406B2 (en) * 2005-11-04 2009-12-08 Intel Corporation Methods and apparatus for providing a delayed attack protection system for network traffic
US7813439B2 (en) 2006-02-06 2010-10-12 Broadcom Corporation Various methods and apparatuses for impulse noise detection
US7860827B1 (en) 2006-10-23 2010-12-28 Field Automated Communication Systems, Llc Data synchronization method for an application database available on multiple wirelessly connected platforms
CA2565847A1 (en) * 2006-10-27 2008-04-27 Cognos Incorporated System and method for controlling model editing and merging
US8611542B1 (en) * 2007-04-26 2013-12-17 Netapp, Inc. Peer to peer key synchronization
US20090327354A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Notification and synchronization of updated data
US8605837B2 (en) 2008-10-10 2013-12-10 Broadcom Corporation Adaptive frequency-domain reference noise canceller for multicarrier communications systems
EP2299658B1 (de) * 2009-08-14 2012-10-03 Research In Motion Corporation Verfahren und vorrichtung zur synchronisation von benachrichtigungen für dienstereignisse
US8983907B2 (en) * 2010-12-08 2015-03-17 Microsoft Technology Licensing, Llc Change notifications from an updated data representation
US8666997B2 (en) 2010-12-08 2014-03-04 Microsoft Corporation Placeholders returned for data representation items
US9069829B2 (en) * 2011-01-21 2015-06-30 Microsoft Technology Licensing, Llc Data items manager
US8838533B2 (en) 2011-05-20 2014-09-16 Microsoft Corporation Optimistic application of data edits
US8533275B2 (en) 2011-08-19 2013-09-10 Microsoft Corporation Synchronizing conversation structures in web-based email systems
GB201208373D0 (en) 2012-05-14 2012-06-27 Touchtype Ltd Mechanism for synchronising devices,system and method
US10063617B2 (en) * 2015-09-22 2018-08-28 Facebook, Inc. Error correction using state information of data
US11531560B2 (en) * 2018-06-29 2022-12-20 Ncr Corporation System and method for maintaining synchronization between an enterprise system and a remote service support portal

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224212A (en) * 1989-05-01 1993-06-29 Motorola, Inc. Asynchronous operation in a database management system
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5799322A (en) * 1995-01-24 1998-08-25 Tandem Computer, Inc. System and method for stopping updates at a specified timestamp in a remote duplicate database facility
CA2227431C (en) 1995-07-20 2001-05-15 Novell, Inc. Transaction log management in a disconnectable computer and network
US5991771A (en) * 1995-07-20 1999-11-23 Novell, Inc. Transaction synchronization in a disconnectable computer and network
US6317754B1 (en) 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
GB2341249A (en) * 1998-08-17 2000-03-08 Connected Place Limited A method of generating a difference file defining differences between an updated file and a base file
US6810405B1 (en) * 1998-08-18 2004-10-26 Starfish Software, Inc. System and methods for synchronizing data between multiple datasets
US6457062B1 (en) 1999-04-08 2002-09-24 Palm, Inc. System and method for synchronizing multiple calendars over wide area network
US6553409B1 (en) * 1999-07-09 2003-04-22 Microsoft Corporation Background cache synchronization
TW516022B (en) * 2000-06-06 2003-01-01 Teac Corp Compact disc loader
US7031986B2 (en) * 2000-06-27 2006-04-18 Fujitsu Limited Database system with backup and recovery mechanisms

Also Published As

Publication number Publication date
US20050216441A1 (en) 2005-09-29
US6952708B2 (en) 2005-10-04
DE60223453D1 (de) 2007-12-27
EP1271320B1 (de) 2007-11-14
ATE378635T1 (de) 2007-11-15
US20030005342A1 (en) 2003-01-02
US7228321B2 (en) 2007-06-05
EP1271320A1 (de) 2003-01-02

Similar Documents

Publication Publication Date Title
DE60223453T2 (de) Verfahren und Vorrichtung zur Benutzung eines Synchronisationsschlüssels
DE69925302T2 (de) Optimierung der handhabung eines veränderungen-logbuchs
DE60220676T2 (de) Konsistente lesevorgänge in einer verteilten datenbankumgebung
DE60204729T2 (de) Objektenlöschen von einem Vorrichtungspeicher
DE69729399T2 (de) Datenverwaltungssystem und Verfahren für replizierte Daten
DE69938077T2 (de) Verfahren, Vorrichtung und Programmspeichereinrichtung für einen Klienten und ein adaptiver Synchronisierungs- und Transformierungsserver
US7013316B1 (en) System and method for synchronizing multiple database files
DE60028561T2 (de) Bereitstellung von kundendiensten, die daten aus datenquellen abrufen, wobei die datenquellen die vom kunden geforderten formate nicht notwendigerweise unterstützen
DE60015423T2 (de) Verfahren und Vorrichtung zur Objektwiedergabe in einem Netzwerk
DE60124885T2 (de) Verfahren und geräte für schneiden, kopieren und kleben zwischen computersystemen über einem drahtlosen netz
DE60220418T2 (de) Verfahren und Anbieter zur Systemsynchronisation
DE60313531T2 (de) Verfahren und Gerät zur Verarbeitung von sofortigen Nachrichten
DE602004004200T2 (de) System und Verfahren zum Verwalten von gepufferten Objekten unter Verwendung von Mitteilungsverbindungen
DE60203550T2 (de) Verfahren, System and Computerprogrammprodukt für die Synchronisation von verschiedenen Datenstrukturen durch Benutzung von Aktualisierungsmeldungen
DE60117150T2 (de) Verfahren und computerprogramm zum übertragen von inhalt aus einer quellendatenbank zu einer zieldatenbank
DE69838756T2 (de) Die verarbeitung von eingabe/ausgabeanforderungen von mehreren treibern ermöglichen dateisystem-primitivroutine in einem mehrschicht-treiber-e/a-system
DE602005004370T2 (de) Synchronisation von Server- und Geräte-Daten unter Benutzung von Geräte-Daten-Schemata
DE60317753T2 (de) Verfahren und Vorrichtung zur automatischen Client-Authentifizierung in einem drahtlosen Netzwerk, das durch PEAP, EAP-TLS oder andere erweiterbare Authentifizierungsprotokolle geschützt wird
DE60317917T2 (de) Verfahren und vorrichtung zum weiterleiten von sitzungsinformationen von einem portal-server
DE10311082B4 (de) Elektronikdokumentmanagementverfahren
DE202011110895U1 (de) Echtzeitsynchronisierte Bearbeitung von Dokumenten durch mehrere Benutzer für das Bloggen
DE10313048A1 (de) System und Verfahren zur Verwaltung verteilter gleichzeitiger Versionen
DE69932147T2 (de) Kommunikationseinheit und Kommunikationsverfahren mit Profilverwaltung
DE60223182T2 (de) Verfahren und einrichtung zum abrufen von datenspeicherzugriffsinformationen
DE602004003149T2 (de) Verwaltung der Anzeige von Dialogen in Computergeräten basierend auf der Gerätenachbarschaft

Legal Events

Date Code Title Description
8364 No opposition during term of opposition