Unsere Anwendung verwendet derzeit H2 als eingebettete Datenbank, und wir haben das folgende Szenario:Ist die H2-Datenbank als eingebettete Datenbank mit großen Tabellen geeignet?
Die H2 als „temporäre Datenbank“ verwendet wird. In H2 eingefügte Daten werden periodisch alle 30 Minuten von einer Anwendungsaufgabe an eine Oracle-Datenbank (die "offizielle") gesendet bzw. in diese eingefügt;
Diese "temporäre Tabelle" enthält durchschnittlich 183 Zeilen pro Stunde in einer einzelnen Tabelle.
Wir haben zwei andere große Tabellen (21 Millionen bzw. 1,5 Millionen Datensätze), die von der Hauptanwendungsaufgabe nur zum Abfragen verwendet werden. Es gibt eine weitere Anwendungsaufgabe, die diese Tabellen schrittweise von Oracle aktualisiert und in H2-Zeilen aktualisiert, die in Oracle seit der letzten Synchronisierung erstellt/aktualisiert/gelöscht wurden. Es passiert auch alle 30 Minuten.
Wir haben keine Probleme bisher für 1,5 Jahre H2 wurde mit, aber wir haben die folgende Warnung über H2 in Red Hat official documentation gefunden:
Es sollte jedoch nicht in einer Produktion verwendet werden Umgebung. Es handelt sich um eine sehr kleine, in sich geschlossene Datenquelle, die alle Standards unterstützt, die zum Testen und Erstellen von Anwendungen benötigt werden, aber für die Produktion nicht robust oder skalierbar genug ist.
Ist H2 so konzipiert und zuverlässig, dass es in Produktionsumgebungen in einem solchen Szenario verwendet werden kann?
Gibt es irgendwelche Benchmarks, die dies unterstützen? Die H2 official performance benchmark zeigt Ausführungszeiten und die Verwendung der Leistung, aber nichts über das Datenvolumen sagen.
Hallo, Dean. Danke für deine Antwort. Wir verwenden es als persistente Datenbank (Dateisystem). –
Es ist also weniger ein Heap-Problem, aber Sie werden immer noch in ein Skalierungsproblem geraten, wenn Sie über eine einzelne JVM hinaus expandieren müssen, da sie keine gemeinsame eingebettete DB teilen können. Wenn dich keine der anderen Einschränkungen betrifft, würde ich sagen, dass ich vorsichtig vorgehen muss. –
@DeanClark Wenn H2 im Speichermodus ausgeführt wird, teilt H2 JVM-Heap-Speicher für Datenspeicher? – manu