Oracle, IBM, HSQLDB, SQLite

In-Memory-Datenbanken im Vergleich

27.01.2014
Von Roland Stirnimann und Jan Ott

SolidDB von IBM

SolidDB von IBM
SolidDB von IBM

Die In-Memory-Lösung wurde 2007 von IBM aufgekauft und seither weiterentwickelt. Die aktuelle Version 6.5 von SolidDB ist für die IBM-eigene Power7-Prozessorgeneration optimiert. Neben IBMs Unix-Derivat AIX läuft die In-Memory-Datenbank auch auf anderen Plattformen wie Linux, Windows und Solaris. Verwalten lässt sich Solid DB über die gleiche SQL-Schnittstelle wie die Datenbanklösung IBM DB2. In Bezug auf Funktionsumfang und Einsatzgebiet ähnelt SolidDB stark der Oracle-Lösung TimesTen. Gegenüber Entwicklern verhält sie sich jedoch ähnlich einer DB2-Instanz. So kann "SolidDB Universal Cache" ebenfalls als Cache von Tabellen verwendet werden, die aus einer klassischen relationalen Datenbank stammen. Im Gegensatz zu TimesTen unterstützt SolidDB allerdings mehr Plattformen. Die Tabellen können aus DB2-, Microsoft-SQL-Server-, Informix-, Sybase- oder Oracle-Datenbanken stammen.

In Sachen Hochverfügbarkeit bietet SolidDB die Replikation zu einer weiteren Instanz sowie ein entsprechendes "Session Failover", falls die aktive Instanz unerwartet beendet wird. Das könnte beispielsweise dann der Fall sein, wenn die Datenbank abgestürzt ist. Anwender können darüber hin-aus in SolidDB so genannte Aging-Mechanismen nutzen, um alte oder nicht mehr verwendete Daten schnell und zuverlässig aus der In-Memory-Datenbank zu entfernen.

HSQLDB - HyperSQL Database

HSQLDB - HyperSQL Database
HSQLDB - HyperSQL Database

Die komplett in Java geschriebene In-Memory-Datenbank HSQLDB steht unter der BSD-Lizenz und ist sowohl im Open-Source-Umfeld als auch im kommerziellen Bereich weit verbreitet. Die Lösung beansprucht als komplette Installation nur 1,3 Megabyte Platz, funktioniert auf allen Java-fähigen Betriebssystemen und ist komplett kostenlos. Aufgrund des offen liegenden Sourcecodes gibt es auf dem Markt bereits eine Vielzahl unterschiedlicher Anbieter. HSQLDB wird für viele verschiedene Applikationen wie beispielsweise "OpenOffice", "Mathematica" und "InstallAnywhere" als Persistenz-Layer eingesetzt.

Als Einsatzgebiet ist der Bereich der kleinen bis mittelgroßen In-Memory-Datenbanken vorgesehen. Die Lösung kann sich hinsichtlich des Funktionsumfangs bei Weitem nicht mit Enterprise-Lösungen wie TimesTen oder SolidDB messen. Die Tabellen in HSQLDB lassen sich wahlweise als reine In-Memory-Tabellen beziehungsweise als Disk-basierende oder persistente Tabellen anlegen. Bei Letzteren werden zusätzlich drei weitere Typen unterschieden:

  • MEMORY (default): Daten/Objekte sind in Form eines SQL-Scripts auf der Festplatte gespeichert.

  • CACHED: Binäres Dateiformat auf der Festplatte. Nicht alle Daten sind im Memory geladen.

  • TEXT: Tabellendaten sind in CSV-Dateien gespeichert.

Jeder der genannten Disk-basierenden Typen garantiert bei einem Server-Absturz die Persistenz der "committed" Transaktionen. HSQLDB lässt sich entweder im so genannten In-Process- oder im "Server-Mode" betreiben. Während In-Process schneller arbeitet, bietet der Server Mode mehr Flexibilität, da auch via Netzwerk auf die Datenbank zugegriffen werden kann. Beim In-Process-Mode befinden sich die Applikation und die Datenbank im selben Speicherbereich, so dass keine Zeit durch die Latenz auf dem Netzwerk verloren geht.

Die Verwaltung der Datenbank erfolgt entweder über ein einfaches Kommandozeilen-Programm oder ein Web-basierendes Interface. Besonders zu erwähnen ist bei HSQLDB die gute Dokumentation in vielen Büchern. Dort geht es meist um die Verwendung der Datenbank im Zusammenhang mit Frameworks wie "Hibernate" oder "Spring". Die Feature-Liste von HSQLDB hebt besonders den guten SQL-Support hervor. Darüber hinaus bietet HSQLDB umfangreiche Java- beziehungsweise JDBC-Unterstützung, da die Datenbanksoftware komplett in Java geschrieben ist.