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ébats sur le développement - Le Best Of Discussion :

Les frameworks de persistance (ORM) sont-ils dangereux pour les performances ?


Sujet :

Débats sur le développement - Le Best Of

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut Les frameworks de persistance (ORM) sont-ils dangereux pour les performances ?
    Toutes ces histoire de framework et d'ORM sont les plus belles merdes mercatiques que l'on a fait depuis l'existence de l'informatique. Si vous voulez avoir l'assurance de ne pas finir à temps votre prijet et que ce dernier soit inexploitable lors de la montée en charge, alors allez-y, amusez vous bien avec Hibernate et les frameworks associé comme JPA...

    Voici un extrait de l'article que je suis en train d'écrire sur les dérives de ce genre d'immondices...

    6 – Pourquoi pas un ORM ?

    Bonne idée, mais mauvaise pioche… Les outils actuels de mapping relationnel objet, d’Hibernate à iBatis en passant par l’inabouti Entity Framework, possèdent tous les mêmes défauts. Malgré tous les caches qu’on leur met les performances sont divisées par un facteur important par rapport à une série d’insertions faites directement depuis le code client . Pire encore lorsque l’on compare ce que fait l’ORM par rapport à une procédure stockée. En sus les transactions durent plus longtemps car il faut se payer les temps de communications réseau entre les serveurs, ce qui augmente la durée des verrous sur les tables et diminue donc la capacité globale du système à absorber la charge, alors que c’est un des principaux argument de vente (cherchez l’erreur !). Enfin, peu de gens savent qu’une transaction applicative n’est pas l’équivalent d’une transaction de données et qu’il faut à la fois l’un et l’autre si l’on veut être rigoureux. Quant au pilotage du niveau d’isolation des transactions de données, comme les développeurs ne savent même pas de quoi il s’agit, on en constate généralement l’absence !
    Finalement les seuls arguments positifs en faveur ce ces outils sont les suivants : pour les éditeurs, cela permet de vendre de la boîte (noire…), pour les développeurs cela leurs permet de rester dans le concept objet sans jamais aller voir du côté de la base de données, les enfonçant ainsi encore un peu plus dans leurs carences.
    Quant à l’argument qui consiste à dire que la maintenabilité d’un code client est bien plus simple qu’un code relationnel, j’ose dire qu’elle est d’une évidente stupidité : avoir 3 à 4 fois moins de lignes de code en matière relationnelle qu’avec du code itératif induit mathématiquement le fait qu’il y aura proportionnellement moins d’intervention à y faire. De plus la maintenance d’un service se fait à froid, alors que dans la base c’est nativement à chaud. Bref l’argument de facilité de maintenance largement répandu, montre encore une fois l’étendu du désastre culturel : pour avoir, par manque de formation, laissé les développeurs dans l’ignorance des possibilités de codage dans un SGBDR, pour avoir parfois choisit les mauvais outils (MySQL, SQLite…) on a contourné le problème en y ajoutant des couches superflues, alambiquées et coûteuses, tant en licence, qu’en temps de développement ou en administration.

    Toon Koopelars nous donne ce graphique si pertinent (figure 2). On y voit les possibilités des SGBDR croîtrent de façon exponentielle, tandis que leur utilisation commence à décroître brusquement avec la mode d’utilisation de certains outils comme les ORM ou l’arrivée de SGBD pseudo relationnels…


    A lire sur le sujet :
    http://www.dulcian.com/Articles/Thic...ited_final.htm
    http://thehelsinkideclaration.blogsp...vc-part-2.html

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  2. #2
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Reste la question d'un ORM ou non.
    Pour pas mal d'applications où le nombre de requêtes par seconde ne justifie pas d'optimisation, utiliser un orm est une bonne solution.

    @SQLpro : tous les projets ne nécessitent pas d'optimisation à outrance (toutes les applications n'attaquent pas les bases de données sauvagement). Et on peut largement terminer dans les temps avec Hibernate, JPA, ou TopLink.

    Souvent (je te rejoins sur ce point), ces frameworks sont utilisés par défaut parce qu'aucun expert SQL ne traine dans le coin (cependant, l'utilisation d'un ORM requiert malgré tout de bonnes connaissances sur les SGBDR utilisés, et de la norme SQL), et c'est bien dommage. Mais il ne faut pas enterrer les ORM comme tu le fais, car s'ils étaient si catastrophiques que cela (encore faut-il savoir les paramétrer, et cela est un autre problème), ils ne seraient plus beaucoup utilisés et soutenus depuis longtemps (la plupart des projets sont Open Source, donc il n'y a pas de coût de licence exhubérant)...

  3. #3
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    @SQLPro,

    Certains de tes arguments se tiennent et à cause des effets de mode, il y a de mauvaises utilisations des ORM.

    Comme dit Patriarch24, tout le monde n'a pas besoin d'optimisation à outrance et ne dispose pas de DBA compétant sous la main.

    La plus grosse tare pour moi, c'est d'avoir voulu utiliser des bases de données relationnelles avec des langages objets ...

    J'aurai personnellement préféré que se développent les bases de données objets. Seulement, les bases de données relationnelles ont un tel recul historique qu'elles ont eu le temps de devenir de très bons produits ...

    Je ne dis pas qu'il faudrait les laisser tomber pour juste changer de paradigme, je dis juste que cela empêche d'autres alternatives de se développer ... (on ne peut pas reprocher les choix des décideurs vu les qualités des produits) mais le marché est verrouillé et c'est pas demain qu'on aura d'autres solutions ...

    Du coup, on a développé cette solution des ORM a cheval entre les deux, qui n'est pas plus satisfaisante du côté objet qu'elle l'est pour toi du côté base.

    Tu as une vision purement base et comme tous les experts de base de données, j'ai l'impression que tu ne veux utiliser qu'elles pour tout faire (anti-pattern du marteau en or). Si pour des questions de performance, les procédures stockées sont très adaptées, développer des traitements dans une base propriétaire, pour la portabilité, c'est une horreur ! Je ne crois pas qu'il existe de standard en la matière (et c'est malheureux) donc on lie tellement fortement les traitements à la base qu'on devient prisonnier de l'éditeur et le jour où on veut changer, on doit tout réécrire. Et c'est là que tu oublies le principal avantage des ORM (s'il ne devait en rester qu'un), c'est l'indépendance à la base de données pour pouvoir en changer ...
    Certes, je t'accorde que ce n'est pas tous les jours qu'on change mais quand on veut changer, on s'arrache les cheveux (c'est notre cas actuellement)

    Tout ce que j'espère, c'est qu'avec le cloud computing, on remettra en cause la pensée unique du SGBDR (même s'il a des avantages indéniables)

    @+

    Un lien intéressant :
    http://bret.appspot.com/entry/how-friendfeed-uses-mysql

    NB: Concernant ibatis par rapport au code client, je voudrai bien que tu me donnes des sources chiffrées car il n'est pas pour moi un ORM. C'est juste une manière d'externaliser les requêtes SQL du code et de remplir des objets avec les résultats obtenus. Je voudrai bien voir si c'est aussi désastreux que tu le dis car vu qu'on n'a plus l'indépendance à la base, son avantage serait bien mince alors ...

  4. #4
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 532
    Par défaut
    Citation Envoyé par benwit Voir le message
    La plus grosse tare pour moi, c'est d'avoir voulu utiliser des bases de données relationnelles avec des langages objets ...

    J'aurai personnellement préféré que se développent les bases de données objets. Seulement, les bases de données relationnelles ont un tel recul historique qu'elles ont eu le temps de devenir de très bons produits ...
    euuh j'ai participé à de nombreux projets avec langage objet et SGBDR.
    Dois-je conclure que mes chefs de projets ou DSI précédents étaient tous des idiots alors ?
    Quand aux bases de données objet on en parlait déjà quand j'ai commencé à bosser dans l'informatique il y a plus de 10 ans
    Mais apparemment cela n'a jamais été vraiment un grand succès.

    Citation Envoyé par benwit Voir le message
    Tout ce que j'espère, c'est qu'avec le cloud computing, on remettra en cause la pensée unique du SGBDR (même s'il a des avantages indéniables)
    1- vouloir défendre le cloud computing c'est scier la branche de l'arbre sur laquelle on est assis parce que qui s'occupera de développer et maintenir les applications et infrastructures informatiques distantes ?
    Réponse : les sociétés offshore en asie ou ailleurs.

    2-le cloud-computing c'est une technologie récente rien ne prouve que cela ait du succès techniquement , commercialement et professionellement.
    Les SGBDR cela existe depuis des dizaines d'années et c'est une solution largement éprouvée.

  5. #5
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Dois-je conclure que mes chefs de projets ou DSI précédents étaient tous des idiots alors ?
    Pourtant j'avais pris soin de bien préciser :
    on ne peut pas reprocher les choix des décideurs
    Je fais une nuance entre théorie et pratique.
    En théorie, je trouve qu'il y a un problème conceptuel à tout faire en objet puis de basculer en relationnel au moment de la persistance. C'est ça que je trouve une tare et c'est une opinion personnel.
    Après, il faut être pragmatique, et en pratique, je comprend bien les choix et c'est pour cela que j'avais apporter une nuance car je ne pense pas que ce sont des idiots. Bien au contraire, ils utilisent des solutions éprouvées.

    Citation Envoyé par Mat.M Voir le message
    Quand aux bases de données objet on en parlait déjà quand j'ai commencé à bosser dans l'informatique il y a plus de 10 ans
    Mais apparemment cela n'a jamais été vraiment un grand succès.
    Et pour cause !
    Peut être effectivement qu'il y a de vrais problèmes et qu'à temps de maturation équivalent (si c'était possible), ça resterait moins bien.
    Mon avis personnel, c'est que les SGBD ont un tel recul, ont une telle maturité qu'il est dur qu'un produit vienne les concurrencer aujourd'hui ...
    Je n'ai pas trop chercher mais il serait intéressant de savoir si ce n'est pas un succès à cause de performance (problème technique ? on en revient à la maturité) ou à cause de marketing (ce n'est pas utilisé donc on ne s'aventure pas dedans ... cercle vicieux)

    Citation Envoyé par Mat.M Voir le message
    le cloud-computing c'est une technologie récente rien ne prouve que cela ait du succès techniquement , commercialement et professionellement.
    Les SGBDR cela existe depuis des dizaines d'années et c'est une solution largement éprouvée.
    Je ne dis pas le contraire.
    Maintenant, croire que c'est LA solution adaptée à tout, je ne le pense pas.

  6. #6
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 532
    Par défaut
    Ok Benwit je n'avais pas vu la nuance

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par benwit Voir le message
    Si pour des questions de performance, les procédures stockées sont très adaptées, développer des traitements dans une base propriétaire, pour la portabilité, c'est une horreur ! Je ne crois pas qu'il existe de standard en la matière (et c'est malheureux) donc on lie tellement fortement les traitements à la base qu'on devient prisonnier de l'éditeur et le jour où on veut changer, on doit tout réécrire.
    Si le SQL est aussi normé sur les aspect procédures stockée (PSM : Persistant Stored Module). Notamment tout ce qui est gestion des variables, des exceptions, des curseurs....
    Néanmoins, beaucoup d'éditeurs se sont écartés de la norme (Oracle en particulier, SQL Server aussi).
    Mais c'est le seul moyen d'avoir des objets qui renvoient les mêmes données. Regardez le test que j'ai fait ici : http://sqlpro.developpez.com/cours/s...age=partie1#L3
    Une même requête SQL toute simple donne différents résultats en fonction des différents SGBDR ! Mais ces résultats peuvent devenir identique en masquant les différentes écritures de cette même requête au sein d'une procédure. Et c'est le seul moyen d'être compatible entre différents SGBDR !

    Donc contrairement à cette affirmation :
    Citation Envoyé par benwit Voir le message
    Et c'est là que tu oublies le principal avantage des ORM (s'il ne devait en rester qu'un), c'est l'indépendance à la base de données pour pouvoir en changer ...
    L'ORM n'apporte pas actuellement cet avantage. Il ne sert pratiquement à rien !

    Sachez cependant que ce que j'ai dit est un extrait d'un article plus complet à paraître dans la monde informatique, ou j'exprime ce vœux :
    Cependant, je crois fermement en l’avenir de l’ORM. Pas de ceux qui existent de nos jours. Mais de celui qui sera capable de titrer partie des possibilités des SGBDR. Je rêve d’un ORM capable de créer automatiquement, les vues correspondant aux objets modélisés, les procédures stockées de synthèse pour la mise à jour globale des tables relatives au mapping de l’objet au modèle relationnel, et finalement d’implémenter les déclencheurs INSTEAD OF adéquats pour assurer la correspondance entre vues et procédures … Ce n’est certes pas pour bientôt, mais c’est sans aucun doute vers cet avenir meilleur qu’il faut tendre. En attendant, c’est encore à la main que les choses se passent.
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Citation Envoyé par SQLpro
    Si le SQL est aussi normé sur les aspect procédures stockée (PSM : Persistant Stored Module). Notamment tout ce qui est gestion des variables, des exceptions, des curseurs....
    Content de l'apprendre

    Citation Envoyé par SQLpro
    (*) Néanmoins, beaucoup d'éditeurs se sont écartés de la norme (Oracle en particulier, SQL Server aussi).
    on aurait du s'en douter

    Citation Envoyé par SQLpro
    Mais c'est le seul moyen d'avoir des objets qui renvoient les mêmes données. Regardez le test que j'ai fait ici : http://sqlpro.developpez.com/cours/s...age=partie1#L3
    Une même requête SQL toute simple donne différents résultats en fonction des différents SGBDR ! Mais ces résultats peuvent devenir identique en masquant les différentes écritures de cette même requête au sein d'une procédure. Et c'est le seul moyen d'être compatible entre différents SGBDR !
    Bon d'accord et suite à ce que tu dis plus haut (*), tu n'utilises alors que ce qui est normé ?


    Citation Envoyé par SQLpro Voir le message
    L'ORM n'apporte pas actuellement cet avantage
    Citation Envoyé par jpouly
    Quand on me dit que c'est plus simple de changer de bases de données avec un ORM, je crois que c'est tout simplement un argument marketing à la c.
    Le fond de ma pensée actuelle est plutôt : Un des objectifs de l'ORM devrait permettre d'apporter une réelle indépendance.
    Je module mes propos parce que dans la pratique, ce n'est pas si transparent (requête jpa qui passe dans oracle mais pas dans mysql, attributs d'objet à renommer car "mots clés oracle", etc ...)

  9. #9
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 10
    Par défaut
    Un bien beau troll si l'en est

    Le même qui revient tous les ans dans à peu près toutes les langues mais c'est divertissant, continuez ...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 14
    Par défaut
    Citation Envoyé par Patriarch24 Voir le message
    ... s'ils étaient si catastrophiques que cela [...], ils ne seraient plus beaucoup utilisés et soutenus depuis longtemps
    Le syndrome du "si ça passe à la télé, c'est forcément un bon produit"

  11. #11
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    le syndrome de la confiance des experts ...

    EDIT : ou celui de déterrage de topic.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  12. #12
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Toutes ces histoire de framework et d'ORM sont les plus belles merdes mercatiques que l'on a fait depuis l'existence de l'informatique. Si vous voulez avoir l'assurance de ne pas finir à temps votre prijet et que ce dernier soit inexploitable lors de la montée en charge, alors allez-y, amusez vous bien avec Hibernate et les frameworks associé comme JPA...

    Voici un extrait de l'article que je suis en train d'écrire sur les dérives de ce genre d'immondices...

    6 – Pourquoi pas un ORM ?

    Bonne idée, mais mauvaise pioche… Les outils actuels de mapping relationnel objet, d’Hibernate à iBatis en passant par l’inabouti Entity Framework, possèdent tous les mêmes défauts. Malgré tous les caches qu’on leur met les performances sont divisées par un facteur important par rapport à une série d’insertions faites directement depuis le code client . Pire encore lorsque l’on compare ce que fait l’ORM par rapport à une procédure stockée. En sus les transactions durent plus longtemps car il faut se payer les temps de communications réseau entre les serveurs, ce qui augmente la durée des verrous sur les tables et diminue donc la capacité globale du système à absorber la charge, alors que c’est un des principaux argument de vente (cherchez l’erreur !). Enfin, peu de gens savent qu’une transaction applicative n’est pas l’équivalent d’une transaction de données et qu’il faut à la fois l’un et l’autre si l’on veut être rigoureux. Quant au pilotage du niveau d’isolation des transactions de données, comme les développeurs ne savent même pas de quoi il s’agit, on en constate généralement l’absence !
    Finalement les seuls arguments positifs en faveur ce ces outils sont les suivants : pour les éditeurs, cela permet de vendre de la boîte (noire…), pour les développeurs cela leurs permet de rester dans le concept objet sans jamais aller voir du côté de la base de données, les enfonçant ainsi encore un peu plus dans leurs carences.
    Quant à l’argument qui consiste à dire que la maintenabilité d’un code client est bien plus simple qu’un code relationnel, j’ose dire qu’elle est d’une évidente stupidité : avoir 3 à 4 fois moins de lignes de code en matière relationnelle qu’avec du code itératif induit mathématiquement le fait qu’il y aura proportionnellement moins d’intervention à y faire. De plus la maintenance d’un service se fait à froid, alors que dans la base c’est nativement à chaud. Bref l’argument de facilité de maintenance largement répandu, montre encore une fois l’étendu du désastre culturel : pour avoir, par manque de formation, laissé les développeurs dans l’ignorance des possibilités de codage dans un SGBDR, pour avoir parfois choisit les mauvais outils (MySQL, SQLite…) on a contourné le problème en y ajoutant des couches superflues, alambiquées et coûteuses, tant en licence, qu’en temps de développement ou en administration.

    Toon Koopelars nous donne ce graphique si pertinent (figure 2). On y voit les possibilités des SGBDR croîtrent de façon exponentielle, tandis que leur utilisation commence à décroître brusquement avec la mode d’utilisation de certains outils comme les ORM ou l’arrivée de SGBD pseudo relationnels…


    A lire sur le sujet :
    http://www.dulcian.com/Articles/Thic...ited_final.htm
    http://thehelsinkideclaration.blogsp...vc-part-2.html

    A +
    Moi ça me fait penser aux débats Assembleur->C puis C->C++ puis C++->Java.
    Regardez aussi Windows XP ou Vista par rapport à Windows 3.1 (oui je parle aux vieux là ). Quand j'ai commencé l'informatique on faisait tout avec le code sur une disquette et seule la partie devant s'exécuter était chargée dans mon monstre de 512Ko !!
    Qu'est-ce que cela peut bien faire d'écrire une requête en base avec SQL ou avec HQL ? Vous croyez que parce que vous avez écrit vous même la requête "à la main" elle est meilleure ? C'est TOTALEMENT faux. Il s'agit simplement d'une facilité d'écriture, seulement.
    La très grande majorité des requêtes SQL sont de simples requêtes avec 1 ou 2 jointures et c'est tout à fait normal avec l'approche objet. Car dans le monde objet, on charge un objet et on navigue de proche en proche dans les relations entre objets. Donc de simples requêtes du genre "donne moi les dossiers suivis par ce collaborateur". Alors à quoi cela sert d'écrire "à la main" ?
    Par contre, si on a des requêtes plus complexes dans des cas limites parce que l'on a une vraie requête "transverse" aux objets de toute manière, l'ORM ne va pas nous aider car il est là pour faire du chargement "simple" en général. Dans ces cas, où même une requête HQL pourra être faite, on peut tout à fait déclarer la requête directement en SQL "natif".

    Donc où est le problème, vraiment je ne vois ABSOLUMENT pas ?!

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ego Voir le message
    Moi ça me fait penser aux débats Assembleur->C puis C->C++ puis C++->Java.
    Regardez aussi Windows XP ou Vista par rapport à Windows 3.1 (oui je parle aux vieux là ). Quand j'ai commencé l'informatique on faisait tout avec le code sur une disquette et seule la partie devant s'exécuter était chargée dans mon monstre de 512Ko !!
    Qu'est-ce que cela peut bien faire d'écrire une requête en base avec SQL ou avec HQL ? Vous croyez que parce que vous avez écrit vous même la requête "à la main" elle est meilleure ? C'est TOTALEMENT faux. Il s'agit simplement d'une facilité d'écriture, seulement.
    La très grande majorité des requêtes SQL sont de simples requêtes avec 1 ou 2 jointures et c'est tout à fait normal avec l'approche objet. Car dans le monde objet, on charge un objet et on navigue de proche en proche dans les relations entre objets. Donc de simples requêtes du genre "donne moi les dossiers suivis par ce collaborateur". Alors à quoi cela sert d'écrire "à la main" ?
    Par contre, si on a des requêtes plus complexes dans des cas limites parce que l'on a une vraie requête "transverse" aux objets de toute manière, l'ORM ne va pas nous aider car il est là pour faire du chargement "simple" en général. Dans ces cas, où même une requête HQL pourra être faite, on peut tout à fait déclarer la requête directement en SQL "natif".

    Donc où est le problème, vraiment je ne vois ABSOLUMENT pas ?!
    Allo, ici un vieux...
    Alors, oui, avec Windows 3.1 on faisait tourner de gros programmes de 512ko (énorme !) et maintenant il ferait 5Mo...
    Quelque part, on s'en fout un peu... non ? Il est généralement admis que windows bouffe beaucoup (trop) de ressources, Linux pour la même chose serait largement plus light en mémoire...
    Enfin, je comprends ton point de vue... Les anciens ne veulent plus trop s'adapter et se tourne vers le passé en disant "ah, c'était mieux avant"...
    Ceci dit, rien que pour établir une connexion avec un serveur avec SNA, on passait quelques heures... quand ça fonctionnait... Mais une fois que ça fonctionnait, c'était du feu de dieu ! (le débat du bon et du mauvais chasseur )
    Il faut vivre avec son temps...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    ... Ceci dit, rien que pour établir une connexion avec un serveur avec SNA, on passait quelques heures... quand ça fonctionnait... Mais une fois que ça fonctionnait, c'était du feu de dieu ! (le débat du bon et du mauvais chasseur )
    Il faut vivre avec son temps...
    Puisqu'on parle de ce bon vieux Mainframe et que c'est mon domaine professionnel, je vais ajouter une modeste contibution au présent débat en citant un "gourou" en matière de SGBD sur le Mainframe (DB2 z/OS), à savoir Susan Lawson, qui sait de quoi elle parle :

    Canonical Database Architecture and DB2 Performance ... Really ?

    Sans recouper totalement l'article de SQLpro, on peut noter quand même quelques points de convergence.

    Quelques morceaux choisis :

    As with any database design, the best performance is achieved using direct access via SQL to the database objects. Getting only the data that’s needed when it’s needed is the key to achieving high performance. Introducing layered access to your data stores can negatively impact database performance. A generic data access object lends itself to generic database performance. The performance issues created by generic data access can’t be resolved by tuning the database or system resources, such as adding memory or CPU. This is solely a problem of the application.
    ...
    The key to high-performance database design is to move data-intensive processes as close to the data as possible. This allows for filtering of data to occur close to the data, and less data to be passed around and processed by other data processing layers.
    ...
    You should seriously consider the costs associated with generic design and denormalization. Consistent use of denormalization as a solution to data access costs for a generic design can slow or even halt a company’s update operations. One company that experienced this problem eventually had to abandon their entire development effort and restart with a more specifically tuned design. This occurred after investing years of development time and money. Even if they could have achieved acceptable performance, their other goal of having a flexible, accessible database (via SQL and Web applications) could never have been realized.

    ... etc ... etc ...
    Il va sans dire que je partage totalement ce point de vue ...

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Luc Orient Voir le message
    Puisqu'on parle de ce bon vieux Mainframe et que c'est mon domaine professionnel, je vais ajouter une modeste contibution au présent débat en citant un "gourou" en matière de SGBD sur le Mainframe (DB2 z/OS), à savoir Susan Lawson, qui sait de quoi elle parle :

    Canonical Database Architecture and DB2 Performance ... Really ?

    Sans recouper totalement l'article de SQLpro, on peut noter quand même quelques points de convergence.

    Quelques morceaux choisis :



    Il va sans dire que je partage totalement ce point de vue ...
    Il se pourrait que ton point de vue soit quelque peu faussé.
    Si tu travailles sur mainframe, ce n'est certainement pas sur des applications pour 100 utilisateurs. Du coup, le côté performance a un poids peut-être un peu supérieur.
    Il est certains aussi qu'avec une application plus proche du temps réel, on ne va pas s'amuser à traverser n couches...
    Ne crois-tu pas en fin de compte qu'il est plus juste (et sage) de dire que finalement, tout dépend de ce qu'on développe.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Il se pourrait que ton point de vue soit quelque peu faussé.
    Si tu travailles sur mainframe, ce n'est certainement pas sur des applications pour 100 utilisateurs. Du coup, le côté performance a un poids peut-être un peu supérieur.
    Il est certains aussi qu'avec une application plus proche du temps réel, on ne va pas s'amuser à traverser n couches...
    Certes ... ce n'est pas faux ...

    Ne crois-tu pas en fin de compte qu'il est plus juste (et sage) de dire que finalement, tout dépend de ce qu'on développe.
    Voilà une réflexion qui me semble frappée au sceau du bon sens et que je ne peux qu'approuver ... C'est d'ailleurs en partie ce qu'écrit Susan Lawson dans la conclusion de l'article que j'ai cité.

  17. #17
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Allo, ici un vieux...
    Alors, oui, avec Windows 3.1 on faisait tourner de gros programmes de 512ko (énorme !) et maintenant il ferait 5Mo...
    Quelque part, on s'en fout un peu... non ? Il est généralement admis que windows bouffe beaucoup (trop) de ressources, Linux pour la même chose serait largement plus light en mémoire...
    Enfin, je comprends ton point de vue... Les anciens ne veulent plus trop s'adapter et se tourne vers le passé en disant "ah, c'était mieux avant"...
    Ceci dit, rien que pour établir une connexion avec un serveur avec SNA, on passait quelques heures... quand ça fonctionnait... Mais une fois que ça fonctionnait, c'était du feu de dieu ! (le débat du bon et du mauvais chasseur )
    Il faut vivre avec son temps...
    Au risque de ne pas t'avoir compris, je crois que c'est toi qui n'a pas compris ma remarque. Je ne suis justement pas attaché au passé et je pense que ceux qui sont contre les ORM sont parfois des gens attachés au passé, justement.

    Donc vive l'avenir !!

  18. #18
    Invité
    Invité(e)
    Par défaut
    Au risque de ne pas t'avoir compris, je crois que c'est toi qui n'a pas compris ma remarque. Je ne suis justement pas attaché au passé et je pense que ceux qui sont contre les ORM sont parfois des gens attachés au passé, justement.

    Ce n'est pas parce que c'est une évolution qu'elle est bonne.
    Ces arguments me font penser au gens qui soutiennent les technique du "Make an web 2.0 app only with drag'n drop" ...

    Les ORM ont le gros défaut d'être une couche technologique a connaitre en plus pour le développeur : un développeur qui utilise un ORM sans connaitre SQL va droit dans le mur. Donc au final le dev doit connaitre le langage + SQL + l'ORM. Une bonne évolution n'est pas censé enlever des connaissances nécessaires ?

    Mais vous inquiétez pas les MVP et autre expert vont bientôt trouver une techno pour "faciliter" la passerelle entre l'orm et le langage ... mince ça existe deja (activerecord par exemple)... on appelle ça comment ? Un Object to Object - Relationnal Mapping ? A quand un OOOOROOOOM ?

    Je ne dit pas par la que ce sont des mauvais produits : leurs utilisation dans l'industrie est très répandu donc je n'aurais pas la prétention de dire que tout le monde se plante.

    Mon post a l'air d'un troll, mais je pense qu'il faut se souvenir de ma première phrase.

  19. #19
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Les ORM ont le gros défaut d'être une couche technologique a connaitre en plus pour le développeur : un développeur qui utilise un ORM sans connaitre SQL va droit dans le mur. Donc au final le dev doit connaitre le langage + SQL + l'ORM. Une bonne évolution n'est pas censé enlever des connaissances nécessaires ?
    Déjà, SQL doit faire partie (je l'espère) du savoir de base d'un développeur.
    Donc c'est un faux problème.
    Pour ce qui est de la couche à connaitre en plus, c'est alors valable pour tous les autres frameworks autre que ORM. On est quand même censé ne pas réinventer la roue à chaque fois, et donc si on utilise d'autres briques logicielles, la moindre des choses c'est d'apprendre à bien s'en servir, ou alors il faut changer de boulot.
    Encore un faux problème à mon sens.

  20. #20
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut
    Après plusieurs années au travail à utiliser l'architecture logicielle "classique" (Spring, Hibernate, JPA etc.), j'ai testé cette approche à la maison sur un projet personnel assez conséquent...

    Elle a un inconvénient: il faut bien connaitre SQL (pas un souci dans mon cas). Pour le reste, c'est tout simplement "une tuerie" , le plus bluffant étant l'amélioration des performances!

    Je vais tenter dans mon entreprise d'en vanter les mérites sur un projet test, et propager la bonne parole. Je sais que les résistances vont être forte, la faute aux habitudes bien ancrées et à la méconnaissance du SQL et des SGBD en général.

    Merci de m'avoir fait (re)découvrir cette approche, frappée du sceau du bon sens !

Discussions similaires

  1. Les IDE sont-ils dangereux pour les développeurs ?
    Par Cedric Chevalier dans le forum Actualités
    Réponses: 85
    Dernier message: 13/05/2014, 11h41
  2. [Lazarus] Les composants de la JVCL sont-ils utilisables ?
    Par martinus45 dans le forum Lazarus
    Réponses: 3
    Dernier message: 11/09/2009, 19h37
  3. Réponses: 30
    Dernier message: 06/09/2009, 08h17
  4. Réponses: 5
    Dernier message: 14/08/2009, 08h55
  5. pourquoi X et GCC sont ils dangereux?
    Par ranell dans le forum Sécurité
    Réponses: 13
    Dernier message: 23/11/2008, 23h13

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