Question

Je me demande si Rails peut gérer les types d'agrégations complexes nécessaires à une application financière, et en particulier si le gestionnaire de périphérique de gestion peut les gérer efficacement. Dans une application financière pour laquelle je pense utiliser cela, il est nécessaire de générer beaucoup de rapports de données financières détaillées, agrégées de différentes manières. Sans support dans l'ORM de Rails, j'aurais besoin d'écrire directement en SQL. Mais je crains qu’une fois que cela commence, d’autres parties de Rails risquent de ne pas fonctionner aussi bien et qu’en conséquence, je pourrais utiliser surtout Rails pour ses itinéraires et très peu d’autres. Est-ce une préoccupation valable ou suis-je inquiet inutilement?

Était-ce utile?

La solution

Les limitations d'ActiveRecord sont l'une des raisons pour lesquelles j'ai eu du mal à utiliser Rails dans un environnement scientifique. Vous voudrez peut-être essayer d'autres solutions ORM Ruby qui facilitent un peu le travail avec une base de données existante:

En fin de compte, même si ORM vous éloigne de SQL, il est donc possible qu’aucune d’entre elles ne convienne.

Autres conseils

Cette question illustre un problème de RoR qui a été assez largement discuté - son inconfort relatif face aux exigences difficiles de la cartographie de base de données. (C'est vraiment le modèle ActiveRecord où les difficultés se situent.) Il aime décomposer des requêtes complexes en requêtes plus simples qui correspondent plus étroitement au modèle AR, que vous connaissez probablement déjà comme une abstraction relativement légère sur les tables, avec des relations simples basées par exemple sur. type un à plusieurs assertions.

Je dirais donc que vous serez plus à l'aise si vous acceptez vous-même SQL et que vous laissez ensuite RoR gérer les éléments de non-persistance.

Ce n’est pas un dilemme limité à RoR. La plupart des outils de modélisation relationnelle-objet présentent les mêmes questions.

(Note de bas de page: j'ai presque utilisé l'abréviation ORM, mais il existe un autre ORM qui gère par coïncidence ces types de conception conceptuelle de base de données et de problèmes d'abstration: le modèle de rôle d'objet.)

Il est possible que Rails ne soit pas une plate-forme appropriée pour cette application. OU vous pouvez envisager d’utiliser ActiveRecord par rapport aux vues de votre base de données. Agrégez vos données dans vos vues, puis utilisez la gem 'rails_sql_views' pour les traiter comme des modèles ordinaires. (Je n'ai jamais utilisé cela, donc je ne sais pas si cela fonctionne bien dans la pratique.)

Lien: rails_sql_views

Modifier: Lors d'une inspection plus poussée, vous n'aurez peut-être même pas besoin de cette gemme, ni d'aucune autre configuration spéciale pour interroger simplement des vues.

La raison pour laquelle j'aime l'enregistrement actif est qu'il vous permet de parcourir l'abstraction. Je n'ai pas encore rencontré une situation que je ne pouvais pas gérer avec AR. Je suis sûr qu'il peut y avoir des exemples extrêmement ésotériques, mais une meilleure question serait de donner un exemple du type de requête que vous voulez faire et de laisser quelqu'un vous montrer comment le faire dans AR.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top