2009-02-02 9 views
3

Je m'inquiète de savoir si Rails peut gérer les types d'agrégations complexes nécessaires pour une application financière et, en particulier, si l'ORM peut les gérer efficacement. Dans une application financière que je pense utiliser pour cela, il est nécessaire de faire beaucoup de rapports sur les données financières détaillées, agrégées de diverses manières. Sans support dans l'ORM Rails, j'aurais besoin d'écrire directement en SQL. Mais je suis inquiet qu'une fois que je commence ceci, d'autres parties de Rails peuvent ne pas fonctionner aussi bien et que par conséquent je pourrais finir par utiliser principalement Rails pour ses itinéraires et très peu d'autre. Est-ce une préoccupation valable ou est-ce que je m'inquiète inutilement?L'ORM Rails limite-t-il la possibilité d'effectuer des agrégations?

+1

Question joliment formulée et absolument impossible à répondre! Que craignez-vous que vous ne puissiez peut-être pas faire, avec un exemple si possible? Si ce n'est pas spécifique, soyez au moins apaisé avec la connaissance qu'AR rend SQL facilement disponible pour les situations moins banales. –

Répondre

3

Les limitations d'ActiveRecord sont l'une des raisons pour lesquelles j'ai eu des problèmes avec Rails dans un environnement scientifique. Vous pouvez vérifier autre Ruby ORM qui le rendent un peu plus facile de travailler avec une base de données existante:

En fin de compte ORM pour par la conception que vous éloignes SQL afin il est possible qu'aucun d'entre eux ne soit un bon ajustement.

3

Cette question illustre un problème de RoR qui est assez largement discuté - son inconfort relatif avec les exigences de mappage de base de données difficiles. (C'est vraiment le modèle ActiveRecord où se trouvent les difficultés.) Il aime décomposer les requêtes complexes en plus simples qui correspondent plus étroitement au modèle AR, que vous connaissez probablement déjà est une abstraction relativement légère sur les tables, avec des relations simples basées par ex. affirmations de type un-à-plusieurs. Par conséquent, je dirais que vous serez plus à l'aise si vous acceptez le devoir SQL vous-même, puis laissez RoR gérer les parties non-persistantes.

Ce n'est pas un dilemme limité à RoR. La plupart des outils Object-Relational Modeling présentent les mêmes questions.

(Note: Je presque utilisé l'ORM abréviation, mais il y a une autre ORM qui gère pure coïncidence spécifiquement ces types de problèmes de conception de base de données conceptuelles et 'abstraction de tout à fait bien. Objet de modélisation de rôle)

2

Il est possible que Rails n'est pas une plate-forme appropriée pour cette application. OU vous pourriez envisager d'utiliser ActiveRecord contre les vues de votre base de données. Agréger vos données dans vos vues, puis en utilisant la gemme 'rails_sql_views' vous pouvez les traiter comme des modèles ordinaires. (Je ne l'ai jamais utilisé, alors je ne sais pas comment cela fonctionne dans la pratique.)

Lien: rails_sql_views

Edit: Sur une inspection plus poussée, vous pourriez même pas besoin de ce petit bijou, ou toute autre configuration spéciale pour simplement interroger les vues.

1

La raison pour laquelle j'aime l'enregistrement actif, c'est qu'il vous permet de percer 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.

+0

Bonne suggestion. –