Erfahrungen mit Android-PIM-Synchronisierung Teil 3

Nachdem die Entscheidung für den SyncML-Client Synthesis gefallen war, machte ich mich daran, das Zusammenspiel mit eGroupware zu testen. Zunächst aber erstmal einige grundsätzliche Überlegungen.

Installiert war für den Test Egroupware 1.8.001.20101201-2.1 (über RPM)
und Synthesis 1.8.0.27 für Android. Bei eGroupware war für die Konfliktauslösung "Vorgabe (Server gewinnt)" eingestellt, bei Synthesis
"Normal Sync".

Konflikte

Das Ideal bei der PIM-Synchronisierung ist natürlich die Konflikterkennung und automatische Auflösung. Ähnlich wie bei einem verteilten Versionsverwaltungssystem sollte es im Grunde möglich sein, Änderungen verschiedener Clients an gleichen Datensätzen (oder Dateien) zu erkennen, zu mergen und zu an alle wieder zu verteilen. Es leuchtet nicht ein, warum bei einer Adresse ein auf Client1 korrigierter Straßenname nicht mit einer auf Client2 geänderten Email-Adresse abgeglichen werden kann.

Leider ist das zugrundeliegende Datenmodell auf vielen Platformen nicht ausreichend, um solche Änderungen innerhalb eines Datensatzes automatisch zu verfolgen. Die zweite Möglichkeit, ohne diese Meta-Informationen, Änderungen auf beiden Seiten automatisch zu mergen ist gefährlich und kann zum gefürchteten Kaputt-Synchronisieren von Datensätzen führen. Dumm vorallem, wenn man den Fehler zunächst gar nicht bemerkt…

Schließlich ist es bei SyncML auch nicht vorgesehen bei Konflikten den User zu fragen, damit dieser u.U. einzelne Felder eines Datensatzes manuell mergen kann. Das kommt einem als alten PalmPilot-Anwender schon seltsam vor, daß das mehr als 13 Jahre später nicht mehr möglich sein soll, dem User zuzumuten Konflikte interaktiv auflösen zu lassen. Es mag aber vielleicht auch an der Art der Synchronisierung liegen (automatisch, unbeaufsichtigt, im Hintergrund), daß dieses Konzept keine Anwendung mehr findet.

Aus diesem Grund habe ich mich dafür entschieden, dem ganzen System ein stabiles Verhalten zu geben und schlicht festgelegt, daß der Server bei Konflikten immer gewinnt. Änderungen auf dem Client gehen so u.U. verloren, wenn zwischendurch auf dem Server was geändert wurde. Ich denke da hilft nur eine Strategie: Oft und regelmäßig syncen, damit die Änderungen nie zu groß werden können.

Slow-Sync

Ebenfalls verzichtet habe ich auf einen Test des sogenannten Slow-Syncs. Ein Slow-Sync kommt normalerweise dann zur Anwendung, wenn Meta-Informationen wie Zeitstempel oder die Zuordnung der Datensatz-IDs von Client und Server verloren gehen und die Synchronisierung "neu aufgesetzt" werden soll. Dann wird mit einer inhaltlichen/feldweisen Prüfung bestimmt, welcher Client-Datensatz welchem Server-Datensatz entspricht. Allerdings ist dieses Verfahren naturgemäß sehr fehleranfällig. Es können leicht Fehlzuordnungen auftreten oder Dubletten entstehen.

Das Sinnvollste in so einem Fall ist komplett neu aufzusetzen und den SyncML-Client anzuweisen, seine lokalen Daten zu löschen und komplett neu vom Server zu beziehen. Bei Synthesis wird diese Einstellungen als "Gerät neu laden" bezeichnet.

Um sich die Möglichkeit des Neuaufsetzens des Clients nicht zu nehmen, sollten auch keine Verwendung von Datenfeldern gemacht werden, die nur auf dem Client verfügbar sind. Denn diese werden ja nicht synchronisiert und auf dem Server gesichert und wären somit durch die Lösch-Funktion verloren.

Eigene Synthesis-Datenbanken

Android unterstützt von Haus aus mehrere Quellen für Kontakte und Kalender. Android nennt dieses Quellen Konten. Standardmäßig werden die Daten in der mit Google-Konto verknüpften Datenbank gespeichtert. Es ist aber auch möglich, ein spezielles Konto für die Exchange-Synchronisierung anzulegen (die Android-Bezeichnung ist "Geschäftlich").

Man kann zwar bei Synthesis vorhandene Datenbanken angeben, dies verbietet sich aber aus den folgenden Gründen:

  1. Greifen mehrere Synchronisierungs-Programme auf die gleichen Daten zu, so kann es zu seltsamen Effekten wie doppelten Einträgen kommen.
  2. Ist z.B. nach einem System-Update die Synchronisierungseinstellung des Google-Kontos wieder eingeschaltet landen die Daten (ev. unbemerkt) doch wieder auf den Servern eines Dritten.
  3. Gehen die Metainformationen mal verloren und man muß das Gerät neu aufsetzen, löscht man ev. Einträge eines anderen Kontos.

Das beste ist also ein eigenes Synthesis-Konto sowohl für Kontakte als auch für Kalender anzulegen.

One thought on “Erfahrungen mit Android-PIM-Synchronisierung Teil 3”

  1. Nach den Vorüberlegungen hier nun die Testergebnisse der Kontakt-Synchronisierung. Um es vorwegzunehmen: Die Kombination Synthesis <-> EGroupware hat einen durchweg brauchbaren Eindruck hinterlassen. Grobe Schnitzer gab es keine. Lediglich beim Ände

Comments are closed.