Wenn man fjorum bei sich zum Laufen bringen will, scheint zur Zeit das größte Problem die Datenbank zu sein.
Eine eingebettete DB für den Entwicklermodus würde das Problem lösen, dann braucht man nur Maven zu installieren, das Projekt clonen und kann loslegen.
Nun hatte ich an einer Stelle schon eine eingebette DB, nämlich H2, und die Ergebnisse waren nicht berauschend. Auch wenn alles irgendwie lief, war das System trotzdem hakelig und unbequem zu handeln. Nun würde ich gern einen neuen Anlauf mit ObjectDB versuchen, die als Objekt-Datenbank überhaupt kein relationales Schema braucht.
Ich stelle mir das so vor: In der Ninja-Config kann man zwischen verschiedenen Umgebungen (etwa wie Profile in Spring) unterscheiden, man könnte also “prod” auf PostgreSQL und “dev” auf ObjectDB zeigen lassen. Dann könnte man im Init-Hook von Ninja schauen, ob man im Dev-Mode ist, aber keine ObjectDB-Datei vorhanden ist, und für eine Initialisierung sorgen (z.B. mit einem Admin-Nutzer, mit dem man sich erst mal einloggen kann), ansonsten behält man seine die Daten.
Mit ObjectDB könnte auch ziemlich einfach Tests für die Services schreiben. Statt zu mocken setzt man einfach eine kleine Test-DB auf, die man am Ende wieder löscht.
Weiterhin bräuchte man auch keine Schema-Updates, wenn man kein PostgreSQL verwendet (was FlyWay oder Liquibase ziemlich überflüssig machen würde).
Und wenn ObjectDB eine gute Performance zeigen sollte, könnte man sogar überlegen, das als Option für kleinere Foren anzubieten, wenn der Hoster keine DB bereitstellt / zulässt.
Natürlich ist das nur die Theorie, keine Ahnung, ob das so funktioniert. Denkt ihr, das ist ein Versuch wert, oder hat da vielleicht schon jemand Erfahrungen mit?