H2DB Umstieg auf 2.3.x #347
Replies: 8 comments 20 replies
-
PS: Ähnliche Probleme gab es wohl auch schon früher. Siehe |
Beta Was this translation helpful? Give feedback.
-
Wie "vorwärtskompatibel" ist die 1.4.199?
Ich habe jetzt einfach mal drauf los geschrieben, ohne dass ich mich mit dem Code schon intensiv auseinandergesetzt hätte. Das kommt erst, wenn ich vollständig nach JVerein migriert bin. |
Beta Was this translation helpful? Give feedback.
-
Nachdem wir jetzt schon wieder ein Problem bei der Migration mit der H2DB v.1.4.199 haben, siehe #660, genauso wie das letzte mal nach 2.8.22, sollten wir und wirklich dringend überlegen wie wir da weiter machen. Entweder nehmen wir die v.1.4.196 rein oder wir steigen doch auf eine aktuelle Version um, zumindest in JVerein. Das Problem ist halt die fehlende Migration. Ich könnte mir einen möglichen Weg so vorstellen.
Der Umstieg würde dann so ausschauen:
Was haltet ihr davon? Wenn wir das machen, könnten wir uns die Arbeit etwas aufteilen und z.B. parallel schon den 4.0.0 Branch zum testen erstellen. |
Beta Was this translation helpful? Give feedback.
-
Kann mir einer sagen ob es möglich ist die neu H2DB version nur in JVerein zu verwenden oder muss man die dann in Jameica austauschen? |
Beta Was this translation helpful? Give feedback.
-
Nach den Fixes für Diagnose Export und Import habe ich es geschafft die neueste Version h2-2.3.232 zu verwenden. Die Datentypen in der DB schauen etwas anders aus. Integer war früher Länge 10 und BIGINT Länge 19, jetzt sind es 32 und 64. Die TINYINT sind jetzt BOOLEAN, VARCHAR ist jetzt CHARACTER VARYING Offen wäre jetzt noch:
|
Beta Was this translation helpful? Give feedback.
-
@willuhn, hallo Olaf, Wo ich mich aber nicht auskenne ist, ob es möglich ist die neue Version nur bei JVerein zu verwenden und Hibiscus bleibt bei der alten Version, oder müsste dann auch Hibiscus umstellen? Und wenn Hibiscus auch umsteigen müsste, wäre das überhaupt aus deiner Sicht etwas was du unterstützen würdest. |
Beta Was this translation helpful? Give feedback.
-
Mit der 1.4.200 tritt das Problem bei der Migration von 2.8.21 nach 2.8.22 auch auf. |
Beta Was this translation helpful? Give feedback.
-
Ich habe unter https://github.com/willuhn/h2database einen Fork der H2-Datenbank erstellt. Dort drin findet sich ein Branch 1.4.199, in dem ich das Package "org.h2" umbenannt habe in "org.h14199". Mit diesem Branch habe ich eine "h2-1.4.199-fork.jar" erzeugt. In Jameica (ab morgen im Nightly-Build) gibt es jetzt im Ordner "lib/h2" die folgende Struktur: migration-h2/enabled/h2-1.4.199-fork.jar (mein Fork von 1.4.199 mit umbenanntem Package) Mit dem Parameter
(Default=false) in .jameica/cfg/de.willuhn.jameica.system.Config.properties kann konfiguriert werden, ob entweder wie gehabt die "h2-1.4.199.jar" geladen wird oder h2-2.3.232.jar+h2-1.4.199-fork.jar Für den Moment müsst ihr nichts in JVerein tun. Dennoch hat man in Jameica im Nightly-Build ab morgen die Option, den neuen Treiber zu laden. Achtung! Das Aktivieren von "migration-h2=true" wirkt sich auf alle Plugins in der Jameica-Instanz aus - also ggf. auch andere Plugins, die H2 verwenden, die Migration aber noch nicht berücksichtigen. Sobald das aktiviert ist, findet sich der alte H2-Treiber 1.4.199 nicht mehr in der Klasse "org.h2.Driver" sondern "org.h14199.Driver". Wenn man "org.h2.Driver" lädt, wird dann die neue Version 2.3.232 geladen. Damit es dann nicht zu Fehlern kommt, weil versucht werden würde, eine alte Datenbank mit dem neuen Treiber zu laden, habe ich die DBSupport-Klasse für H2 in Hibiscus mit diesem Commit willuhn/hibiscus@e67f817 angepasst. Im Wesentlichen macht das folgendes:
Effekt:
Die nächsten Schritte wären dann:
Zusammenfassung: Das bis jetzt umgesetzten genannten Änderungen sind erstmal nur die Grundlage, damit innerhalb einer Instanz sowohl der alte als auch der neue H2-Treiber parallel geladen sein kann und damit eine sanfte Migration grundsätzlich möglich wird, bei der der User nichts weiter berücksichtigen muss sondern irgendwann nur einen "Jetzt migrieren"-Button drücken muss. |
Beta Was this translation helpful? Give feedback.
-
Wegen der aktuellen Probleme mit der H2DB v.1.4.199 möchte ich eine Disskussion über einen Umstieg auf v2.3.x starten. Mir ist bewusst, dass es von v1 auf v2 keine direkte Migration gibt und darum die Entscheidung schwierig ist.
Nun zu meinen Gründen:
Ich habe hier nochmals nachgeforscht und folgendes festgestellt:
Ich habe kurz einmal einen Test mit der 2.0.206 gemacht. Diese hat noch das DB Format v2 welches noch vom aktuellen Dbeaver unterstützt wird.
Das Ergebnis für das Starten ohne DB und Anlegen einer neuen DB:
Dann habe ich eine bestehende v1 DB per Skript migriert:
Für mich zeigen sich jetzt einige Fragen die zu klären sind wenn wir wirklich umsteigen wollen:
Bei den ersten drei Alternativen stellt sich auch die Frage wie die User informiert werden. Ein automatischen Update sollte da wohl nicht passieren.
Die automatische Migration wäre natürlich das beste für die Anwender.
Ich freue mich auf weitere Anregungen zu diesem Thema.
Beta Was this translation helpful? Give feedback.
All reactions