NoSQL-Datenbank für My-Aktion
Worum geht es in diesem Projekt?
Die Aufgabe dieses Projekts ist es die relationale H2-Datenbank des Projekts my-aktion durch die NoSQL-Datenbank MongoDB zu ersetzen, sowie dem anpassen von my-aktion an die neue Datenbank.
Zur Umsetzung wurde das Mapping-Framework Hibernate OGM genutzt. Hibernate OGM mappt die Entities der Anwendung nicht wie Hibernate ORM, an eine relationale Datenbank sondern an eine NoSQL-Datenbank. Im Falle des Projekt also an die MongoDB-Datenbank.
Hibernate OGM ist dazu in der Lage JPQL-Queries zu übersetzen in die Sprache der jeweilig angebundenen Datenbank. Der Programmierer muss also die Abfragesprache der genutzten Datenbank nicht zwangsläufig kennen.
Aufgetretene Probleme
Aggregatfunktionen in Hibernate OGM
Da Hibernate OGM ein laufender Prozess können bislang nur manche Sprachkonstrukte von JPQL in andere Abfragesprachen übersetzt werden. Was genau übersetzt wird unterscheidet sich je nach genutzter Datenbank. Die Version für MongoDB-Datenbanken unterstützt die folgenden Teile von JPQL:
- simple comparisons using "<", "⇐", "=", ">=" and ">"
-
IS NULL
andIS NOT NULL
- the boolean operators
AND
,OR
,NOT
-
LIKE
,IN
andBETWEEN
ORDER BY
Im Projekt my-aktion wird an einer Stelle die SQL-Aggregatfunktion SUM genutzt, diese wird theoretisch nicht unterstützt konnte aber mit einem "workaround" dennoch genutzt werden. Die restlichen Queries konnten Problemlos weiter genutzt werden ohne spezielle Anpassungen vornehmen zu müssen.