C'è un bel po 'di cose da dire qui in generale. Venire con i benchmark è abbastanza difficile in quanto non è possibile testare realmente le prestazioni senza testare anche l'installazione di MongoDB. Quindi si può praticamente modificare e sintonizzare l'ambiente per ottenere i risultati desiderati.
Oltre a ciò è necessario distinguere tra prestazioni di lettura e scrittura. Soprattutto le scritture sono pesantemente influenzate dal WriteConcern
utilizzato. Pertanto, quello che potrebbe essere un overhead del 50% in uno scenario WriteConcern.NONE
può facilmente ridursi a meno del 5% con un WriteConcern.SAFE
.
Sì, c'è sicuramente un sovraccarico in qualsiasi implementazione ODM poiché l'Object < ->DBObject
mapping deve ispezionare l'oggetto get e impostare i valori di solito tramite reflection. Quindi, un punto cruciale per IMHO è la possibilità di collegare convertitori personalizzati codificati manualmente che potreste voler fornire per gli oggetti critici per le prestazioni. Per i dati primaverili, la semplice registrazione di una EntityInstantiator
personalizzata che fa new Person(…)
invece di lasciare che quella di default faccia la sua riflessione, la magia offre un enorme incremento delle prestazioni.
squadra La primavera dei dati ha un build istituito una performance accumulo ponderazione di un'istanza OTS MongoDB per operazioni di scrittura contro diversi WriteConcern
s, e la lettura attraverso il driver pianura, il MongoTemplate
e il repository di astrazione. I numeri devono essere presi con un pizzico di sale perché a volte mostrano che i repository leggono i dati più velocemente dei modelli che hanno influenzato dall'infrastruttura in qualche modo poiché è praticamente un livello sopra il modello ma non lo fa t davvero aggiungere qualsiasi cache.
fonte
2012-05-16 08:04:38
La "R" in ORM non sta per "relazionale"? – duffymo
Sì, il suo supporto per l'Object/Relational Mapping, tipicamente utilizzato con database relazionali ma genericamente può essere utilizzato con qualsiasi tipo di database. – mtariq
@duffymo in questo caso Morphia in realtà * fa * relazioni tra le collezioni. Alcuni dei wrapper Ruby hanno caratteristiche simili. –