Bidirektionale Dateisynchronisierung mit Pooling-Mechanismus

Bidirektionale Dateisynchronisierung mit Pooling-Mechanismus

Georgii KapanadzeTechnical Leave a Comment

Einführung

Sind Sie daran interessiert, verschiedene Systeme zur Dateiverwaltung wie Dropbox, Microsoft OneDrive oder Microsoft SharePoint synchronisiert zu haben? Lassen Sie mich einige Grundprinzipien vorstellen, bewährte Praktiken der bidirektionalen Synchronisierung von Dateien und Dokumenten, wie sich die Entwicklungszeit und natürlich die finanziellen Kosten reduzieren lassen.

Was brauchen Sie?

Sie müssen sich von Anfang an um die Anwendungsprogramm-Schnittstellen (APIs) jedes Systems kümmern, das Sie synchronisieren möchten. Sie müssen sich mit der Authentifizierung befassen, Schemadarstellung und -prinzipien, Datenmanipulation lernen und diese auf eine gemeinsame Sprache bringen. Dies kann entweder durch die harte Arbeit eines Entwicklers erreicht werden, der Hunderte von Dokumentationsseiten lernt, oder durch eine Integrationsplattform.

Zufälligerweise bieten wir eine Integrationsplattform mit einer ziemlich einzigartigen Technologie an, so dass Sie sich vielleicht mehr über unsere Connect Bridge. Diese Software erlaubt es Ihnen, APIs verschiedener Systeme mit Hilfe eines einfachen SQL (Standard Query Language) zu verwenden. Dabei spielt es keine Rolle, ob Sie .NET- oder Java-Entwickler sind oder eine andere Sprache verwenden. Das Schema wird im Query Analyzer Tool von Connect Bridge visualisiert und der Entwickler kann seine Abfrage in diesem Tool testen und die Ergebnisse sofort sehen. Dann brauchen Sie nur noch die Datenbank zu kontrollieren, um die Änderungen zu verfolgen, und schon kann es losgehen.

Pooling-Mechanismus

Das Prinzip des Pooling-Mechanismus ist ziemlich einfach: Die Daten aus den Zielsystemen werden einmal pro festgelegtem Zeitraum oder auf Benutzeraktion hin abgerufen und verarbeitet. Und das ist alles.

Vorteile

Nicht alle Systeme bieten die Möglichkeit, Aktionen nach Dateiänderungen in Echtzeit auszulösen. Wenn eines von ihnen diese Funktion nicht bietet, kann dies zu ernsthaften Komplikationen führen. Der Hauptvorteil ist also die Kontrolle der Daten und der Zeit der Dateisynchronisation. Es gibt Ihnen einen größeren Überblick über das Geschehen und eröffnet die Möglichkeit, unnötige Aktionen zu vermeiden.

Nachteile

Je länger der Zeitraum zwischen einem Pool ist, desto größer ist die Wahrscheinlichkeit, dass es zu Konflikten zwischen Dateien kommt.

Behandlung von Konflikten

Bei der bidirektionalen Synchronisierung, wenn sich die Systeme gegenseitig ändern, kann es vorkommen, dass dieselbe Datei zur gleichen Zeit in verschiedenen Systemen geändert wurde. Aber was passiert dann? Welche ist die richtige Version? In diesem Fall müssen Sie angeben, welches System der Master und welches der Slave ist, um zu entscheiden, welche Version überschrieben wird.

Prinzip des Kernprogramms

Ändert die Anerkennung

Um die Änderungen zu verfolgen, benötigen Sie eine Datenbank mit zugeordneten Elementen der Zielsysteme, die synchronisiert wurden. Die Erkennung von Aktualisierungen kann entweder über die Änderungszeit oder die Version oder was auch immer nutzbar ist und von den Zielsystemen zur Verfügung gestellt wird, erfolgen. Erstellen oder Löschen ist ziemlich einfach: Wenn der Datensatz des Elements in der Datenbank nicht existiert, ist er neu, und wenn das Element im Zielsystem nicht existiert, aber einen Datensatz in der Datenbank hat, wurde er im Zielsystem gelöscht. Und das ist alles. Einige der Systeme haben die Möglichkeit, nach Änderungen in einem bestimmten Zeitraum zu fragen, aber auf jeden Fall müssten Sie verfolgen, was aufgrund von Fehlern, die durch Zielsysteme oder Verbindungen verursacht wurden, synchronisiert wurde.

Datei-Synchronisationsmodul

Damit die Hauptsynchronisationslogik mit Zielsystemen funktioniert, ist es sinnvoll, für jedes Zielsystem eine Provider-Klasse zu erstellen und die gemeinsame Schnittstelle zu implementieren, die die grundlegenden CRUD-Operationen (Create-Read-Update-Delete) festlegt. Im Kernalgorithmus brauchen Sie sich dann nicht darum zu kümmern, welcher welcher ist. Sie können einfach die allgemeine Logik der bidirektionalen Synchronisation erstellen, und die Provider-Klassen übernehmen die Manipulation selbst. Wenn ein guter Kernalgorithmus implementiert ist, spielt es keine Rolle, wie viele Systeme Sie synchronisieren. Sie können einfach die Implementierung anderer Provider hinzufügen. Dieser Algorithmus muss der Hierarchie von Mastern und Slaves folgen, um Konflikte korrekt handhaben zu können. Wenn Sie paarweise nach Überlegenheit sortiert synchronisieren, sollte er in Ordnung sein.

Aufführung

Sie können die Erstellungs- und Änderungsoperationen nicht allzu sehr beeinflussen, aber der wichtigste Teil ist die Datenbeschaffung. Es ist nicht notwendig, alle Daten abzurufen. Sie können die letzte Dateisynchronisationszeit beibehalten und den Server nur nach Elementen mit neuerer Erstellungs- und Änderungszeit fragen. Löschoperationen hängen von der Serverlogik ab. Einige von ihnen bieten Massenlöschoperationen. Wenn außerdem der gesamte Ordner gelöscht wurde und die Serverlogik alle Unterelemente innerhalb des gelöschten Elements löscht, macht es keinen Sinn, es einzeln zu löschen.

Sicherheit der Datenkonsistenz

Zunächst einmal ist es keine gute Idee, Daten von verschiedenen Stellen im Code an verschiedenen Stellen abzurufen, denn wenn Sie sie auf langwierige Operationen wie das Hochladen von Dateien aufteilen, kann der Benutzer in der Zwischenzeit den Inhalt von Systemen ändern, und Sie werden mit verschiedenen Daten mit dem gleichen Programmkontext arbeiten, was zu ernsthaften Problemen und möglicherweise zu Datenverlust führen wird.

Während des Prozesses können verschiedene Ausnahmen auftreten, die Sie nicht beeinflussen können, wie z.B. interne Serverfehler von Zielsystemen oder Verbindungsverlust etc. Die beste Vorgehensweise besteht darin, die Ausnahmebehandlung in separate Einheiten zu unterteilen, die Code abdecken, der möglicherweise versucht, ausgeführt zu werden, bis alle Operationen abgeschlossen sind, aber nicht bis zur nächsten Einheit fortgesetzt wird. Es ist eine Art Ebenenbaum. Ich gebe Ihnen ein Beispiel: Ihre Synchronisation findet heraus, dass im ersten System 10 Dateien in 5 Ordnern erstellt wurden. Sie wird also damit beginnen, diese 5 Ordner in anderen Systemen zu erstellen, aber eine der Einfügeoperationen wirft eine Ausnahme aus. Sie kann versuchen, diese weiteren 4 Ordner zu erstellen, sollte aber nicht mit dem Einfügen von Dateien beginnen, da die Pfade von 2 Dateien nicht existieren. Es kann auf unterschiedliche und kompliziertere Weise gehandhabt werden, aber vertrauen Sie mir, dass ich es so einfach wie möglich halte. Die Variationszahl möglicher Fehlerszenarien bei der bidirektionalen Synchronisation mehrerer Systeme ist sehr groß und zudem rekursiv.


Fanden Sie diesen Artikel nützlich?

Melden Sie sich bei mehr als 6000 Abonnenten unseres Newsletters mit frischen Nachrichten aus der Welt der Systemintegration und Unternehmenssoftware an!

100% Datenschutz. Wir spammen nicht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.