Was kostet die Verwendung von Java ORM für MongoDB, oder ist es besser, dass wir die grundlegende Treiberebene zum Lesen oder Schreiben verwenden?
Wir werden Mongo DB für eine unserer Anforderungen hinzufügen.
Es gibt einige Java ORM Mapping Tools für Java
-Morphie
-Springdaten
- andere
Morphia letzte Version wurde vor mehr als einem Jahr veröffentlicht aber Spring-Daten werden aktiv gepflegt. Welcher sollte benutzt werden, wenn ich jetzt anfangen will,
Die Verwendung von ORM verringert die Leistung, beschleunigt jedoch die Entwicklung. Es gibt einen Kompromiss hier.
Für ORM-Tools ist Morphia am stabilsten. Hier finden Sie den Vergleich zwischen Morphia und Basic Mongo Driver anhand ihrer Leistung.
Morphia scheint am besten geeignet zu sein, da es die meisten Features hat und eine aktive Community hat. Siehe diesen Link zum Vergleich: Wie machst Morphia, Mongo4j und Spring-Daten für MongoDB vergleichen?
Hier ist einiges zu erwähnen. Es ist schwierig, Benchmarks dafür zu finden, da Sie die Leistung nicht wirklich testen können, ohne auch Ihre MongoDB-Konfiguration testen zu müssen. So kann man seine Umgebung so optimieren und abstimmen, dass sie die gewünschten Ergebnisse liefert.
Darüber hinaus müssen Sie zwischen Lese- und Schreibleistung unterscheiden. Besonders Schreibvorgänge werden stark von der verwendeten WriteConcern
beeinflusst. Was also ein Overhead von 50% in einem Szenario WriteConcern.NONE
sein könnte, kann leicht mit einem WriteConcern.SAFE
auf weniger als 5% reduziert werden.
Ja, es gibt definitiv einen Overhead in jeder ODM-Implementierung, da das Objekt & lt; - & gt; DBObject
Mapping muss das Objekt get überprüfen und Werte normalerweise über Reflektion setzen. Daher ist ein entscheidender Punkt IMHO die Möglichkeit, benutzerdefinierte manuell codierte Konverter einzubinden, die Sie für die leistungskritischen Objekte bereitstellen möchten. Für Spring Data, die einfach ein benutzerdefiniertes EntityInstantiator
registrieren, das new Person(…)
tut, anstatt das Standard-Objekt seine Reflektionszauber zu nutzen, wird die Leistung enorm gesteigert.
Das Spring Data-Team hat ein Build eingerichtet, um eine Build-Gewichtungsleistung einer OTS MongoDB-Instanz für Schreibvorgänge einzurichten verschiedene WriteConcern
s und Lesen durch den Plain-Treiber, die MongoTemplate
und die Abstraktion der Repositories. Die Zahlen sind mit einem Körnchen Salz zu nehmen, da sie manchmal zeigen, dass die Repositories Daten schneller lesen als die Templates, die von der Infrastruktur beeinflusst werden müssen, da es sich um eine Ebene handelt Die Vorlage fügt jedoch kein Caching hinzu.
Tags und Links java mongodb spring-data orm morphia