HSQLDB
# HSQLDB

HSQLDB (Hyper Structured Query Language Database) ist eine freie, vollständig in Java programmierte relationale SQL-Datenbank (RDBMS) und steht unter einer freien Lizenz nach dem Muster der BSD-Lizenz. Das Projekt bezeichnet sich selbst als „Lightweight 100 % Java SQL Database Engine“ und basiert auf Thomas Müllers nicht mehr fortgeführtem Hypersonic SQL Project.

Mit zu dem HSQL-Paket gehört neben dem Server ein SQL-Client (Database-Manager), der sowohl im Server- als auch im Standalone-Modus funktioniert. HSQLDB kann als eingebettetes Datenbanksystem in andere Applikationen integriert werden.

## Eigenschaften

In der Geschwindigkeit ist HSQLDB etwa gleichwertig zu MySQL. Die auf dem Datenträger gespeicherten Tabellentypen lassen sich im Nur-lesen-Modus betreiben, was zum Beispiel für Projekte auf CD-/DVD-Datenträgern von Vorteil ist. HSQLDB ist in OpenOffice.org und LibreOffice integriert, um eine MS-Access-ähnliche Anwendung zu bieten.

HSQLDB unterstützt große Teile der SQL-Standards 92, 99 und 2003. HSQLDB gibt es in mehreren Versionen:

* Standardversion, wie sie zum Beispiel im Application Server WildFly integriert ist
* 100 kB kleine, schnelle Version
* spezielle Versionen für PDA und Handheld

## Unterschied zu anderen Datenbanksystemen

HSQLDB unterscheidet sich dabei von anderen Datenbank-Systemen in vielerlei Hinsicht:

* Größe: hsqldb.jar ist lediglich ~1 MB groß.
* Integrierbarkeit: Das Paket bringt sowohl einen HSQL-Server mit, der SQL-Anfragen aus dem Netzwerk (per JDBC) entgegennimmt, als auch die Möglichkeit, die Datenbank vollständig ohne Server zu betreiben und damit in ein Programm zu integrieren. Die Kommunikation geht dann nur über API-Aufrufe und nicht über das Netzwerk vonstatten.
* Flexibilität: als Tabellentypen stehen folgende Arten zur Verfügung:
   * Memory only: Alle Daten werden nur im Speicher vorgehalten und nicht auf dem Datenträger gespeichert. Änderungen gehen beim Beenden des Servers (bzw. der Applikation im Standalone-Modus) verloren.
   * Logdatei-Tabellen: Alle SQL-Befehle, die die Tabellen-Daten verändern (CREATE, ALTER, INSERT, UPDATE), werden in einer großen SQL-Logdatei gespeichert. Die Logdatei wird bei jedem Start wieder abgearbeitet und dann im Speicher abgelegt.
   * gecachte Tabellen: Auf dem Datenträger gespeicherte Tabellen, die beim Start nicht komplett in den Speicher gelesen werden müssen. Die Größenbeschränkung einer Tabelle und eines Feldes liegt derzeit bei 8 TB. Das Arbeiten auf solchen Tabellen geht sehr schnell vonstatten.

## Mit HSQLDB verwandte Produkte

Der ursprüngliche Entwickler Thomas Müller arbeitet aktuell an der Open-Source-Datenbank H2 Database, welche ähnliche Ziele wie HSQLDB verfolgt.

