Db4o

db4o-Objektdatenbank

Db4o gehört der Firma Versant Corp. Es gibt mehrere Niederlassungen weltweit. Die aktuelle Version ist 8.

Überblick db40
Überblick db40


db4o eine weit verbreitete ODB, die als freie (General Public License (GPL)) und kostenpflichtige Lizenz zur Verfügung steht. Sie bietet alle Vorteile einer OO-Umgebung einschließlich der Daten-Abstraktion, der Vererbung sowie der Kapselung. Das Objektmodell erleichtert die Wartung, die Überarbeitung und den nahtlosen Einstieg mit modernen Programmiersprachen (Java,. NET, C#). Es gibt außerdem umfangreiche Literatur zu diesem Framework. Einen besseren Überblick verschafft Abbildung "Überblick von db4o". Die angelegten Datenbanken werden in Datei mit Endung .yap abgespeichert.[DB4O_2011].

Vorteile

  • Entwickler können gefahrlos Funktionen anbieten. Das heißt durch Kapselung(Unter Kapselung versteht man, dass Objekte einen kontrollierten Zugriff auf die Daten haben.[Bay_08]) von Objekten werden nur bestimmte Methoden zur Verfügung gestellt.
  • db4o kann bis zur 55 mal schneller als Hibernate oder MySQL sein. Dafür gibt es zwei Gründe. Erstens, es findet keine Umwandlung statt. Zweitens ist db4o optimiert für komplexere Objektstrukturen.
  • Es besteht die Möglichkeit, dass man von verschiedenen Clients aus in verschiedenen Sprachen(z.B. C# und Java) auf eine gemeinsame Datenbank zugreifen kann.
  • Die Datenbank kann direkt in die Anwendung integriert werden, funktioniert also ohne separaten Server. Dies ist besonders für den Einsatz in mobilen Anwendungen gedacht.
  • db4o bietet inzwischen umfangreiche Unterstützung für verteilte Anwendung mittels der db4o Replication Services (dRS).

Nachteile

  • Es wird kein 'klassischer' Datenbankserver ausgeliefert - dieser muss mit vorgefertigten Klassen selbst implementiert werden. Der Aufwand hierfür ist aber bei einfachen Anwendungen gering.
  • Von außen ist es nicht möglich, db4o zu administrieren. Das bedeutet, dass alle Einstellungen über den Programmiercode durchgeführt werden müssen.

Arten von Abfragemethoden

Es gibt drei typische Arten von Abfragemethoden in db4o:

  • Query By Example(QBE)
  • Simple Object Database Access(SODA)
  • Native Abfragen

Query By Example(QBE) von db4o

Das bedeutet „Suche anhand von Beispielen“. D.h. Erstellung eines Prototypobjekts für db4o. z.B.

Auto rennwagen = new Auto("Rennwagen");

Es handelt sich dabei um ein einfaches Objekt mit einem „String“ als Parameter. Jetzt kann dieses Objekt in der Datenbank abgespeichert werden. Die Umwandelung in db4o erfolgt über die folgende Zeile.

db.store(auto);

Mit den folgenden Zeilen lassen sich alle Objekte der Klasse Auto vom Typ Rennwagen abrufen.

Auto rennwagenBeispiel = new Auto("Rennwagen");
List<Auto> alleRennwagen;
alleRennwagen = db.queryByExample(rennwagenBeispiel);



QBE erlaubt lediglich einfach gehaltene Abfragen. Komplexere Bedingungen, z.B. Ungleichheit, Größer, Kleiner, sind nicht möglich.

Als eine Vergleich-Analogie für die Ausgabe in SQL und db4o kann folgendes Beispiel dienen.

SQLdb4o
SELECT * FROM Autowhile(result.hasNext()){auto = result.next();arrayListAuto.add(auto);}

Tabelle:1 SQL vs. db4o

Simple Object Database Access(SODA)

SODA-Abfrage
SODA-Abfrage

Dieser feine Zugriff auf die Daten ist etwas aufwändiger, aber ermöglicht, komplexere Abfragen vorzunehmen, s. Abbildung: SODA-Abfrage. Dabei repräsentiert das oberste Viereck ein Oberobjekt. Es besteht die Möglichkeit, auf eine Klasse direkt zuzugreifen.

query.constrain(Auto.class);

Wenn noch zusätzliche Bedingungen einfügt werden sollen, kann Folgendes als Beispiel genommen werden:

query.descend(„typ").constrain(„Rennwagen");

Dadurch wird nur ein bestimmter Typ(Rennwagen) von Auto ausgewählt. Auf dem Bild kann man diese oben genannten Zugriffe anschauen und sich das hierarchische Modell von Objekten in db4o vorstellen.

Bei Verwendung ergeben sich zwei Nachteile. Zunächst werden die Objektattribute, für die Bedingung aufgestellt werden, als String selektiert (oben bspw. "typ"). Damit der Compiler keine Möglichkeit zu prüfen, ob die Abfrage gültig ist, im Beispiel die Klasse "Auto" also überhaupt ein Attribut "typ" hat. Zudem wird durch den direkten Zugriff auf die Attributwerte das OOP-Konzept der Datenkapselung verletzt.

Native Abfragen

Unter nativen Abfragen (auch: Native Queries) werden die Abfragen verstanden, die in einer Clientprogrammiersprache(C#, Java) formuliert werden. Solche Abfragen können einen direkten Vergleich oder Zugriff auf einzelne Elemente in der Datenbank ermöglichen, z.B.

List autoTyp = db.query(new Predicate() {
public boolean match(Auto einAuto) {
if(einAuto.getTyp() == „Rennwagen") return true;
else return false; }
});








In diesem Beispiel kann ein Objekt(einAuto.getTyp()) mit einem „String“ Rennwagen verglichen werden. In erste Zeile wird die Variable „autoTyp“ typisiert und initialisiert. In eine „if-Abfrage“ wird es abgefragt, ob es in Datenbank existiert, wenn es zutrifft, dann wird es „true“ übergeben, sonst „false“. Da der Zugriff auf private Attribute nur über entsprechende Methoden möglich ist, wird bei nativen Abfragen das Konzept der Datenkapselung gewahrt. Eine native Abfrage wird zur Laufzeit untersucht und wenn möglich von db4o in eine Performance-optimierte SODA-Abfrae umgewandelt. Ist dies nicht möglich, z.B. wegen des Aufrufs von für die abfrage irrelevanten Methoden, wird jedes Objekt der abgefragten Klasse instanziiert und die "match"-Methode darauf angewandt.[DB4O_2011]

Installation von db4o

Im ersten Schritt lassen sich db4o und Eclipse von der offiziellen Seite herunterladen. Laut der Spezifikation von db4o sollte eine Eclipse-Version höher als 3.3 verwendet werden. Für Eclipse muss nach dem Entpacken noch die Umgebungsvariable CLASSPATH gesetzt werden. Die db4o Variable kann als Systemvariable definiert und in PATH hinzufügt werden. z.B.

VariablePATH
DB4OX:\Programme\db4o-8.0-java\db4o-8.0\lib\

Tabelle:2 Variable & PATH

Für Systempath

PATH%DB4O%\db4o-8.0\lib;

Tabelle:3 System Path

Externe .jar´s
Externe .jar´s


Ein ähnliches Prinzip gilt für JAVA_HOME. Anschließend soll Eclipse gestartet werden, um das db4o Plugin zu installieren. Dabei geht man folgendermaßen vor: Help-> Install Software, dann den folgenden Link in das Eingabefeld kopieren. Jetzt kann ein neues Projekt anlegt und externe Bibliotheken hinzugefügt werden siehe Abbildung Externe .jar´s.

Dann empfiehlt sich die Erstellung von entsprechenden Klassen. z.B. der Objektklasse und Klassen mit notwendigen Methoden für die Verwaltung, das Ablesen und das Speichern, so wie db.queryByExample(auto); und db.queryByExample(auto); .

Realisierte Projekte mit ODBs

Es gibt viele Firmen, die db4o einsetzen, wie z.B. IBM, Intel, Postbank, BOSCH Sigpack, BMW und viele mehr .

Quellen:

Kategorie: Neue DB-Entwicklungen, NoSQL, ODBMS, O