Grundlagen der Synchronisation
Wenn der MobiLink-Synchronisationsserver einen Upload-Datenstrom von einem MobiLink-Client erhält, wird der gesamte Upload-Datenstrom im Speicher gehalten, bis die Synchronisation abgeschlossen ist. Diese Vorgehensweise hat drei Gründe:
Deadlock Wird ein Upload-Datenstrom für die konsolidierte Datenbank ausgeführt, kann es auf Grund von Parallelität mit anderen Transaktionen zu Deadlock-Situationen kommen. Bei diesen Transaktionen kann es sich um Upload-Transaktionen anderer Datenbankverbindungen des MobiLink-Synchronisationsservers bzw. um Transaktionen anderer Anwendungen handeln, die auf die konsolidierte Datenbank zugreifen. Wenn bei einer Upload-Transaktion ein Deadlock eintritt, dann wird diese zurückgesetzt, und der MobiLink-Synchronisationsserver beginnt automatisch, den Upload-Datenstrom erneut von Beginn an auszuführen.
Performance-TippSie müssen Ihre Synchronisationsskripten so schreiben, dass Konfliktsituationen so weit wie möglich vermieden werden. Konfliktsituationen haben erheblichen Einfluss auf die Performance, wenn mehrere Benutzer gleichzeitig synchronisieren. |
Eingelesene Zeilen filtern Um zu bestimmen, welche Zeilen eingelesen werden sollen, werden häufig die Zeilen berücksichtigt, die seit dem letzten Datenempfang verändert wurden. Beim Synchronisieren hat der Upload Vorrang vor dem Download. Bei den Zeilen, die während des Upload-Vorgangs eingefügt oder geändert wurden, handelt es sich um die Zeilen, die seit dem vorherigen Download-Vorgang geändert wurden.
Es wäre schwierig, ein download_cursor-Skript zu schreiben, das diese Zeilen aus dem Download-Datenstrom ausschließt. Aus diesem Grund filtert der MobiLink-Synchronisationsserver automatisch die Zeilen, die soeben aus dem Download-Datenstrom ausgelesen wurden. Wenn dem Download-Datenstrom eine Zeile hinzugefügt wird, ermittelt der MobiLink-Synchronisationsserver ihre Position im Upload-Datenstrom.Wenn er sie findet und diese identisch ist, wird sie aus dem Download-Datenstrom ausgeschlossen.
Löschungen nach Einfügungen und Aktualisierungen verarbeiten Der Upload-Datenstrom wird in der konsolidierten Datenbank in einer Reihenfolge angewendet, die Verletzungen der referenziellen Integrität vermeidet. Der Upload-Datenstrom wird so formatiert, dass alle Vorgänge (Einfügungen, Aktualisierungen und Löschungen) für eine einzelne Tabelle gruppiert werden. Die Tabellen im Upload-Datenstrom werden anhand ihrer Fremdschlüsselbeziehungen sortiert. Alle Tabellen der entfernten Datenbank, die von einer anderen Tabelle dieser Datenbank referenziert werden, befinden sich im Upload-Datenstrom vor der referenzierenden Tabelle.
Wenn z.B. in Tabelle A und in Tabelle C jeweils Fremdschlüssel enthalten sind, die eine Primärschlüsselspalte in Tabelle B referenzieren, werden die Zeilen aus Tabelle B zuerst ausgelesen.
Wenn der Upload-Datenstrom in die konsolidierte Datenbank übertragen wird, werden die Einfügungen und Aktualisierungen in der Reihenfolge vorgenommen, in der sie im Upload-Datenstrom erscheinen. Referenziert eine eingefügte oder aktualisierte Zeile eine neu eingefügte Zeile, dann wird dadurch sichergestellt, dass die referenzierte Zeile vor der referenzierenden Zeile eingefügt wird. Löschungen werden in umgekehrter Reihenfolge ausgeführt, also nachdem alle Einfügungen und Aktualisierungen vorgenommen wurden. Wenn eine Zeile, die gelöscht oder aktualisiert wird, eine andere Zeile referenziert, die gelöscht wird, wird dadurch sichergestellt, dass die referenzierende Zeile gelöscht bzw. aktualisiert wird, bevor die referenzierte Zeile gelöscht wird.
SQL Anywhere Studio 9.0.1
Copyright © 1989–2004 Sybase Inc. Teil-Copyright © 2001–2004 iAnywhere Solutions Inc. Alle Rechte vorbehalten.