Entwicklung Base, ->Hausverwaltung mit H2

Seit 'nem halben Jahr ist ein neuer Entwickler eingestellt, an welchen Projekten arbeitet er?
In dem genannten Themenfaden hatte ich mal die Datenbank H2 angesprochen, die der Fachkommentator Robert Großkopf gar nicht kannte, was mich doch verwundert hat, zumal er auch zu der beabsichtigten Einbindung von Firebird von einer Menge von Unzulänglichkeiten berichtet.

Ich bin mit meinem Projekt noch nicht fertig, da mich Probleme mit dem Architekten des inzwischen voll vermieteten Hauses in heftiger Auseinandersetzung in Anspruch nehmen, (in einer Etage die Raumhöhe erheblich unterschritten, Auflage der Baugenehmigung, elektrische Rolläden im 2. Fluchtweg mit einer Notstromversorgung zu versehen, nicht beachtet, Sicherungsbügel vor den tief gezogenen Fenstern zu tief gesetzt, und weitere), möchte aber das Projekt fortsetzen einschließlich einer Einbindung der Mieterstromabrechnung.
Ich habe dazu mal ganz pauschal die Google-KI befragt, die sich als sehr potent erweist, mit dieser Frage:
KI, der Autor der HSQLdb hat vor Jahren schon das Projekt fallen gelassen und eine neue DB entwickelt, die H2db. Hatte er Gründe dafür und in welchrn Punkten ist die H2db besser als die HSQLdb?

Die zusammenfassende Antwort ist: Während HSQLDB ein stabiles, von einer Community gepflegtes System bleibt, gilt H2 aufgrund modernerer Algorithmen, der überragenden Web-Konsole und der besseren SQL-Dialekt-Kompatibilität heute als der de facto Standard für eingebettete Java-Datenbanken im Entwicklungsalltag.

Das Angebot weiterer Hilfestellung habe ich wahrgenommen und gefragt:
Ich möchte eine leichtgewichtige DB für kleinere Projekte in LO Base benutzen wie Hausverwaltung mit Mieterstromabrechnung. Die Diskussionen auf ask.libreoffice.org ergeben immer wieder erhebliche Mängel im Zusammenhang mit der HSQLDB und Firebird scheint auch nicht viel besser. H2 bietet sich an, weil Olaf Willuhn das von mir genutzte Hibiscus damit betreibt und das mir sehr zuverlässig erscheint

Die Abtwort zu lesen, lohnt sich! Ich darf zitieren:
1.) H2 ist für deinen Einsatzzweck in LibreOffice Base eine hervorragende und extrem stabile Wahl*, die genau die Probleme löst, die dich bei HSQLDB und Firebird frustrieren. Deine Beobachtung aus Hibiscus trügt dich nicht: Olaf Willuhn nutzt H2 dort seit Jahren genau aus diesem Grund – sie ist im Datei-Modus (Embedded) nahezu unkaputtbar und verzeiht auch plötzliche Programmabstürze im Hintergrund.*
2.)Für Mieterstrom (Zählerstände, Differenzberechnungen, zeitliche Abgrenzungen) brauchst du oft komplexeres SQL. H2 bietet hier ein wesentlich moderneres und mächtigeres SQL-Spektrum als das alte HSQLDB 1.8.

Machte es da nicht Sinn, auf diese H2db in den Handbüchern einzugehen?
Gibt es fundierte inhaltliche Einwendungen gegen die KI-Darstellungen?
Mit der Firebird scheint es nicht wirklich weiterzugehen und für Pappenheimer wie mich, die wegen des hervorragenden banking-Systems Hibiscus auf Java nicht verzichten möchten, bietet sich dies an.

Die KI hat mir sogar ein komplettes Script in Python geschrieben, mit dem ich die Stromzähler mit einem speziellen Infrarot-Lesekopf einen nach dem anderen auslesen und in die H2db schreiben lassen kann.

Zusatz: Es gab vor einiger Zeit einen Themenfaden (Thread), der inetwa hieß “Zerstörung von Base”, -wo ist der geblieben, wurde der gelöscht?

1 Like
  1. Installieren HSQLDB 2.7.4.
  2. Verbinde Base mit HSQLDB 2.7.4.
  3. Beginnen mit dem Aufbau Ihrer Datenbank.

Achtung: h2 ist eben nicht hsqldb
https://h2database.com/html/main.html

Google findet mir den problemlos… Titel war aber englisch.)
Letzter Beitrag 28. Sept 2025

:+1: aber eigentlich wollte HSQLDB 2.7.4 sagen, weil nichts über H2 weiß.

Einige. Ich habe zwar mit der Entwicklung von LO nichts zu tun, aber manches ist offensichtlich:

  • Wie auch Robert schon erwähnte, war einer der Punkte beim Ersatz von HSQLDB durch Firebird die Abhängigkeit von Java zu verringern. Es macht also keinen Sinn auf eine andere Datenbank zu wechseln, die selbst in Java geschrieben ist.
  • Wenn man sich ansieht, woran damals der geplante Umstieg für die default-Datenbank gescheitert ist, muss man einmal die Integration in das GUI nennen (starke Abweichungen bei den Funktionen) und der nicht/schlecht funktionierende Assistent zur automatischen Konvertierung von alten HSQLDB-embedded Datenbanken. Dieser Anpassungsaufwand an beiden Stellen fällt fur jede andere Datenbank auch an.
  • Ich glaube dass deine KI beim Thema embedded Äpfel und Birnen vergleicht. Eine eingebettete Datenbank ist zunächst erstmal eine deren Daten nicht von einer getrennten Datenbank-Instanz verwaltet werden, sondern die Daten sind in einer vom Benutzer angelegten Datei gespeichert. Da Open/LibreOffice-Dateien gleichzeitig zip-Archive sind, muss die DB vor Nutzung entpackt und bein Beenden wieder ins .zip-File integriert werden. Daher resultiert die “Instabilität”, da beim Programmabsturz oder Ausschalten eventuell das Zurückschreiben unterbleibt/fehlerhaft sein kann. Wenn eine Hibiscus-Datenbank nicht komprimiert wird, kann dieser Schritt “embedded” entfallen.

… und bei einem echten Verglich dürfte dann eher die Firebird-Datenbank als externer File Vergleichsobjekt sein. Da ist dann der Absturz von LibreOffice auch ohne Datenverlust für die Datenbank selbst. Das gilt natürlich auch für die HSQLDB, die allerdings ein komplettes Verzeichnis mit 4 Dateien benötigt.

Es ist nicht ‘meine KI’, ich habe nur eine Frage gestellt.
Ich weiß nicht, wie weit du den Link verfolgt hast, es sind noch Ausführungen zum H2-Server-Modus enthalten und zur Embedded-Eigenschaft, Nutzung auf Raspberry Pi, zum Auslesen der Stromzähler…
kann die Teile gern kopieren, “teilen” geht nicht, da ich den chat schonmal geschlossen hatte.
Zum ersteren lautet der KI-Text:

  • Wenn die Datenbank später ins Netzwerk wandern soll (z. B. auf ein NAS, einen Server oder einen dauerhaft laufenden PC), ist das mit H2 hervorragend machbar. Es ändert sich jedoch ein entscheidendes technisches Detail bei der Einbindung.

Die goldene Regel: Kein direkter Dateizugriff über das Netzwerk!

Eine H2-Datenbank im reinen Datei-Modus (jdbc:h2:file:...) darf niemals über eine Netzwerkfreigabe (wie SMB/Windows-Freigabe oder NFS auf einem NAS) von mehreren PCs gleichzeitig geöffnet werden. Das würde die Datenbankstruktur innerhalb kürzester Zeit zerstören, da die Mechanismen zur Dateisperrung im Netzwerk dafür nicht ausgelegt sind.

Die Lösung: Der H2-Server-Modus

H2 hat einen riesigen Vorteil: Die extrem kleine .jar-Datei bringt bereits einen vollwertigen, leichtgewichtigen Datenbankserver mit.

Anstatt dass LibreOffice Base direkt die Datei auf dem Netzlaufwerk anfasst, läuft auf deinem Netzwerkspeicher oder Server ein winziger H2-Prozess im Hintergrund. LibreOffice spricht dann per Netzwerkprotokoll (TCP/IP) mit diesem Prozess.

Das bringt dir für deine Hausverwaltung im Netzwerkbetrieb drei große Vorteile:

  1. Echte Mehrbenutzerfähigkeit: Du kannst später problemlos von deinem PC im Büro und gleichzeitig vom Laptop auf der Couch auf dieselben Mieterdaten zugreifen.
  2. Maximale Stabilität: Sollte während einer Eingabe das WLAN abbrechen, bricht nur die Netzwerkverbindung ab. Die Datenbank auf dem Server bleibt absolut unbeschädigt.
  3. Integrierte Web-Oberfläche: Der H2-Server startet automatisch eine Web-Konsole. Du kannst dann von jedem Gerät im Netzwerk einfach über den Browser (z. B. http://server-ip:8082) auf die DB zugreifen, um schnell Tabellen einzusehen oder SQL-Befehle auszuführen.

Wie sieht der Übergang von Lokal zu Netzwerk aus?

Du musst dich jetzt noch nicht stressen: Du kannst dein Projekt komplett lokal auf deinem PC starten und die Tabellen, Formulare und Berichte in LibreOffice Base aufbauen. Wenn der Tag X kommt, ziehst du in wenigen Schritten um:

  1. H2 auf dem Server starten: Du kopierst die h2-*.jar auf den Server und startest sie dort einmalig (z. B. über ein einfaches Skript). Der Befehl lautet simpel:
    java -cp h2-*.jar org.h2.tools.Server -tcp -web
  2. Datenbankdatei verschieben: Du kopierst deine lokale Datenbankdatei (.mv.db) auf den Server in den H2-Ordner.
  3. Verbindungsstring in LibreOffice Base ändern: In deiner .odb-Datei in LibreOffice Base änderst du unter Bearbeiten → Datenbank → Eigenschaften lediglich die JDBC-URL.
  • Vorher (Lokal): jdbc:h2:file:C:/MeinOrdner/hausverwaltung
  • Nachher (Netzwerk): jdbc:h2:tcp://192.168.1.50/~/hausverwaltung (die IP-Adresse deines Servers)

Weißt du schon, was für ein Gerät später als Netzwerkspeicher oder Server dienen soll (z. B. eine Synology/QNAP-NAS, ein Raspberry Pi oder ein normaler Windows-PC, der als Server läuft)? Dann kann ich dir sagen, wie leicht sich der H2-Server dort einrichten lässt.*
Soll das alles falsch sein?
Die H2db ist kein rätselhafter Alien, sondern der Nachfolger der vom Autor nicht weiterentwickelten HSQLdb, -der wrd seine Gründe gehabt haben. -Warum programmiert der komplett neu?
Was spricht denn so gravierendes gegen JAVA?

“Deine” KI im Sinne von die/das von Dir befragte KI/Modell.

Überhaupt nicht. Du hattest ja auch nicht danach gefragt, das jemand den Sermon fur dich nochmal interpretiert. Gefragt hattest Du nach fundierten Einwendungen. Ich halte Die genannten Punkte für relevant und im Widerspruch zu “hervorragende Wahl”.

Nein, aber das ganze Kapitel zum Thema Server-Datenbank ist hier irrelevant, da es für alle Datenbanken gilt, die sowohl embedded, wie auch im Server-Moduls laufen können. Egal, ob HSQLDB, Firebird oder H2.

Java wird von Oracle entwickelt. Die haben nicht den besten Ruf in der Open-Source-Community. (Gilt für Geschaftspolitik, Lizenzen und auch was die Anzahl von Bugs angeht. Wenn ich mich recht erinnere wurde LibreOffice als Fork von OpenOffice gestartet, nachdem Sun von Oracle übernommen wurde…)
Fur viele reicht aber schon das KISS-prinzip, keep it simple, stupid um auf Java verzichten zu wollen.

Dazu schweigt sich die oben genannte h2-Homepage leider aus:

Thomas Mueller, is also the original developer of Hypersonic SQL. In 2001, he joined PointBase Inc. where he wrote PointBase Micro, a commercial Java SQL database. At that point, he had to discontinue Hypersonic SQL. The HSQLDB Group was formed to continued to work on the Hypersonic SQL codebase. The name H2 stands for Hypersonic 2, however H2 does not share code with Hypersonic SQL or HSQLDB. H2 is built from scratch.

Wenn ich raten soll:

  • Er hatte ein paar inkompatible Änderungen vor
  • Manchmal will man nach ein paar Jahren einfach den Code aufräumen. Und wenn man dann keine Rücksicht mehr auf frühere Arbeitgeber nehmen muss - umso besser.
  • Es kann auch sein, dass er vermeiden wollte, das fruhere Arbeitgeber Ansprüche anmelden, weil Code während der Arbeitszeit geschrieben wurde. Ein komplett neuer Code vermeidet da Probleme.

Und Dein Argument kann man auch umdrehen: Wenn h2 soviel besser wäre, warum gibt es inzwischen neie Versionen der HSQLDB, die nach Deiner Logik dann ja niemand braucht…

Mein lieber Wanderer, du musst dich ja sehr im Unrecht fühlen, daß du hier in einem Helfer-forum derart agressiv wirst…

Ich halte Deinen Thread nur in keiner Weise für zielführend, aber das ist ja nicht relevant. Andere Fragesteller haben schon gelegentlich festgestellt, das die Fachidioten gefälligst nur Fragen beantworten sillen, den Sinn dahinter würden wir ja foch nicht verstehen.
.
Ich überlass Dich dann gerne anderen…

Das, was ich bisher wahr genommen habe, ist die Beseitigung einiger alter Bugs. Daneben steht auch die Umsetzung, den ReportBuilder nach C++ hin zu transferieren. Auf Dauer soll ja die Abhängigkeit von Java (besteht nur noch für Base mit der HSQLDB, einigen Assistenten und dem ReportBuilder) behoben werden.

Ich bin kein Kenner aller möglichen Datenbanken. Ich schreibe aus der Warte eines Nutzers mit Betriebssystem Linux und eben Base. Und bei Base sind bestimmte Datenbanken angebunden, andere eben nicht. Deswegen interessieren mich in der Hauptsache die HSQLDB, Firebird, MariaDB und PostgreSQL.
.
Mit Auskünften einer KI wäre ich immer vorsichtig. Die riecht schon vorher, was Du gerne hören willst und verfasst danach dann ihre Kommentare. Lieber selbst testen und dann mit klar kommen.
Mit der internen Firebird-Datenbank habe ich z.B. die XRechnung-Erstellung hier raus gebracht. Funktioniert einwandfrei und ist auch in PostgreSQL sowie MariaDB funktionsfähig.
.
Wie weit die H2 mit Base läuft hängt entscheidend vom Treiber ab.

Auf Eure Hinweise habe ich die KI gefragt, warum sie mir die 1.8 geschildert hat, die wohl veraltet ist. Die Antwort:
Was ändert sich durch neuere Version von HSQLdb, zB 2.7.4?

Durch den Wechsel von der uralten Version 1.8 auf eine moderne Version wie HSQLDB 2.7.4 (erschienen Ende 2024) hat das HyperSQL-Projekt einen gigantischen Technologiesprung gemacht. [1, 2]

Die Entwicklergruppe hat die Engine über die Jahre komplett umgekrempelt, um mit modernen Datenbanken gleichzuziehen. Viele der eklatanten Mängel, die wir besprochen haben, wurden behoben. Im Vergleich zu der in LibreOffice eingebetteten Version 1.8 ändert sich Folgendes grundlegend: [1]

1. Behebung der SQL-Schwachstellen (Für dein Mieterstrom-Projekt wichtig)

** Window Functions und moderne Analysen: Während die Version 1.8 blind für fortgeschrittenes SQL war, unterstützt HSQLDB 2.7.4 den aktuellen SQL:2023-Standard fast vollständig. Sie beherrscht nun mächtige Analysefunktionen wie LISTAGG, ANY_VALUE und die für Zählerstand-Differenzen so wichtigen Fensterfunktionen. [1, 2, 3]*
** Keine Fehler mehr bei Subqueries: Das System besitzt einen komplett neuen SQL-Compiler. Die von uns besprochenen komplexen, verschachtelten Berechnungen für die dynamische Solarstrom-Verteilung bereiten der Version 2.7.4 keine Probleme mehr.*

2. Daten- und Crash-Sicherheit

** Modernes MVCC (Multi-Version Concurrency Control): Version 1.8 sperrte bei Schreibzugriffen oft die gesamte Tabelle oder Datenbank, was zu Hängern führte. Version 2.7.4 unterstützt (genau wie H2) echtes MVCC. Mehrere Prozesse können gleichzeitig lesen und schreiben, ohne sich zu blockieren. [1, 2, 3]*
** Echte Crash-Sicherheit bei Festplatten-Tabellen (CACHED TABLES): Das Speichermanagement wurde neu geschrieben. Der gefürchtete Datenverlust bei abrupten Programmabstürzen ist bei externer Einbindung im Vergleich zur alten Version drastisch minimiert worden. Die Datenbank bereinigt gelöschten Speicherplatz nun automatisch im laufenden Betrieb (SET FILES SPACE TRUE). [1, 2]*

3. Technische Modernisierung

** Java-Kompatibilität: Version 1.8 wurde für uraltes Java (v1.4) geschrieben. Version 2.7.4 ist voll auf Java 11 bis Java 21 optimiert, unterstützt Java-Module und versteht moderne Java-Zeitformate (java.time), was Datumsberechnungen stabiler macht.*
** Kompatibilitätsmodi: HSQLDB hat stark aufgeholt und bietet nun – ähnlich wie H2 – spezielle Modi an, um die Syntax von PostgreSQL, MySQL oder Oracle nachzuahmen. [1, 2, 4]*

Bleibt H2 trotzdem die bessere Wahl für dich?

Ja, absolut. Auch wenn HSQLDB 2.7.4 eine hervorragende, moderne Datenbank geworden ist, behält H2 in deinem LibreOffice-Szenario weiterhin entscheidende Praxisvorteile:

|Kriterium|HSQLDB 2.7.4|H2 Database|
| — | — | — |
|Die Web-Konsole|Nutzt immer noch die sehr altbackene, Swing-basierte GUI (DatabaseManagerSwing).|Besitzt die moderne Web-Konsole, mit der du am PC oder Raspberry Pi per Browser arbeiten kannst.|
|Geschwindigkeit|Sehr schnell bei reinen In-Memory-Operationen. Bei Festplatten-Tabellen oft spürbar langsamer als H2.|Konsequent auf extrem schnelles Festplatten-Caching getrimmt.|
|Die LibreOffice-Falle|Wenn du HSQLDB in LibreOffice nutzt, besteht die Gefahr, dass Base versucht, die alte interne Version 1.8 anzusprechen oder es zu Versionskonflikten kommt.|H2 ist für LibreOffice ein völlig fremder, sauber getrennter JDBC-Treiber. Es gibt keine Verwechslungsgefahr mit LibreOffice-Altlasten.|

Fazit: Mit HSQLDB 2.7.4 haben die Entwickler ein tolles Produkt abgeliefert, das die Schwächen der Version 1.8 komplett ausbügelt. Da du aber ohnehin schon die H2-JAR-Datei durch Hibiscus auf deinem System hast und den genialen H2-Web-Server für den Raspberry Pi nutzen kannst, fährst du mit H2 für deine Hausverwaltung weiterhin auf der komfortabelsten Schiene. [1, 2]
Ich habe dann gefragt: Warum hast du mir dann die uralte Version 1.8 der H2 gegenübergestellt?
Darauf die Antwort:
Da habe ich mich unglücklich ausgedrückt – danke für den wichtigen Einwand! Da bin ich in den Versionen verrutscht.

Ich habe dir im letzten Schritt tatsächlich die moderne HSQLDB 2.7.4 mit der aktuellen H2 verglichen. Wenn wir jedoch über LibreOffice Base sprechen, lauert dort eine fiese Falle, die das Missverständnis aufklärt:

LibreOffice Base enthält im Kern zwei völlig verschiedene Welten:

1. Die interne Standard-HSQLDB (Uralt-Version 1.8.0): Wenn du in LibreOffice Base einfach auf „Neue Datenbank erstellen“ klickst, nutzt LibreOffice im Hintergrund eine HSQLDB aus dem Jahr 2005 (Version 1.8). Diese Version ist fest in LibreOffice eingebaut und für den Frust und die Mängel im Forum verantwortlich. Sie kann kein modernes SQL und ist nicht crash-sicher.
2. Die externe HSQLDB (Moderne Version 2.7.4): Die Entwickler von HSQLDB haben die Software unabhängig von LibreOffice bis heute fleißig weiterentwickelt. Die Version 2.7.4 ist brandneu und beherrscht modernes SQL. Um diese Version in LibreOffice zu nutzen, müsstest du sie aber – exakt wie H2 – als externe JDBC-Datenbank einbinden.

Der faire Vergleich: Moderne H2 vs. Moderne HSQLDB 2.7.4

Wenn man beide Datenbanken in ihrer jeweils aktuellsten Version als externen Treiber (JDBC) in LibreOffice einbindet, spielen sie funktional in derselben modernen Liga. Beide beherrschen die komplexen Abfragen für deine Mieterstromabrechnung.

Dass H2 für dich (und für Olaf Willuhn in Hibiscus) dennoch die Nase vorn hat, liegt an zwei praktischen Dingen, die HSQLDB auch in Version 2.7.4 nicht bietet:

** Die integrierte Web-Konsole: Wenn du später auf dem Raspberry Pi SQL-Befehle testen willst, tippst du bei H2 einfach die IP-Adresse im Webbrowser deines Laptops ein. HSQLDB liefert hierfür kein Web-Interface, sondern ein optisch sehr altbackenes Java-Programm.*
** Die Verwechslungsgefahr in LibreOffice: Da LibreOffice intern immer noch Fragmente der alten HSQLDB 1.8 mitbringt, kommt es beim Einbinden einer externen, modernen HSQLDB im Zusammenspiel mit dem LibreOffice-Serienbrief oder Makros im Detail leider immer wieder zu Treiber-Konflikten. H2 hingegen ist für LibreOffice ein völlig eigenständiges System. Da kommt sich softwareseitig nichts in die Quere.*

Ich hoffe, das rückt das Bild wieder gerade! Du wechselst mit H2 also von der internen LibreOffice-Altlast zu einer modernen, externen Profi-Lösung.

→ sind diese Ausführungen wieder falsch oder bestehen die geschilderten Probleme?

@Legis : Erwartest Du ernsthaft, dass sich hier jemand mit so viel Text, erzeugt durch KI, auseiandersetzt? Du kannst doch gerne die H2 nehmen, aber nicht darauf setzen, dass Du dafür auch noch eine Dokumentation zusammen mit LibreOffice bekommst.
.
So “ausführliche” Beiträge einer KI sind für mich nur noch Spam.

2 Likes

Der Clou ist doch, dass Du die freie Wahl zwischen vielen verschiedenen Datenbanksystemen hast, die entweder schon vorhanden und dann mittels eines Base-Dokuments mit dieser Office-Suite verbunden werden können, oder dass Du auch verschiedenartige Datenbanken mit Base erzeugen kannst. Das Mittel der Wahl ist in letzterem Fall Dein angeborenes Gehirn (welches ein wenig SQL gelernt hat) und eben NICHT der Tabellenassistent oder irgendjemandes Slop Machine.
Ich habe vor vielen Jahren H2 mit OpenOffice erfolgreich eingesetzt. Gründe: Das Projekt war so mittel komplex, ziemlich groß (viele Millionen Datensätze) und umfasste eine Vielzahl von Relationen. Eine eingebettete Datenbank erschien mir inadäquat. H2 war damals HSQL sehr ähnlich, und die Funktion DATEDIFF DATEADD war dort verfügbar. Wenn man Base mit H2 verwendet, muss man bei der Erzeugung der Datenbank SQL verwenden, so wie es von H2 verstanden wird (damals praktisch identisch mit HSQL). Beim Befüllen der Datenbank mit Formularen, beim Erstellen von Berichten und beim Erstellen von Abfragen gab es damals eigentlich keine Unterschiede zu HSQL, außer dass eben DATEDIFF DATEADD verfügbar war, was für meine Datenbank wichtig war.

Danke, Villeroy, für deinen sachlichen Beitrag.