Pregunta

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 manejarlos de manera efectiva. En una aplicación financiera para la que estoy pensando usar esto, es necesario hacer muchos informes de datos financieros detallados, agregados de varias maneras. Sin soporte en el ORM de Rails, necesitaría escribir SQL directo. Pero me preocupa que una vez que comience esto, otras partes de Rails pueden no funcionar tan bien y que, como resultado, pueda terminar usando Rails principalmente para sus rutas y muy poco más. ¿Es una preocupación válida o me estoy preocupando innecesariamente?

¿Fue útil?

Solución

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 consultar los ORM de Ruby alternativos que hacen que sea un poco más fácil trabajar con una base de datos heredada:

Finalmente, aunque los ORM por diseño lo alejan de SQL, es posible que ninguno de ellos se ajuste bien.

Otros consejos

Esta pregunta ilustra un problema de RoR que se discute bastante ampliamente: su relativa incomodidad con los difíciles requisitos de mapeo de la base de datos. (es realmente el patrón ActiveRecord donde residen las dificultades). Le gusta descomponer consultas complejas en otras más simples que se ajusten más al modelo AR, que probablemente ya sepa que es una abstracción relativamente ligera sobre las tablas, con relaciones simples basadas en, p. aserciones de tipo uno a muchos.

Entonces diría que se sentirá más cómodo si acepta el deber de SQL usted mismo y luego deja que RoR maneje las partes de no 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 utilicé la abreviatura ORM, pero hay otro ORM que casualmente maneja específicamente estos tipos de diseño conceptual de bases de datos y problemas de abstracción bastante bien: modelado de roles de objetos).

Es posible que Rails no sea una plataforma adecuada para esta aplicación. O podría considerar el uso de ActiveRecord contra las 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 en la práctica).

Enlace: rails_sql_views

Editar: en una inspección más profunda, es posible que ni siquiera necesite ninguna gema o cualquier otra configuración especial para simplemente consultar las vistas.

La razón por la que me gusta el registro activo es que le permite examinar la abstracción. Todavía tengo que encontrarme con 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top