|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Denis BeuriveInscription : octobre 2012 Messages : 13 ![]() |
Bonjour à tous,
Je découvre ROR depuis quelques jours, et je m’intéresse à l’abstraction de base de données. Remarque : J’ai déjà utilisé des frameworks MVC tels que ZF ou Codeignitor. J’ai vu le concept de « migration ». Je me demande si c’est bien utile. Je lis que les migrations sont utiles pour garder une trace des modifications apportées au schéma de la base. OK, mais : Citation:
Citation:
Et mon expérience de ZF m’a appris cela : Quand vous développez une grosse application, vous devez écrire de grosses requêtes avec des jointures de différents types, en utilisant des fonctions SQL... Dans ces conditions la couche d’abstraction devient un énorme boulet.
Vous vous retrouvez à écrire de longues suites d’appels de méthodes avec des options... Et vous vous dites : Citation:
Citation:
Et si vous le faites, ce ne sera pas avant 3 ou 4 ans... D’ici là, votre framework aura évolué... Et vous serez obligé de modifier le code. Et puis on ne change pas de base pour le plaisir. En général, un tel changement est motivé par un problème de fond. Ce changement s’accompagne d’autres changements... Je me pose la question de l’intérêt d’utiliser Active Record pour les gros projets. Quel retour d’expérience avez-vous ? Utilisez-vous toute l’artillerie Rails ? (les migrations...). Est-il possible de se passer d’Acive Record ? Merci, Denis |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Ingénieur développement logiciels Inscription : mai 2002 Messages : 3 762 ![]() |
Tu peux très bien utiliser un ORM et faire des jointures pour optimiser les requêtes en base, ce n'est pas incompatible
Après, c'est sûr qu'un ORM même utilisé de manière optimisée sera toujours moins performant qu'un accès "pur" à la base. Il y a aussi moyen de faire un compromis en utilisant les facilités de l'ORM pour la persistance des entités métier et la facilité de l'orienté objet, et de le "débrancher" ponctuellement pour les requêtes complexes en utilisant du SQL pur (pour aller interroger des vues ou exécuter des procédures stockées par exemple). C'est ce qu'on fait en ce moment au boulot pour une grosse appli avec Doctrine2 en PHP. Pour revenir spécifiquement au design pattern Active record, c'est mal... Quelques lectures qui détaillent pourquoi : http://stackoverflow.com/questions/1...and-propel-1-6 http://programmers.stackexchange.com...ign-principles http://misko.hevery.com/2009/05/05/t...active-record/ En résumé, le problème d'active record, c'est le couplage très fort entre les classes métier et la couche persistance. La plupart des ORM ou des couches d'accès aux données de frameworks classiques tels que Zend suivent le pattern active record parce que c'est plus simple... Mais Doctrine 2 (PHP) et SQL Alchemy (Python) sont 2 ORM à contre-courant basés sur le pattern data mapper : ils sont tous 2 très fortement inspirés par le célèbre ORM Hibernate (java) dont ils reprennent quasi tous les concepts. Je ne connais pas trop Ruby, mais à ce que j'ai vu il existe aussi un ORM en data mapper, simplement DataMapper
__________________
Tutoriels sur les UPS, e-commerce, PHP, critiques de livres... Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles. Je n'ai rien à voir avec la société www.ovh.com ! |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com