Mi empresa está en el proceso de reescribir una aplicación existente desde cero. Esta aplicación, entre otras tareas, realiza complejas consultas SQL contra pedidos y datos de facturas para producir informes de ventas. Las consultas se crean dinámicamente según los criterios seleccionados por el usuario, por lo que pueden ser bastante complejos si se seleccionan muchos criterios. Actualmente, el rendimiento es decente, pero no excelente.Rendimiento de ORM (especialmente NHibernate) para consultas complejas
Ahora, para la nueva versión, nos gustaría utilizar un ORM, probablemente NHibernate porque aparentemente es el único que admite Oracle Lite (la aplicación utiliza Oracle u Oracle Lite, dependiendo de si se está ejecutando conectado o desconectado modo). Pero me preocupa el rendimiento de las consultas generadas por NHibernate. He trabajado anteriormente con otros ORM (Linq to SQL, Entity Framework), pero las consultas fueron bastante simples, por lo que no hubo problemas de rendimiento.
Por lo tanto, antes de tomar una decisión sobre el uso de un ORM o me quedo con SQL simple, me gustaría saber qué tan bien estas herramientas manejan escenarios como uniones externas, subconsultas, etc. ... ¿Cree que un ORM (especialmente NHibernate) es adecuado para su uso en el escenario de informes descrito anteriormente? ¿Debería preocuparme por el rendimiento de las consultas complejas?
Cualquier información sería muy apreciada
Algunos otros enlaces: http://fabiomaulo.blogspot.com/2009/09/why-don-choose-nhibernate.html y http: //fabiomaulo.blogspot .com/2009/08/nhibernate-perfomance-analisys.html :) –
Alex, gracias, ¡este sitio parece realmente prometedor! Ahora necesito dedicar algo de tiempo a diseccionar los resultados de las pruebas;) –
Acerca de las consultas complejas: aquí todo depende de la calidad del traductor LINQ. El traductor de NH LINQ parece completamente correcto cuando funciona. Tenga en cuenta que estas pruebas muestran lo que un ORM particular _can_traducir, pero no _how_. Las pruebas de rendimiento están diseñadas para consultas simples, por lo que no debe estudiarlas seriamente. Aunque v.g. las pruebas de búsqueda muestran alguna diferencia en la calidad de la traducción: algunos proveedores siempre usan ROWNUMBER en lugar de TOP, y esta es la razón principal por la que pierden en esta prueba. –