Wenn eine Synchronisationsanforderung abgesetzt wird und der MobiLink-Server entscheidet, dass eine neue Verbindung erstellt werden muss, wird das begin_connection-Ereignis ausgelöst und die Synchronisation beginnt.
Nach der Synchronisation wird die Verbindung in einen Verbindungspool gesetzt und MobiLink wartet erneut auf eine Synchronisationsanforderung. Bevor eine Verbindung aus dem Verbindungspool gelöscht wird, muss das Ereignis end_connection ausgelöst werden. Wenn jedoch eine weitere Synchronisationsanforderung für dieselbe Version eintrifft, wickelt MobiLink die nächste Synchronisationsanforderung mit derselben Verbindung ab. Es gibt mehrere Ereignisse, die die laufende Synchronisation beeinflussen.
Bei jeder Synchronisation kann es zu folgenden Transaktionen kommen. Jede Transaktion ist optional.
Authentifizierung
Synchronisation beginnen
Upload
Mit der Option dbmlsync -tu können Sie mehrere Uploadtransaktionen angeben.
Download vorbereiten
Download
Synchronisation beenden
Nicht blockierende Downloadbestätigung
Zudem sind zwei Verbindungstransaktionen zulässig. Nach der Verbindungsherstellung wird direkt eine begin connection-Transaktion zum Aufbau der Verbindung ausgeführt. Nach Trennen der Verbindung wird eine end connection-Transaktion zum Beenden der Verbindung ausgeführt.
Die wichtigsten Phasen einer Synchronisation sind die Upload- und Downloadtransaktionen. Die in Upload- und Downloadtransaktionen enthaltenen Ereignisse werden im Folgenden beschrieben.
Die Uploadtransaktion übernimmt Änderungen, die per Upload von einer entfernten Datenbank übermittelt werden.
Das Ereignis begin_upload kennzeichnet den Anfang der Uploadtransaktion. Die Uploadtransaktion ist ein zweiteiliger Prozess. Zunächst werden Einfügungen und Aktualisierungen für alle entfernten Tabellen per Upload übermittelt, dann die Löschungen für alle entfernten Tabellen.
Das Ereignis end_upload kennzeichnet das Ende der Uploadtransaktion.
Weitere Hinweise finden Sie unter Skripten für den Upload von Zeilen schreiben.
Die Downloadtransaktion ruft Zeilen aus der konsolidierten Datenbank ab, Sie beginnt mit dem begin_download-Ereignis.
Die Downloadtransaktion ist ein zweiteiliger Prozess. Für jede Tabelle erfolgt erst der Download der Löschungen und dann der aktualisierten und eingefügten Zeilen. Das end_download-Ereignis beendet die Downloadtransaktion.
Weitere Hinweise finden Sie unter Skripten für den Download von Zeilen schreiben.
Die nicht blockierende Downloadbestätigungstransaktion wird nur durchgeführt, wenn MobiLink im nicht blockierenden Downloadbestätigungsmodus ist und eine Downloadbestätigung empfangen wird. Diese Transaktion hat zwei Funktionen. Die Skripten publication_nonblocking_download_ack und nonblocking_download_ack werden in dieser Transaktion ausgeführt. Sie vereinfachen die Protokollierung des Downloadstatus. Außerdem werden die Download-Zeitstempel in den MobiLink-Systemtabellen bei dieser Transaktion aktualisiert.
Beachten Sie, dass diese Transaktion nicht auf derselben Datenbankverbindung wie die anderen Ereignisse für die Zielsynchronisation durchgeführt werden. Das bedeutet, dass keine Variablen auf Verbindungsebene in dieser Transaktion referenziert werden können.
Der folgende Pseudocode bietet einen Überblick über die Abfolge, in der Ereignisse und die gleichnamigen Skripten aufgerufen werden. In dieser Darstellung des MobiLink-Ereignismodells wird davon ausgegangen, dass eine volle Synchronisation (nicht nur für Upload oder nur für Download) ohne Fehler durchgeführt wird.
In den meisten Fällen besteht die Standardaktion darin, nichts zu tun, wenn Sie nicht ein Skript für ein bestimmtes Ereignis definiert haben.
Die Ereignisse begin_connection und end_connection sind Ereignisse auf Verbindungsebene. Sie sind unabhängig von allen Synchronisationen und haben keine Parameter.
Einige Ereignisse werden einmal pro Synchronisation für jede zu synchronisierende Tabelle aufgerufen. Die diesen Ereignissen zugeordneten Skripten werden als Skripten auf Verbindungsebene bezeichnet.
Jede Tabelle kann über eigene Tabellenskripten verfügen; Sie können aber auch Tabellenskripten schreiben, die von mehreren Tabellen gemeinsam genutzt werden.
Einige Ereignisse, wie etwa begin_synchronization, treten sowohl auf der Verbindungsebene als auch auf der Tabellenebene ein. Sie können für diese Ereignisse sowohl Verbindungs- als auch Tabellenskripten bereitstellen.
Die COMMIT-Anweisung illustriert, wie der Synchronisationsprozess in unterschiedliche Transaktionen aufgeteilt wird.
Ein Datenbankfehler kann zu jedem beliebigen Zeitpunkt im Synchronisationsprozess auftreten. Datenbankfehler werden mit den Skripten handle_error oder handle_odbc_error verarbeitet.
Ihre SQL-Synchronisationsskripten bzw. die Prozeduren oder Skripten, die von Ihren SQL-Synchronisationsskripten aufgerufen werden, dürfen keine impliziten oder expliziten COMMIT- oder ROLLBACK-Anweisungen enthalten. COMMIT- und ROLLBACK-Anweisungen innerhalb eines SQL-Skripts ändern den transaktionsbasierten Ablauf der Synchronisationsschritte. Falls Sie diese Anweisungen benutzen, kann MobiLink die Integrität der Daten bei einer Systemstörung nicht garantieren.
Komplettes MobiLink-Ereignismodell
Ereignisse beim Upload
Ereignisse beim Download
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |