Kurze Einführung und Installationsanleitung

db40
Kommentare

db4o hat wegen einiger neuer Features wie Native Queries für Furore gesorgt. Die schnelle Open Source Datenbank ist besonders für kleinere und mittlere Datenbankanwendungen geeignet. Db4o minimiert Entwicklungszeit und Kosten und steigert gleichzeitig die Performanz.

db4o ist eine objektorientierte Datenbank, die auf den Plattformen Java und Microsoft .NET zur Verfügung steht und bei db4objects Inc. entwickelt wird. db4o bietet eine generische Persistenzschicht für die Applikationsentwicklung mit Java oder .NET auf PDAs, mobilen Geräten, Desktop- oder Serverrechnern.

Objektorientierte Datenbanken orientieren sich am Datenmodell der Applikationssprache; der berüchtigte „objektrelationale Mismatch“ entfällt. db4o zeichnet sich aus durch schnelle Persistenz von komplexen Objekten, einfache Installation und Einbettung in die OO-Anwendung, leichte und effiziente Abfragesprachen, minimalen Administrationsaufwand und vielfältige Möglichkeiten, die eigene Datenbank durch Konfigurationseinstellungen an den spezifischen Bedarf anzupassen.

db40 von Larysa Visengeriyeva und Patrick Römer

Dieser Onlineartikel ist ein Auszug aus dem Buch „db40“ von Larysa Visengeriyeva und Patrick Römer, das bei entwickler.press erschienen ist. Sie können das Buch im Onlineshop von entwickler.press erwerben.

entwickler-press.de

Der Einsatz von db4o lässt sich durch die einfache API in kürzester Zeit erlernen und produktiv anwenden. Die zu persistierenden Objekte müssen hierbei keinerlei Voraussetzungen erfüllen – die Applikationslogik bleibt frei von Referenzen auf die Persistenzschicht. Die Objekte werden üblicherweise in einer Datei – Default-Endung .yap – gespeichert, der Benutzer kann beliebig viele Dateien parallel geöffnet halten. Eine einzelne Datei kann hierbei maximal 2 GB adressieren. Für die Abfrage der gespeicherten Objekte bietet db4o drei Konzepte:

  • Native Queries (NQ)
  • S.O.D.A.
  • QueryByExample (QbE)

QbE ist wohl die intuitivste Variante, die sich insbesondere für Einsteiger und relativ einfache Anfragen eignet. Hierzu erstellt man ein Prototyp-Objekt und db4o liefert alle Objekte aus der Datenbank mit identischen Feldwerten zurück. Defaultwerte (null für Referenztypen und 0 für primitive Typen) fungieren als Blankowerte und werden für die Anfrage ignoriert.

In S.O.D.A. artikuliert man die Anfrage nicht anhand „lebendiger“ Objekte, sondern man erstellt einen Constraintgraph, der die relevanten Teile des gewünschten Objektgraphen spezifiziert. S.O.D.A. ist deutlich mächtiger und flexibler als QbE: Seiteneffekte durch die Erzeugung von QbE-Objekten können nicht auftreten, Defaultwerte nehmen keine Sonderstellung ein, die Nutzung von Indizes kann die Suche erheblich beschleunigen. Außerdem bietet die API über QbE hinausgehende Funktionalität, wie etwa Vergleichsoperatoren, boolesche Verknüpfungen etc. Die Hauptanfragesprache für db4o sind Native Queries (NQ). Die Charakteristika von NQ:

  • Objektorientiert
  • Typsicher
  • Refakturierbar
  • Produktiv
  • Hohe Performance

NQ basieren vollständig auf der Programmiersprache, in der die Anwendung geschrieben ist. Dadurch sind Anfragen, anders als in gängigen stringbasierten Sprachen, der Typprüfung durch den Compiler oder die Refactoring-Features der IDE zugänglich. Zur Erzielung optimaler Performance analysiert db4o NQs vor der Ausführung und versucht, diese in äquivalente S.O.D.A.-Ausdrücke umzuwandeln. Dieses Konzept ist unseres Wissens derzeit einzigartig.

Die Anfrage nach „allen Personen, die jünger als 33 Jahre sind“ lässt sich mit Native Queries beispielsweise wie folgt ausführen:

List  persons = db.query(
new Predicate() {
public boolean match(Person person) {
return person.getAge()

Die Abfrage wird als Subklasse von com.db4o.Predicate implementiert, in der die Methode match(TargetType t) passend überschrieben wird. NQs erweisen sich als 100% typsicher und refaktorierbar.

Anhand des Open Source Benchmark „PolePos“ lassen sich die Vorteile von db4o im direkten Vergleich zu reinen JDBC/SQLLösungen oder O/R-Mappern wie Hibernate nachvollziehen: Exzellente Performance und Zero-Administration sind Hauptkriterien insbesondere für den Markt der embedded Persistenzlösungen und mobilen Geräte.

Der Client-Server-Modus macht db4o auch für den Bereich J2EE und Web-Applikationen attraktiv. Clients können sowohl embedded in derselben Virtual Machine (VM) wie der Server alsauch remote über Netzwerk verbunden laufen. db4o bietet ACID-Transaktionen sowie einen Replikationsmechanismus, der konsistente Datenhaltung sowohl zwischen mehreren db4o-Instanzen wie auch zwischen db4o und einer relationalen ERMDatenbank erlaubt. Dieses Feature ist besonders interessant für„partially connected“ Clients, wie etwa Laptops/PDAs von Mitarbeitern im Außendienst.

Hauptanwendungsgebiet für db4o ist die Einbettung in Softwarekomponenten, unsichtbar für den Endbenutzer. Die Einbindung ist denkbar leicht; es reicht, eine einzige jar/dll-Datei hinzuzufügen: Keinerlei Installation, Konfiguration oder Wartung ist vonnöten.

db4o wird als .jar/.dll-File zum Download angeboten und ist etwa 500 KB groß. Die Distribution enthält außerdem Utilities, die Testsuite, API-Dokumentation sowie ein interaktives Tutorial. Weitere Komponenten wie ObjectManager (ein db4o Browser) oder dRS (der Replikationsservice) können separat heruntergeladen werden.

db4o – eine Open-Source-Datenbank

Ein weiterer wichtiger Aspekt ist das Lizenzmodell: db4o wird unter einer dualen Lizenz angeboten und kann entweder unter den Bedingungen der GPL oder aber unter den erweiterten Möglichkeiten einer kommerziellen Lizenz verwendet werden. Beide Varianten unterscheiden sich nur in lizenzrechtlicher Hinsicht, das Produkt ist identisch.

Ein-Schritt-Installation

Db4o ist unter www.db4o.com zum freien Download verfügbar. Die Java-Version wird in einem einzigen .zip-File ausgeliefert.

db4o-Verzeichnisbaum

Nach dem Downloaden und Entpacken der db4o-*-*-java.zip-Datei erhält man folgenden Verzeichnisbaum:

db4o-5.2-javadb4o-5.2doc

Im doc-Ordner findet man die gesamte Dokumentation sowie die Java-API-Docs. Dazu gehört auch ein ausführliches, interaktives Tutorial (auf Englisch).

db4o-5.2-javadb4o-5.2lib

In diesem Verzeichnis befinden sich die eigentlichen Jar-Bibliotheken, die den db4o-Datenbankkern für unterschiedliche

db4o-5.2-javadb4o-5.2src

Als Open-Source-Datenbank bringt db4o selbstverständlich den vollständigen Java-Quellcode im Lieferumfang mit. Die Quellcodedateien, Ant-Buildscripte inklusive, befinden sich im Unterordner src.

Installation

db4o ist sofort installiert, nachdem der Pfad zur .jar-Bibliothek dem Klassenpfad des Java-Projekts hinzugefügt wurde. Die Installation erfolgt in nur wenigen Schritten:

  1. Download der letzten Version von db4o von www.db4o.com
  2. Entpacken Sie db4o-*-*-java.zip.
  3. Fügen Sie db4o-*-*.jar aus dem Ordner src dem Klassenpfad

hinzu.

Abb.: db4o in der Java-Anwendung

Der dritte Schritt in der IDE Eclipse:

  1. Wählen Sie aus dem Ordner src die der verwendeten Java-Version entsprechende .jar-Datei und kopieren Sie sie in den eigenen Projektordner (Refresh des Projekts nicht vergessen, falls dies außerhalb von Eclipse geschieht).
  2. Wählen Sie im Menü PROJECT | PROPERTIES | JAVA BUILD PATH | ADD JAR… die gerade importierte .jar-Datei aus und bestätigen Sie mit OK.
Larysa Visengeriyeva ist Dipl.-Informatikerin und lehrte an der FH Brandenburg. Sie ist Mitglied des Entwicklerteams von db4o und ist bestens mit der Datenbank vertraut.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -