Performance-Vergleich von PostgreSQL, SQLite, db4o und MongoDB
Performance-Vergleich von PostgreSQL, SQLite, db4o und MongoDB
Performance-Vergleich von PostgreSQL, SQLite, db4o und MongoDB
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