Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2007  »  09  »  Konservierungsmittel  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Suchtiefe festlegen

Wer einen Kunden aus der Datenbank holt und seinen Bestellungen folgt, erhält immer nur genau die ersten fünf Bestellungen (Listing 6). Theoretisch könnte Db4o zwar die gesamte Liste erstellen und zurückliefern. Im schlechtesten Fall - beispielsweise bei einer sehr langen Liste - würden dann aber alle Objekte aus der Datenbank instanziiert und den Hauptspeicher fluten. Also folgt Db4o standardmäßig nur fünf Referenzen in die Tiefe. Alle anderen sind dann automatisch »null«.

Listing 6: Bestellungen
finden

01 ObjectSet ergebnisse=db.get(Kunde.class);
02 Kunde einkunde=(Kunde)ergebnisse.next();
03 Bestellung eintrag=einkunde.getErstebestellung();
04 while(eintrag!=null) {
05         System.out.println(eintrag);
06         eintrag=eintrag.getNext();
07 }

Wer tiefer hinabsteigen will, muss explizit das hinter einer Referenz stehende Objekt mit

while(eintrag != null) {
    db.activate(eintrag,1);
    System.out.println(eintrag);
    eintrag = eintrag.getNext();
}

aktivieren oder die so genannte Activation Depth erhöhen. Das kann der Programmierer beispielsweise über folgende Anweisung erledigen:

Db4o.configure().objectClass(Bestellung.class).cascadeOnActivate(true);

Damit steigt Db4o die gesamte Hierarchie hinab.

Unter falscher
Flagge

Datenbanken klassifiziert man nach der Art, wie sie ihre gespeicherten Daten strukturieren und in Relation zueinander setzen. Die bekannten relationalen Datenbanken arbeiten mit Tabellen, während die Objektdatenbanken ganze Datenobjekte verdauen.

Zwischen den beiden Extremen gibt es noch Mischformen, beispielsweise die objektrelationalen Datenbanken. Sie nehmen Objekte zwar entgegen, pressen sie aber intern wieder in eine Tabellenform. Hierzu zählen beispielsweise Hibernate und die meisten Datenbanken, die den Standard JDO einhalten [6], zum Beispiel Apache JPOX vor Version 1.2 [7] oder Speedo [8], aber auch die von Oracle&Co. angebotenen Wrapper.

Einige Datenbankhersteller verwenden gerne den etwas schwammigen Begriff der objektorientierten Datenbank, hinter der sich meist jedoch nur eine objektrelationale Datenbank verbirgt. Reine und auch noch kostenlose Objektdatenbanken muss man immer noch mit der Lupe suchen. Für Python existiert beispielsweise ZODB [9], deren Objekte der Anwender jedoch alle von einer Persistenzklasse ableiten muss. Der brauchbare Rest, beispielsweise Versant [10], stammt aus kommerziellen Softwarehäusern.

Server-Modus

Bisher fand Db4o lediglich als eingebettete Datenbank Verwendung. Einen eigenständigen Server liefert der Hersteller nicht aus, doch lässt sich Db4o in einen Server-Modus versetzen. Dazu ist nur ein passendes Server-Objekt zu erstellen:

ObjectServer server=Db4o.openServer("adressdatenbank", Port);

Ab sofort lauscht der Server am TCP-Port Port auf eingehende Anfragen. Per

server.grantAccess(Benutzer, Passwort);

schränkt man den Zugriff noch auf den Benutzer mit seinem Passwort ein. Die Client-Anwendung erzeugt wie gewohnt einen Container, der diesmal jedoch keine Datei öffnet, sondern den (auf Localhost laufenden) Server anspricht:

ObjectContainer client=Db4o.openClient("localhost", Port, User, Passwort);

Ab hier funktioniert der »client« wie ein normaler Container.

Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ä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 (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Kommentare (0)