Morphum Object Mapper für MongoDB (noSQL DB)

veröffentlicht am : Di, 03. 04. 2012 geändert am: Di, 03. 04. 2012

Kategorie: Computer

Schlagworte:


In der Arbeit bei holidayinsider.com nutzen wir sehr exzessiv mongoDB für die Datenhaltung. Das ist vor allem dem Umstand geschuldet, dass unsere Daten eher "flach" sind und wir keine komplexen Abhängigkeiten abbilden müssen. Wichtig war uns, eine möglichst flexible und vor allem Performance Implementierung zu realisieren.

Dazu haben wir zunächst direkt auf den Java-Treiber vom MongoDB-Team. Das hat gut funktioniert und hat auch viel Performance gebracht.

Allerdings wollten wir aus gründen der Wartbarkeit natürlich auch eine Kapsel um den Zugriff auf Mongo bauen, die uns vor allem das Object-Mapping abnehmen sollte (ähnlich Hibernate). Des weiteren ist für eine solch hoch Performance Seite unbedingt wichtig, dass wir MongoDB nicht zu sehr belasten, d.h. Anfragen nach Möglichkeit cachen.

Es gibt da momentan nur wenige Projekte, die das für Java machen, und keines von denen Unterstützt Caches in irgendeiner form. Wir mussten also selbst ran ;-)

Eine etwas erweiterte und weniger spezialisierte Form der oben Beschriebenen Kapsel für Mongo habe ich jetzt unter code.google.com/p/morphium zum Download frei gegeben. Der Name ist mit Absicht ähnlich dem Morphia-Projekt ;-) Aber im Gegensatz zu Morphia unterstützt Morphium eine Menge zusätzlicher Features:

  1. Caches - wird nur mit Annotations eingestellt, Morphium macht den Rest
  2. GUI Tools - Es gibt eine von JTable abgeleitete Klasse zur Darstellung, zum suchen und editieren von mongoDB-Objekten
  3. Security (unfertig) - ist noch nicht 100% implementiert, aber es gibt einen Security-Manager, über den der Zugriff auf einzelne Entitäten geregelt werden kann.
  4. Flexible Architektur: man kann sowohl das SuchObjekt (query) als auch den Object-Mapper selbst durch einen eigenen Ersetzen, wenn man möchte.
  5. und was uns noch so alles einfällt ;-)
Aktuell ist Morphium in der Version 0.5 verfügbar - die ist Stabil und das Mapping funktioniert 100% (mit Junit-Tests geprüft). Es fehlt vor allem noch ein SecurityManager der etwas mehr macht als nur "OK" zu sagen und einige Verbesserungen an den GUI tools. Es wird stetig weiter entwickelt (wenn auch momentan nur von mir - Hilfe ist willkommen ;-)), da ich noch einige Projekte in der Queue habe, bei denen ich Morphium einsetzen muss/werde. Des weiteren fehlen noch "Write-Concern" Einstellungen in der Entity-Annotation und das festlegen von Indices (kommt in V0.6, die Gui Verbesserungen danach)...

Noch eines ist wichtig; im Gegensatz zu anderen Mappern ist es bei Morphium nicht notwendig, die zu Mamppenden Klassen / Pakete vorher bekannt zu machen - das erfolgt lazy (ebenso die Index-Generierung etc).

Schaut es euch mal an, es ist schon recht weit fortgeschritten (auch wenn 0.5 noch eine ziemlich kleine Versionsnummer ist)...

Viel Spass beim rumprobieren...

erstellt Stephan Bösebeck (stephan)