21.11.2013 Aufrufe

Performance-Vergleich von PostgreSQL, SQLite, db4o und MongoDB

Performance-Vergleich von PostgreSQL, SQLite, db4o und MongoDB

Performance-Vergleich von PostgreSQL, SQLite, db4o und MongoDB

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Kapitel: 5 Benchmark<br />

DBMS <strong>und</strong> die Anzahl Durchführungen. Folgendes Beispiel führt den Benchmark für das DBMS<br />

„<strong>db4o</strong>“ zwei Mal durch.<br />

benchmark.py -d <strong>db4o</strong> -n 2<br />

Abbildung 5-3: Ausführung des Benchmarks mit entsprechenden Parameter<br />

Das benchmark-Modul übernimmt zusätzlich die Zeitmessung <strong>und</strong> das Logging. Die Zeitmessung<br />

wurde vom HSR Texas Geo Database Benchmark [TexasBench] übernommen.<br />

5.2.1 Datenbanken<br />

Die beiden RDBMS „<strong>PostgreSQL</strong>“ <strong>und</strong> „<strong>SQLite</strong>“ enthalten jeweils genau die Tabelle „raindrop“ mit<br />

folgendem Aufbau.<br />

frameId nextFrameId rainfall timestamp x y<br />

1 2 -3026176 1321389385 412 103<br />

2 3 -16749278 1321448502 431 133<br />

Tabelle 5-1: Aufbau der Tabelle "raindrop" mit Beispiel Datensätze<br />

CREATE TABLE raindrop (<br />

frameId int NOT NULL,<br />

nextFrameId int NOT NULL,<br />

rainfall int NOT NULL,<br />

timestamp int NOT NULL,<br />

x int NOT NULL,<br />

y int NOT NULL<br />

)<br />

Abbildung 5-4: Struktur der Tabelle "raindrop"<br />

Das objektorientierte DBMS „<strong>db4o</strong>“ <strong>und</strong> das dokumentorientierte DBMS „<strong>MongoDB</strong>“ haben<br />

konzeptbedingt keine Tabellen. Da das DBMS „<strong>db4o</strong>“ in erster Linie nur für Java bzw. .Net<br />

Entwickler zur Verfügung steht, musste mit einer speziellen Python-Implementation namens<br />

„IronPython“ gearbeitet werden. Diese ermöglicht das Verwalten <strong>von</strong> .Net-Objekte mit „<strong>db4o</strong>“ aus<br />

einem Python-Skript. Das Abspeichern <strong>von</strong> Python-Objekte führte zum folgendem Fehler.<br />

Unexpected char '$'<br />

Abbildung 5-5: Fehler beim Abspeichern [IrPyObj]<br />

Aus diesem Gr<strong>und</strong> wurde eine .Net-Library mit dem benötigten Klasse erstellt. Nun werden<br />

Instanzen <strong>von</strong> der .Net-Klasse mit IronPython in eine „<strong>db4o</strong>“-Datenbank abgespeichert [IrPyObj].<br />

Die Struktur der Objekte, welche für das DBMS „<strong>db4o</strong>“ verwendet werden, sieht wie folgt aus.<br />

Herbst 2011 13/36

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!