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

 MySQL Discussion :

Critique de MySQL !


Sujet :

MySQL

  1. #21
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    Allez... je vais vous faire dresser les cheveux sur la tête...

    Oui GROUP_CONCAT est anti-relationnelle... ET ALORS?

    Je suis d'accord l'ordre des lignes n'est pas un élément fiable, mais ce n'est pas pour autant qu'il n'existe pas! Ce n'est peut-être qu'une conséquence du système de stockage, mais tant que l'on stockera des bases de données dans des fichiers informatiques, il y aura bien un ordre!
    Prendre du recul vis à vis de la théorie, et utiliser un fait (aussi anti-relationnel soit-il) pour créer une fonction pratique est-il blâmable? Je crois que c'est simplement la différence entre le "puriste" que vous êtes et le "bricoleur" qu'est le développeur de Mysql. La théorie est là pour nous guider, pas pour nous enfermer. (ouai j'aime bien les jolies phrases qui veulent rien dire )

    Pour moi l'important c'est le résultat, pas l'idée : si l'utilisation de GROUP_CONCAT peut poser problème, alors ok, c'est une absurdité. Sinon, avouez qu'il est bien plus simple de faire un GROUP_CONCAT qu'une requête récursive!

    I love GROUP_CONCAT !! (provoc' inside )

  2. #22
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    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 814
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par -kiki- Voir le message
    Oui GROUP_CONCAT est anti-relationnelle... ET ALORS?

    Je suis d'accord l'ordre des lignes n'est pas un élément fiable, mais ce n'est pas pour autant qu'il n'existe pas!
    Euh... quel est le rapport en GROUP_CONCAT et l'ordre d'enregistrement des lignes dans la table ?

    GROUP_CONCAT est fait pour mettre dans une seule colonne de résultat les différentes valeurs d'une colonne de la table, en regroupant ces dernières selon la valeur dune ou d'un ensemble d'autres colonnes. Aucune notion d'ordre là-dedans !

    L'ordre est donné par ORDER BY !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #23
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    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 986
    Billets dans le blog
    6
    Par défaut
    Au sujet de GROUP_CONCAT....
    Vous oubliez une seule chose : la clause ORDER BY est censée faire un tri des lignes du résultat. Pas de trier les lignes AVANT de publier le résultat...

    Méditez sur le chose et dites moi quelles sont les problèmes :
    1) pour des sous requêtes imbriquées avec une telle clause
    2) pour obtenir de bonnes performances

    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/ * * * * *

  4. #24
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    GROUP_CONCAT est fait pour mettre dans une seule colonne de résultat les différentes valeurs d'une colonne de la table, en regroupant ces dernières selon la valeur dune ou d'un ensemble d'autres colonnes. Aucune notion d'ordre là-dedans
    Juste une précision, la fonction GROUP_CONCAT() peut intégrer une clause ORDER BY qui lui soit propre.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #25
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    Par défaut
    Oracle dans sa dernière version a intégré officiellement l'équivalent de GROUP_CONCAT avec LIST_AGG.

    Il est possible de créer de UDA (User Defined Aggregate) depuis la version 9i et l'équivalent de GROUP_CONCAT est sûrement une des fonctions qui a été la plus codée (difficile de nier son intérêt dans un reporting).

    Les solutions purement SQL existent depuis à peu près la 9i (récursivité, utilisation des fonctions XML...), donc c'était une bonne chose de l'implémenter nativement.

    D'ailleurs on peut obtenir la même chose chez SQL-Server avec en utilisant FOR XML PATH

    Là où je suis parfaitement d'accord avec SQLPro, c'est que cassant la théorie relationnelle, ces fonctions ne doivent servir que pour faire de la consultation de données.

  6. #26
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    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 986
    Billets dans le blog
    6
    Par défaut
    En SQL Server tu peut faire la même chose via une UDA .net. Exemples :
    http://www.insystusa.com/Blog/2009/1...Aggregate.aspx
    http://geekswithblogs.net/tonyt/articles/70274.aspx

    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/ * * * * *

  7. #27
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    GROUP_CONCAT est fait pour mettre dans une seule colonne de résultat les différentes valeurs d'une colonne de la table, en regroupant ces dernières selon la valeur dune ou d'un ensemble d'autres colonnes. Aucune notion d'ordre là-dedans
    Citation Envoyé par Maljuna Kris Voir le message
    Juste une précision, la fonction GROUP_CONCAT() peut intégrer une clause ORDER BY qui lui soit propre.
    oui et l'idée de départ était :
    -GROUP_CONCAT est stupide car anti-relationnelle
    -GROUP_CONCAT est anti-relationnelle car elle "nécessite un ordre de lecture" et que "la théorie des ensemble suppose une absence d'ordre totale dans les lignes"


    Citation Envoyé par SQLpro
    Méditez sur le chose et dites moi quelles sont les problèmes :
    1) pour des sous requêtes imbriquées avec une telle clause
    2) pour obtenir de bonnes performances
    Ok, là on est plus dans la théorie...
    j'ai le droit de faire mon chieur et dire que de toute façon je préfère les jointures aux requêtes imbriquées?
    Non?
    OK... Je médite et je reviens

  8. #28
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    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 986
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par -kiki- Voir le message
    ...
    j'ai le droit de faire mon chieur et dire que de toute façon je préfère les jointures aux requêtes imbriquées?
    Non?
    OK... Je médite et je reviens
    Vous avez le droit, mais cela ne même à rien car certaines requêtes ne peuvent pas être exprimées uniquement à base de jointures.
    C'est comme si vous disiez je préfère le vélo à la psychologie !!!

    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/ * * * * *

  9. #29
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Vous avez le droit, mais cela ne même à rien car certaines requêtes ne peuvent pas être exprimées uniquement à base de jointures.
    C'est comme si vous disiez je préfère le vélo à la psychologie !!!

    A +
    je sais, mais vue la (non) complexité de mon taff, ça m'arrive très très rarement (d'être obligé d'imbriquer).
    et de toute façon c'était juste un peu d'humour pas drôle
    j'ai l'air d'une bille à ce point pour que vous preniez ce genre de remarque au sérieux?

    en résumé je voulais dire "argument retenu. Je vais y réfléchir"

  10. #30
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Le problème de MySQL n'est pas tant la rapidité de lecture, que celle transactionnelle. En lecture il est plutôt bon. En écriture en concurrence c'est catastrophique. A plus de 5 utilisateur il plonge dramatiquement ! Alors que Oracle ou SQL Server parviennent à plusieurs milliers d'utilisateurs simultanément, sans broncher....
    A quel prix ?
    C'est clair que SQL Server explose MySQL sur a peu pret tout, mais faut voir si ca vaut vraiment le coup de le payer...

    D'ailleurs petite question, tu pense que c'est une bonne idée d'utiliser SQL Server Express Edition (2008 R2) en production ? (Sachant que la limite des 10Go et d'un seul CPU (Mais plusieurs cores...), n'est pas un problème ? C'es clair que c'est dommage de se priver du profiler mais bon...

    J'ai un petit projet qui tourne avec une base SQL Server 2008 R2 Express (environ 500.000 lignes, quelques centaines de Mo), ca tourne impec, mais c'est clair qu'il manque par exemple un programme pour pouvoir logger les requêtes SQL (Bon j'ai accès aux rapports pour avoir les requêtes les plus gourmandes en IO et CPU, ca aide déjà bien.. ;p), et aussi les programmes de maintenances automatisé manquant... C'est pas très pratique de devoir faire ça dans SSMS manuellement, mais bon ça doit être automatisable via tâches planifiées)

  11. #31
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    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 986
    Billets dans le blog
    6
    Par défaut
    A quel prix ?
    C'est clair que SQL Server explose MySQL sur a peu pret tout, mais faut voir si ca vaut vraiment le coup de le payer...
    N'oubliez jamais que MySSL est payant !
    En effet, soit il vous faut payer en mettant le code applicatif à disposition de MySQL devenu Oracle, ou si vous ne voulez pas livrer votre code, il faut payer. Impensable pour un éditeur applicatif de ne pas payer, même si certains ne respectent pas le contrat en ne payant rien à MySQL et en refusant de délivrer le code. Mais moi je me souviens du coup que Compuserve à fait avec le format d'image .GIF dont il était le propriétaire...
    A lire : http://en.wikipedia.org/wiki/Graphic...rchange_Format
    rubrique "Unisys and LZW patent enforcement" :
    In August 1999, Unisys changed the details of their licensing practice, announcing the option for owners of Billboard and Intra net Web sites to obtain licenses on payment of a one-time license fee of $5000 or $7500.[18]


    D'autre part MySQL est très limité dans beaucoup de ses fonctionnalités. Ce que j'ai appelé les fonctionnalité poudre aux yeux. Quelques exemples : indexation textuelle inutilisable (voir mon dernier livre sur SQL ou je compare les deux moteurs), le SIG (inexploitable en pratique), technique de haute disponibilité ridicules. Ainsi on voit des éditeurs se précipiter sur MySQL parce que c'est gratuit et ensuite investir très cher dans des techno complémentaires du fait des manques... Et la le bilan global devient catastrophique : ressources à multiplier par 3 ou 4, licences externes à payer très cher, complexité de maintenance et de déploiement accrues, savoir faire rare à trouveret payer pour le coup très cher... Tout cela pour du soit disant gratuit. Au moins Microsoft est cohérent et fournit un ensemble complet et suffisant d'outils dont la plupart sont intégrés directement à SQL Server...

    D'ailleurs petite question, tu pense que c'est une bonne idée d'utiliser SQL Server Express Edition (2008 R2) en production ? (Sachant que la limite des 10Go et d'un seul CPU (Mais plusieurs cores...), n'est pas un problème ? C'es clair que c'est dommage de se priver du profiler mais bon...
    Le profiler SQL est un outil client. Vous pouvez donc parfaitement l'utiliser avec SQL Server Express. Il vous suffit pour cela d'acheter une licence développement pour pouvoir utiliser tous les outils clients sur tous les serveurs SQL de votre entreprise qu'ils soient Express ou non. Or une licence développeur c'est moins de 70 € !

    J'ai plusieurs clients qui utilisent SQL Server Express en production. D'ailleurs de nombreux éditeurs proposent dans leur entrée de gamme la version Express.
    L'un de mes client héberge plusieurs dizaine de bases sur la même instance. Mais c'est vrai que le nombre des utilisateurs est faible.
    Enfin, avec la virtualisation, rien ne vous empêche de lancer 10 serveurs Windows avec chacun son SQL Server et 2 Go de RAM pour héberger
    différentes bases... Vous ne payerez donc qu'une seule licence, celle de Windows au nombre de CPU physique !!!

    J'ai un petit projet qui tourne avec une base SQL Server 2008 R2 Express (environ 500.000 lignes, quelques centaines de Mo), ca tourne impec, mais c'est clair qu'il manque par exemple un programme pour pouvoir logger les requêtes SQL (Bon j'ai accès aux rapports pour avoir les requêtes les plus gourmandes en IO et CPU, ca aide déjà bien.. ;p), et aussi les programmes de maintenances automatisé manquant... C'est pas très pratique de devoir faire ça dans SSMS manuellement, mais bon ça doit être automatisable via tâches planifiées)
    Même remarque que précédemment. Mais pour l'agent SQL, vous pouvez utiliser des tâches planifiées dans l'OS WIndows puisque Windows a son propre scheduler !

    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/ * * * * *

  12. #32
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Enfin, avec la virtualisation, rien ne vous empêche de lancer 10 serveurs Windows avec chacun son SQL Server et 2 Go de RAM pour héberger
    différentes bases... Vous ne payerez donc qu'une seule licence, celle de Windows au nombre de CPU physique !!!
    Il faut pas payer une licence Windows Server par VM ?

  13. #33
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    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 986
    Billets dans le blog
    6
    Par défaut
    Le paiement se fait par CPU physique...

    Vous pouvez donc avoir 10 VM sur une machine 4 CPU, vous ne payez que pour les 4 CPU !!!

    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/ * * * * *

Discussions similaires

  1. Critique de MySQL !
    Par SQLpro dans le forum Débuter
    Réponses: 0
    Dernier message: 21/07/2010, 11h51
  2. [Critique] Mémento MySQL de Rodolphe Rimelé
    Par Alain Defrance dans le forum Contribuez
    Réponses: 0
    Dernier message: 10/05/2009, 18h59

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