IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Décisions SGBD Discussion :

Si vous maitrisez un ORM, y a-t-il des cas où vous préférez ne pas utiliser d'ORM ?


Sujet :

Décisions SGBD

  1. #1
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut Si vous maitrisez un ORM, y a-t-il des cas où vous préférez ne pas utiliser d'ORM ?
    Bonjour,

    Si vous maitrisez un ORM, y a-t-il des cas où vous préférez ne pas utiliser d'ORM, et donc de développer en SQL je pense ?

    Merci,

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Oui.
    Je préfère nettement maîtriser la partie SQL de mes programmes et je fais l'architecture de la BDD avant le programme ; pas question que ce soit l'ORM qui crée les tables !
    En plus les ORM semblent avoir la mauvaise manie de vouloir réinventer un pseudo SQL pour faire les requêtes par morceaux et il est bien plus rapide de faire la requête en SQL natif et demander à l'outil du programme qui s'interface avec le SGBD (même si c'est un ORM) de lancer les requêtes écrites en SQL natif.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    Lisez ceci : http://sqlpro.developpez.com/cours/b...s-epaisses.pdf
    Vous serez convaincu que le ORM constituent une véritable plaie en matière de performance et à long terme s’avèrent plus couteux à tous niveau (temps de codage, maintenance, performances...) C'est pourquoi on les qualifient de guerre du Vietnam !
    En sus vous pouvez avoir une bonne indication des performances catastrophiques d'un ORM an lisant cet article : http://www.ormbattle.net/
    Bref, un ORM comme nHibernate est 24 fois plus lent pour un simple INSERT que le SQL !!!

    A +

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Points : 68
    Points
    68
    Par défaut
    et oui, c'est vraiment catastrophique.

    Il y a 20 ans on programmait avec de l'IMS et du PL1 et ca dépotait severe
    Apres on a fait du Cobol avec du DB2 et du relationnel, c'etait plus lent mais ca allait encore.
    Apres on a fait du java et c'etait lent.
    Maintenant on a ajouté des ORMs et là sur des machines surpuissantes, j'ai des batchs qui tournent aux memes vitesses qu'il y a 20 ans sur des machines équivalentes à des Pentium 75 Mhz avec 8Mo de RAM.

    Il y a 4 ou 5 ans, j'avais un collegue qui vient tout fier me dire j'ai un batch qui insere 160000 lignes de données et qui fait des calculs de cumul de CA en 10 minutes...
    Super j'ai pris le meme fichier, j'ai fait un batch Cobol, ca faisait la meme chose en 38 secondes chrono...
    Vive le progres !

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    En même temps les ORM n'ont jamais été fait pour faire des pgm batch.

    Ils ont leur utilité quand on traite 1 élément (ligne), en facilité de dev.

    Par contre au delà de ça je préfère utiliser du sql.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Ils ont leur utilité quand on traite 1 élément (ligne), en facilité de dev.
    Et voilà ! Ça ne sert qu'à ça ! et encore, comme j'ai dit plus haut, c'est plus rapide d'écrire une requête SQL qu'avec le pseudo SQL saucissonné des ORM !

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Et encore, sur un applicatif tout le SQL devrait être dans des vues et procédures stockées, l'application n'appelant que ces dernières en envoyant simplement des paramètres.

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Et voilà ! Ça ne sert qu'à ça ! et encore, comme j'ai dit plus haut, c'est plus rapide d'écrire une requête SQL qu'avec le pseudo SQL saucissonné des ORM !
    Ne vous en déplaise le gain de temps pour gérer des CRUD basic n'est pas à négliger.

    Vu que vous n'avez strictement aucune requête à écrire, pas de synchronisation d'objet pour changer de couche, etc.

    Je veux bien qu'on tappe dessus, mais il faut quand même rester objectif sur les possibilités qu'offre un ORM.

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Un ORM n'est qu'un outil : il ne faut pas le rendre responsable des manquements de ceux qui l'utilisent à tort et à travers.

    Toutes les applications ne bénéficient pas d'un ORM (et même dans une application toutes les fonctionnalités) : les détracteurs ont tendance à prendre des exemples où l'intérêt d'utiliser un ORM est plus que discutable.

    Et s'il y a bien un manquement chez les vendeurs d'ORM, c'est de n'offrir aucune méthodologie qui permette de distinguer clairement les conditions "GO - NO GO".

  10. #10
    Membre éprouvé Avatar de Jester
    Inscrit en
    Septembre 2003
    Messages
    813
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 813
    Points : 1 057
    Points
    1 057
    Par défaut
    En même temps c'est un forum SGBD ...

    C'est comme proposer un language de script sur un forum C++.

    Je dirais que peut importe la technologie, ce qui compte c'est la personne qui l'utilise.

    L'ORM comme le fait de développer énormement dans le code vient des lacunes des bases de données pour gérer les développements quoiqu'en disent les évangélistes SGBD.

    Et comme les SGBD ne sont pas des plateformes de développement acceptables, on a tendance à ne les utiliser que pour le stockage. Parce que pour des consérations de gestion de projet, ça enlève une techno finalement peut compatible avec les autres (quand vous débuggez un code en Java et qu'il apelle une procédure stockée, vous ne pouvez pas entrer dans cette procédure) et surtout qu'en général personne n'a les deux compétences (SQL + le language de dev).

    J'ai vu un exemple où la majorité du code métier était en SQL et ça n'évite en rien les dérives.

  11. #11
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    J'ai vécu quelques mésaventures avec Hibernate utilisé par le framework Seam l'an dernier.
    Un exemple de ce que je disais ici plus haut : c'est plus facile en SQL pur ! Vous pouvez lire toute la discussion si ça vous intéresse pour comprendre la galère ce cette usine à gaz !
    Un autre exemple sur la soi-disant facilité apportée par l'automatisation du mapping ! Et dans la même discussion, encore un exemple concret d'une requête un peu complexe impossible à faire avec Hibernate et relativement facile à faire en SQL pur.
    Citation Envoyé par CinéPhil
    La grosse requête SQL, impressionnante en apparence par le nombre de ses jointures, je l'ai écrite en 5 minutes, débuggage des fautes de frappe compris !
    La moindre requête en java me prend des jours ! Galère !
    Je ne retrouve pas rapidement le lien mais il me semble aussi avoir remarqué que Hibernate interrogeait des tables de la BDD dont je n'avais pas besoin. Autrement dit, il complique inutilement les requêtes pour traficoter les données comme bon lui semble !

    Bref, après quelques mois de galère, j'ai redéveloppé entièrement le projet en PHP avec Zend Framework pendant ma semaine de vacances de Noël et avec des modèles plus simples et des requêtes en SQL natif.

    Pour ne pas parler que de mes mésaventures avec Hibernate, j'ai aussi vu récemment plusieurs messages de personnes qui avaient des problèmes pour faire fonctionner, ou simplement écrire, des requêtes relativement simples avec Doctrine.

    Non vraiment, jusqu'ici, je n'ai vraiment pas vu grand chose de positif aux ORM que j'ai rencontrés !

  12. #12
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    C'est pour ce genre de problème que l'on met en place un projet avec ... un architecte java.

    Je ne dirais pas le contraire qu'un orm te bride d'une certaine manière sur les possibilités de modélisations.

    Après selon le projet, ce bridage est plus ou moins critique, et le contournement peut ou non être acceptable.

    Faut pas oublier quand même que tu peux mapper des vues ... déporter les traitements de type batch / complexe dans des procStock, etc...

    Mixer les deux approches n'est pas si débile en soit il faut juste avoir une équipe qui tienne la route => laissez les traitements simple à l'orm, ensuite déporter les requêtes / objet complexe dans des vues et si vraiment nécessaire faire des traitements via proc-stock / pgm batch appelé via proc-stock.

    Fin bref, je suis assez d'accord sur l'interprétation de JeitEmgie et un peu sur celle de Jetser.

Discussions similaires

  1. Quelle méthodes d'analyse des risques utilisez-vous ?
    Par cyberzoide dans le forum Sécurité
    Réponses: 6
    Dernier message: 12/03/2014, 07h49
  2. Quelle importance accordez-vous au design des sites que vous visitez ?
    Par Janitrix dans le forum Webdesign & Ergonomie
    Réponses: 6
    Dernier message: 16/10/2007, 13h01
  3. Réponses: 8
    Dernier message: 28/07/2007, 14h43
  4. Quel CMS vous me conseillez pour créer un site sur des produits agricoles ?
    Par wadwin dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/07/2007, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo