Tutorial - Datenbank mit H2 Database und SQL-Workbench/J

Montag 02 Juli 2012 um 13:44

Wie ich bereits schon mal geschrieben habe nutze ich für die Auswertung von größeren Listen, die in meinem Arbeitsbereich häufig vorkommen, eine Datenbank. Da ich aber Microsoft Access für zu schwerfällig empfinde und ich zudem auch etwas gesucht habe, dass ich für die Java-Programmierung weiter verwenden kann, bin ich auf die H2-Datenbank gestoßen. Diese bringt in ihrer Auslieferungsform bereits eine Weboberfläche mit, die sich über einen Browser nutzen lässen. Näheres ist in dem Quickstart-Tutorial auf der H2 Webseite näher beschrieben.

Ich suchte für meinen Einsatzzweck jedoch ein komfortableres Werkzeug, insbesondere etwas mit einem Syntax-Checker, der mir den SQL-Syntax farblich hervorgehoben anzeigt. Auf der Suche nach einem solchen Werkzeug bin ich auf SQL-Workbench/J gestoßen. Dieses Programm erfüllt meinen Anspruch an Minimalismus und Effektivität und ist für meine Zwecke (immer wieder kehrende vergleichbare Selektionen aus unterschiedlichen Daten) ideal. Und das Ganze sollte zudem Plattformübergreifend verwendbar sein, weil ich im Dienst Windows verwende, zu Hause und in meiner Freizeit aber nur noch Linux benutze.

Dieses Tutorial zeigt die Einrichtung und die ersten Schritte.

Welche Programme benötigt man?

Wenn Sie die Programme heruntergeladen haben, sollten sie zunächst überprüfen, ob Java bereits auf ihrem Rechner installiert ist. Unter Windows öffnen Sie das Start-Menü und geben bei "Ausführen ..." den Befehl "cmd.exe" ein. Es öffnet sich dann ein Windows - Eingabefenster. In diesen geben Sie den Befehl "java -version" ein. Wenn Java installiert ist gibt er ihnen die Version aus. Es sollte sich dabei um eine Version handeln, die mit der Nummer "1.6" beginnt. Wenn eine Meldung erscheint, die ihnen mitteilt, dass er den Befehl nicht ausführen kann, sollten Sie Java installieren. Entsprechende Informationen dazu finden sie im Internet, denn das würde diesen Kurzeinstieg hier sprengen.

Unter Linux reicht es ebenfalls in einem Terminal-Fenster den Befehl "java -version" einzugeben. Das Ergebnis sollte gleich sein.

Die Datenbank-Engine installieren

Die eigentliche Datenbank-Funktionalität befindet sich im Paket der H2 - Datenbank. Die Datenbank-Engine ist in Java geschrieben und kann daher auch in die eigene Java-Programmierungen mit eingebunden werden. Sie ist recht kompakt, belegt wenig Speicher und bietet einen sehr großen Umfang an korrekter Syntax-Unterstützung. Es ist damit auch möglich SQL-Dialekte von MySQL und Oracle nutzen. Das macht die Datenbank auch für das Prototyping interessant, wenn man im Rahmen einer Programmierung etwas zum Austesten sucht.. Die Engine reiht sich damit in die Riege der Java-Datenbanken wie Apache Derby oder HSQLDB ein. Ob sie im Vergleich "besser" ist vermag ich nicht zu sagen, weil ich mit den anderen beiden wenig, bzw. gar keine Erfahrung habe.

Bestandteil der H2 Datenbank ist ein sehr leistungsfähigen CSV-Import, mit dem man sehr schnell Listen in die Datenbank einlesen kann.

Ich habe den Platform-Independent-Download gewählt, also die Version die keinen eigenes Install-Programm mitbringt. Man entpackt ich das Archiv einfach in einem Verzeichnis. Auf meinem Linux-Rechner habe ich alle Librarys, die ich für die Programmierung nutzen kann unter dem Verzeichnis Java. Daher enpacke ich dort das im Verzeichnis befindliche Archiv in das Verzeichnis "H2" mit allen Unterverzeichnissen.

In dem Unterverzeichnis "bin" befindet sich das eigentliche Jar-Archiv, dass die Datenbank enthält.

SQL-Workbench/J als Oberfläche installieren

Vergleichbar verhält es sich mit dem Oberflächen-Programm. Auch für die Installation der SQL Workbench verwende ich das Platform-Independent-Zip. Das Programm kann ebenfalls irgendwo installiert werden, ggf. muss der Pfad angepasst werden, wenn es direkt aufrufbar sein soll. Ich installieren es unter dem Verzeichnis "opt" unter dem Hauptverzeichnis, weil es nicht über eine Linux-Paketverwaltung installiert worden ist. Wer meint, es wäre bei ihm besser unter /usr/local/bin/ aufgehoben, auch kein Problem ;-)

Nach dem Auspacken muss unter Linux noch die Datei "sqlworkbench.sh" ausführbar gemacht werden. Entweder über einen Dateimanager oder über die Kommandozeile im Terminalfenster mit dem Befehl "chmod 755 sqlworkbench.sh". Dann kann es losgehen.

Erste Schritte

Die SQL Workbench kann jetzt gestartet werden und zeigt gleich nach dem Start den Auswahldialog für eine Datenbank. Darauf gehe ich aber gleich noch ein. Schließt man das Fenster bekommt man dieses Bild.

Nach dem Start

Man sollte zunächst das Programm auf "deutsch" umstellen. Ich habe zwar mit dem englischen keine Probleme, aber manchmal sind einem die deutschen Begrifflichkeiten doch geläufiger. Das Programm ist sehr gut lokalisiert. Zum Umstellen bitte unter "Tools" den "Options..." Eintrag anklicken. Im dortigen Optionen-Dialog befinden sich div. Einstellungsmöglichkeiten. Hier ist zunächst nur die Sprache in dem Drop-Down-Feld auf Deutsch umzustellen.  Alle weiteren Einstellungsmöglichkeiten sind zunächst einmal nicht von belang.

Optionen-Dialog

Nach dem Speichern muss die Workbench geschlossen und neu gestartet werden.

Belässt man die Voreinstellungen öffnet sich nach dem Neustart wieder das Auswahlfenster für die Datenbank. Um die H2 Datenbank benutzen zu können muss der Workbench zunächst die Zugriffmöglichkeit zur Datenbank eröffnet werden. Dies erfolgt unter Java über JDBC (Java Database Connectivity). Dies ist der Zugriffsstandard unter Java, der es ermöglicht auf eine Vielzahl von Datenbanken über die gleichen Mechanismen zuzugreifen. 

Da SQL Workbench die H2 Datenbank nicht von Haus aus kennt muss man zunächst einen Treiber dafür installieren. Dieser ist Bestandteil des o.g. H2 Datenbank Downloads, man benötigt also keine weitere Software. Zur Installation jetzt bitte den Button "Treiber verwalten" anklicken, und in dem darauf erscheinenden Dialogfenster oben links den Button für einen neuen Eintrag auswählen. In dem anschließenden Auswahldialog werden einige Werte abgefragt.

Zunächst gibt man dem Treiber einen eindeutigen Namen, hier "H2 Database Engine". Neben den Feld für die zu verwendende Bibliothek gibt es einen Button mit drei Punkten, der zu einem Dateiauswahldialog führt. Über diesen Dialog wählt man das zuvor heruntergeladene Jar-Archiv der H2 Datenbank unter dem Verzeichnis "bin" aus. Bei mir in diesem Fall "/home/andreas/java/h2/bin/h2-1.3.166.jar". Ein Klick auf den darunter befindlichen Button mit der Lupe trägt automatisch in dem Feld Klassenname "org.h2.Driver" ein. 

Das darunter liegende Feld beschreibt lediglich ein Beispiel für eine sog. Datenbank-URL. Dies ist die eindeutige Kennzeichnung der jeweiligen Datenbank. Das ist erforderlich, weil wir ja mit vielen Datenbanken arbeiten können. Die Zugriffs-URL bei der H2 Datenbank sind je nach Nutzungszweck der Datenbank unterschiedlich.

Diese Seite beschreibt die Zugriffs-URLs der drei Bearbeitungsmodi Embedded, in-Memory und Server-Mode.

Der Embedded-Mode ist der Standardmodus für einen Einzel-Arbeitsplatz. In diesem Modus hat nur der jeweilige Benutzer der Datenbank exklusiven Zugriff auf die Daten. Dadurch, dass sich die Datenbank nicht um konkurrierende Zugriffe auf die gleichen Daten kümmern muss, ist dieser Modus sehr schnell. 

Noch schneller ist der in-Memory Modus. Dabei werden alle Daten der Datenbank im Speicher gehalten und gehen, wenn sie nicht gesichert werden, nach Beendigung der Bearbeitung verloren. Ich nutze diesen Modus sehr häufig, meine Listen umfassen meistens so 18.000 bis 25.000 Zeilen mit ca. 10 - 20 Datenfeldern. Diese bekomme ich bei einem nomal ausgestatteten Rechner noch problemlos in den Arbeitsspeicher. Das speichern von Daten in externe Dateien entweder über Copy-Paste in andere Programme oder über den CSV-Export gehen sehr schnell. 

Beim Servermodus muss die Datenbank zunächst exklusiv im Servermodus gestartet werden. Nach dem Start ist sie dann über die Netzwerkschnittstelle erreichbar. Wenn mehrere Menschen oder Programme mit der gleichen Datenbank arbeiten ist dies der Modus der Wahl. 

Für mich ist in diesem Tutorial jedoch nur der Embedded, bzw. in-Memory-Modus interessant, ich will Daten in der Regel aggregieren und keinen weiteren Zugriff darauf zu lassen.

Im Embedded oder in-Memory-Modus setzt sich die Zugriff-Url aus den folgenden Bestandteilen zusammen, die jeweils durch einen Doppelpunkt getrennt werden.

  • Das Schlüsselwort für den Java Zugriffstandard: "jdbc"
  • Der Name der Datenbank-Engine: "h2:
  • Der Pfad zur Datenbank mit einem eindeutigen Namen: "/pfad/zur/datenbank/name_der_Datenbank"

Das war es schon. Um hier also so eine Beispiel-URL einzutragen verwende ich "jdbc:h2:/path/to/database"

Nach dem Speichern kommt man wieder in den Verbindungsdialog zurück, in dem man jetzt eine neue Datenbank anlegen kann.

Neues Verbindungsprofil

In diesen Dialog sollten die erforderlichen Daten eingegeben werden. Um bspw. eine in-Memory Datenbank anzulegen müsste das Profil so ausgefüllt sein.

Verbindungsprofil einer in-Memory-DB

Damit ist die Datenbank-Umgebung arbeitsfertig aufgesetzt. Um jetzt mal ein paar erste Tests zu machen habe ich mir mal ein paar Testdatensätze einer typischen Newsletteranwendung generieren lassen. Die fertige CSV-Datei befindet sich hier Download Testdaten

Laden Sie sich die Datei herunter uns speichern Sie sich an einem beliebigen Ort.

Um die Datei in die Datenbank einzulesen geben sie im SQL-Fenster der Workbench den Befehl

"create table test as select * from csvread('/pfad/zur/testdatendatei.csv');

ein und führen sie den SQL-Befehl über die Schaltfläche mit dem Pfeil, die sich ganz oben links in der Button-Liste befindet, aus. 

Das wars, jetzt können sie sich die Datenbank einmal anschauen und ein wenig mit SQL herumexperimentieren. Wie ich dabei vorgehe beschreibe ich in einem weiteren Tutorial.

Best Regards ;-)

acht Kommentare

NoReply

NoReply - 31-12-’12 17:44

Einfach und schnell, vielen Dank!

Hans

Hans - 10-02-’13 09:52

Ein “neuer” Treiber ist nach meiner Erfahrung nicht notwendig. Die Treiberdefinition ist bereits integriert. Es reicht in dem vorkonfigurierten Eintrag “H2 Database” den Pfad zur .jar Datei einzutragen.

Einer oder mehrere Kommentare sind noch nicht freigeschaltet.

Schreibe einen Kommentar

required
Hier Klicken zum Verändern

Auf dieser Seite werden die Kommentare moderiert.
Das bedeutet, dass die Kommentare erst dann veröffentlicht werden, wenn sie freigeschaltet wurden.

Persönliche Informationen speichern?
Hinweis: Alle HTML-Tags außer <b> und <i> werden aus Deinem Kommentar entfernt. URLs oder Mailadressen werden automatisch umgewandelt.