Synchron
Die Adressdatenbank auf einem Notebook oder dem mobilen Pocket-PC verlangt regelmäßig einen Abgleich mit ihrem Pendant am Arbeitsplatz. Das gleiche Phänomen kennen Datenbankentwickler als Replikation. Ist ein Objekt aus der Datenbank A auch in der Datenbank B zu finden, müssen Änderungen an einem Objekt immer auch in der jeweils anderen Datenbank auftauchen. Eine derartige Replikation erlaubt Db4o seit Version 5.
Nur kurze Zeit nach der Veröffentlichung haben die Entwickler die Funktionen zur Replikation jedoch schon wieder aus Db4o entfernt. Heute stecken sie in einem separat erhältlichen Zusatzmodul namens Db4o Replication System, kurz DRS [5]. Die noch im Kern verbliebenen Replikations-Funktionen sind als veraltet gekennzeichnet und sollten nicht mehr verwendet werden. Die Installation des DRS-Pakets funktioniert wie bei Db4o.
Die eigentliche Replikation einer Datenbank läuft genauso schnell ab. Zunächst muss ein Objekt in allen Datenbanken wiedererkannt werden. Das erreicht Db4o durch Zuweisung einer eindeutigen Nummer, der Unique Universal ID. Deren automatische Berechnung ist, da sie Zeit kostet, abgeschaltet, bei Bedarf muss der Programmierer sie per Hand aktivieren:
Db4o.configure().generateUUIDs(ConfigScope.GLOBALLY);
Gleiches gilt für die Versionsnummern, an denen Db4o Änderungen erkennt:
Db4o.configure().generateVersionNumbers(ConfigScope.GLOBALLY);
Dann sind noch zwei Datenbanken einzurichten:
ObjectContainer adressdatenbankA = Db4o.openFile("adressenA.yap");
ObjectContainer adressdatenbankB = Db4o.openFile("adressenB.yap");
Hier sollen die Objekte aus »adressdatenbankA« in der Datenbank »adressdatenbankB« landen. Dies erfährt das DRS über ein passendes Replication-Objekt:
ReplicationSession replication = Replication.begin(adressdatenbankA, adressdatenbankB);
Dieses Objekt führt auch gleich die Replikation durch. Damit fehlt nur noch die Information, welche Objekte aus der »adressdatenbankA« in die »adressdatenbankB« wandern sollen. Am besten nur jene, die sich seit dem letzten Abgleich verändert haben:
ObjectSet changed = replication.providerA().objectsChangedSinceLastReplication();
Über die auf diese Weise erhaltene Ergebnismenge iteriert die folgende Schleife und stopft dabei jedes gefundene Objekt in die »adressdatenbankB«:
while (changed.hasNext())
replication.replicate(changed.next());
Ein darauf folgendes »replication.commit()« sorgt für einen ordnungsgemäßen Abschluss.
Die Replikation geschieht auf Wunsch sogar in eine relationale Datenbank. Im Hintergrund zieht Db4o dazu Hibernate heran, das die von Db4o angelieferten Objekte wieder in die gewohnte Tabellenform presst.
Besser als SQL
Db4o macht süchtig. In 90 Prozent der Fälle genügen bereits neun oder zehn Db4o-Funktionen. Dank Native Queries muss zudem niemand eine spezielle Abfragesprache lernen. Zudem macht Db4o sogar Refactorings häufig ohne Anpassungen mit: Neue oder erweiterte Objekte versucht es automatisch auf bereits in der Datenbank gespeicherte abzubilden. Sollte der »Kunde« beispielsweise nachträglich das Attribut »telefon« erhalten, klappen trotzdem noch Suchanfragen an die Datenbank. In den zurückgelieferten Objekten lässt Db4o das neue Feld einfach leer. Auf eine ähnliche Weise geht die kleine Datenbank auch mit Vererbung um.
Nur Administratoren müssen umdenken: Da Db4o nur eingebettet funktioniert, gibt es weder einen eigenen Server noch eine schmucke Administrationsoberfläche. Hier ist der Programmierer für alles alleine verantwortlich. Immerhin gibt es seit Neuestem den »ObjectManager« (Abbildung 2), mit dem der Admin wenigstens einen kleinen Einblick in eine bestehende Db4o-Datenbank erhält. Ein paar Hinweise zu alternativen Objektdatenbanken gibt der Kasten "Unter falscher Flagge". (ofr)

|
Abbildung 2: Der »ObjectManager« bietet einen ersten, schnellen Einblick in eine Datenbank.
|
|
Tim Schürmann ist selbstständiger Diplom-Informatiker und derzeit als freier Autor unterwegs. Zu seinen Büchern gesellen sich zahlreiche Artikel, die in Zeitschriften und auf Internetseiten in mehreren Ländern veröffentlicht wurden.
|
|
Ähnliche Artikel
|
|
Tooltipps
|
Werkzeuge im Kurztest
|
|
LAMP mal ohne AMP
|
Performante Webapplikationen in C++ entwickeln
|
|
Türöffner
|
Service-orientierte Abbildung von Geschäftsprozessen mit freier Software
|
|
Flottes Projekt
|
GPS-basiertes Flottenmanagement mit Open GTS
|
|
Passt!
|
C#-Entwicklung unter Linux - Teil 4
|
|
Tooltime
|
Die besten zehn Eclipse-Plugins
|
| Whitepaper |
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele
Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
|
The Role of Open Source in Data Integration
Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|