Esta es una buena pregunta, y en mi humilde opinión pueden escalar tan bien como cualquier DAL personalizado. Solo he usado nHibernate, así que me centraré solo en él y en las características que tiene, que pueden ayudar a escalar un sistema.
- Lazy Loading - Dado que admite la carga diferida, puede evitar la carga de elementos extraños. Por supuesto, debe tener cuidado con el problema Select n + 1, pero hay cosas en el sistema para evitarlo.
- Obtención ardua: hay varias formas de buscar con impaciencia los objetos que pueda necesitar, lo que le permite evitar viajes adicionales a SQL.
- Caché de segundo nivel: nHibernate tiene soporte para un caché de segundo nivel que se puede usar para aumentar la escalabilidad al reducir los viajes al DB. Hay varios proveedores de respaldo disponibles que le dan cierta flexibilidad.
- Escriba su propio SQL: en nHibernate puede llamar a procedimientos almacenados o proporcionar la consulta SQL en línea que devolverá sus entidades. Esto le permitirá usar su propio SQL cuando el sql generado no lo corte. Por ejemplo, ansioso de cargar un árbol de auto unión utilizando una consulta recursiva.
Ahora dicho esto, creo que es más fácil de ajustar inicialmente una capa DAL costumbre porque su son íntimo con su construcción y se puede ajustar con precisión ella; sin embargo, un buen ORM proporcionará muchos ganchos que le permitirán optimizar un poco. Solo necesitas pasar un tiempo aprendiéndolo.
También creo que si tiene un área de código de rendimiento crítico y no puede lograr que su ORM funcione dentro de sus requisitos, entonces puede crear su propia capa DAL para esa pequeña área de su aplicación. Si estás usando un patrón de diseño decente como un repositorio creado por una fábrica, entonces todo lo que necesita hacer es cambiar a cabo la ejecución de su repositorio
¿Qué quiere decir con escalar la persistencia/ORMs? –
jaja, esta pregunta es –
Entonces, en nuestra aplicación web el cuello de botella es la base de datos, como resultado, hasta cierto punto, nuestra lógica empresarial se basa en lo que es mejor para la base de datos. La ignorancia de la persistencia daría una capa de negocios más flexible y más rica a expensas de la base de datos. ¿Al escalar puede permitirse ser Ignorante de persistencia? – danswain