-
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.