ruby on rails - software - ¿El ORM de Rails limita la capacidad de realizar agregaciones?
ruby wikipedia (4)
Es posible que Rails no sea una plataforma adecuada para esta aplicación. O puede considerar usar ActiveRecord contra vistas en su base de datos. Agregue sus datos en sus vistas, luego use la gema ''rails_sql_views'' para tratarlos como modelos comunes. (Nunca he usado esto, así que no sé qué tan bien funciona esto en la práctica).
Enlace: rails_sql_views
Editar: en una inspección posterior, es posible que ni siquiera necesite esa gema, o cualquier otra configuración especial para simplemente consultar contra las vistas.
Me preocupa si Rails puede manejar los tipos de agregaciones complejas que se necesitan para una aplicación financiera y particularmente si el ORM puede manejarlas de manera efectiva. En una aplicación financiera en la que estoy pensando utilizar esto, es necesario hacer muchos informes de datos financieros detallados, agregados de varias maneras. Sin soporte en Rails ORM, necesitaría escribir SQL directo. Pero me preocupa que una vez que empiece esto, otras partes de Rails no funcionen tan bien y que, como resultado, termine usando Rails principalmente para sus rutas y muy poco más. ¿Es esto una preocupación válida o me estoy preocupando innecesariamente?
Esta pregunta ilustra un problema de RoR bastante discutido: su incomodidad relativa con los requisitos de mapeo de bases de datos difíciles. (Es realmente el patrón ActiveRecord donde se encuentran las dificultades). Le gusta descomponer las consultas complejas en más simples que se ajusten más al modelo AR, que probablemente ya sepa que es una abstracción relativamente ligera sobre tablas, con relaciones simples basadas en, por ejemplo, uno -to-many aserciones de tipo.
Así que diría que estarás más cómodo si aceptas deber SQL, y luego dejas que RoR maneje las partes que no son de persistencia.
Este no es un dilema limitado a RoR. La mayoría de las herramientas de modelado relacional de objetos presentan las mismas preguntas.
(Nota al pie: casi uso la abreviatura ORM, pero hay otro ORM que casualmente maneja específicamente estos tipos de problemas conceptuales de diseño y abstracción de bases de datos: Modelado de roles de objetos).
Las limitaciones de ActiveRecord son una de las razones por las que tuve problemas para usar Rails en un entorno científico. Es posible que desee comprobar los ORM de Ruby alternativos que hacen que sea más fácil trabajar con una base de datos heredada:
A fin de cuentas, los ORM, por diseño, lo alejan de SQL, por lo que es posible que ninguno de ellos sea adecuado.
La razón por la que me gusta el registro activo es que te permite hurgar en la abstracción. Todavía tengo que encontrarme en una situación que no podría manejar con AR. Estoy seguro de que puede haber algunos ejemplos extremadamente esotéricos, pero una mejor pregunta sería dar un ejemplo del tipo de consulta que desea hacer y dejar que alguien le muestre cómo hacerlo en AR.