De l'importance d'une petite collation…

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] De l'importance d'une petite collation…

    Bonjour à tous,
    Je suis actuellement en train de tester Joomla 4 via une installation locale sous MAMP PRO.
    Dans l'idéal, j'aimerais paramétrer les choses à peu près proprement.
    En jetant un œil aux infos systèmes, je note que "Interclassement de la base de données" est réglé sur "utf8mb4_unicode_ci" (ça, c'est moi qui l'ai défini en créant la BDD) tandis que "Collation de la connexion à la base de données" est sur "utf8mb4_general_ci".
    Étant une quiche en BDD, je ne sais pas (du tout) à quoi correspond ce terme de collation (l'heure de l'apéro approche, mais je subodore que ça n'a aucun lien).
    Y a t'il un intérêt à ce que ces 2 paramètres aient le même réglage, ou ça n'a aucune incidence ?
    Désolé, j'ai bien conscience que ma question semblera très naïve à certains, mais puisqu'il paraît qu'il n'y a pas de questions idiotes…
    Merci d'avance pour vos retours

  • #2
    Hello,

    Désolé pas de joomlapero en vue malheureusement avec les collations... ! Mais bref, ta question est loin d'être idiote.

    Sur developpez.com, on donne la définition suivante :


    collation : encore en usage dans l’aviation ou les métiers de l’urgence (pompiers, police…) ce terme désigne le fait de retransmettre une information dans sa voix pour faire comprendre à celui qui vous l’a communiqué que vous avez parfaitement compris, en reprenant presque mot à mot le terme du propos. Par exemple, lorsque le contrôle aérien ordonne au pilote d’un avion « AFR77FW, alignez vous piste 36 gauche et attendez » ce dernier doit répondre, par exemple cela « Alignons piste 36 gauche et attendons AFR77FW« . Ce terme est très ancien, car les moines copistes, ces photocopieurs d’avant la révolution Gutenberg, collationnaient les grimoires…
    En matière de données informatique, la collation est donc la propriété d’une donnée littérale a être interprétée d’une manière spécifique en tenant compte de différents paramètres, par exemple la casse, les accents ou le jeu de caractère.
    On donne aussi le terme interclassement pour éviter de dire collation mais c'est la même chose ! Donc quand tu écris Interclassement sur "utf8mb4_unicode_ci", cela signifie que la base de données sera automatiquement encodée avec le jeu de caractère UTF8.

    L'interclassement utf8mb4_unicode_ci correspond à des règles basées sur l'Unicode officiel qui trient avec précision dans un large éventail de langues car le système doit aussi bien gérer les langues latines que les langues cyrilliques ou asiatiques y compris les emojis

    Dans le fichier base.sql utilisé lors dans le package complet de joomla 4 (repertoire installation/sql/mysql )
    La première table installé est celle des "assets" et défini de la façon suivante :

    Code:
    CREATE TABLE IF NOT EXISTS `#__assets` (
    `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',
    `parent_id` int NOT NULL DEFAULT 0 COMMENT 'Nested set parent.',
    `lft` int NOT NULL DEFAULT 0 COMMENT 'Nested set lft.',
    `rgt` int NOT NULL DEFAULT 0 COMMENT 'Nested set rgt.',
    `level` int unsigned NOT NULL COMMENT 'The cached level in the nested tree.',
    `name` varchar(50) NOT NULL COMMENT 'The unique name for the asset.\n',
    `title` varchar(100) NOT NULL COMMENT 'The descriptive title for the asset.',
    `rules` varchar(5120) NOT NULL COMMENT 'JSON encoded access control.',
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_asset_name` (`name`),
    KEY `idx_lft_rgt` (`lft`,`rgt`),
    KEY `idx_parent_id` (`parent_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
    En dernière ligne, cela signifie donc que la table doit être en InnoDB utilisant le jeu de caractère utf8 avec l'interclassement ut8 selon l'unicode afin de gérer pratiquement tous les types de caractères... et si tu te pose la question de pourquoi mb4 ? c'est juste que la table de caractères utf-8 à l'origine était limité sur 3 octets et que celle-ci (utf8mb4) est codé sur 4 octets. Cet encodage a été implanté dans MySQL 5.5.3 au début de l'année 2010 et règle tous les problèmes tout en étant rétrocompatible. Il ne faut donc jamais utiliser l'utf8 mais bien utf8mb4 pour obtenir une prise en charge de l'unicode.

    C'est ainsi que je peux ecrire sans problème des emojis dans un article et ce sera bien pris en compte :




    Et sincèrement je veux bien croire que l'utf8mb4 a été écrit essentiellement pour supporter les autres langues que de voir ces emojis envahir les articles



    Dernière édition par daneel à 01/02/2022, 01h57
    Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

    Commentaire


    • #3
      Merci daneel pour cette réponse très détaillée !
      J'aime bien l'exemple de l'aviation, assez concret pour être parlant (sur un thème ma foi assez abstrait pour moi).

      Si je reviens à ma question, avoir d'un côté utf8mb4_unicode_ci et de l'autre utf8mb4_general_ci est-il OK (ie. on est en famille, c'est bon on va se comprendre correctement) ou devrais-je modifier quelque chose (ie. commençons par nous assurer qu'on parle le même langage dans 100% des cas) ?

      Commentaire


      • #4
        Normalement, tu n'as pas besoin de faire quelque chose vu qu'à l'installation, chaque table est défini avec le format (innodb), le jeu de caractère et l'interclassement donc peu importe pour l'installation de joomla.

        Pour info, utf8mb4_general_ci est une version simplifiée des règles de tri afin d'améliorer théoriquement la vitesse mais peut occasionner des erreurs probables sur des caractères particuliers comme Œ ou ldans 'utilisation de langues asiatiques ou cyrilliques. J'écrit en théorie car la différence en terme de performance n'est plus vraiment valable avec les serveurs et les processeurs de dernière génération.

        Donc en résumé, utilise uniquement utf8mb4_unicode_ci.



        Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

        Commentaire


        • #5
          Merci !
          Oui, comme dit dans mon premier message, c'est bien "interclassement : utf8mb4_unicode_ci" que je choisis toujours par défaut au moment de créer ma BDD.
          Mais qu'est-ce qui crée le paramètre "Collation de la connexion à la base de données : utf8mb4_general_ci" ? Est-ce que c'est une chose sur laquelle j'ai la main à un moment ou à un autre ?

          Commentaire


          • #6
            Envoyé par ikeda Voir le message
            Merci !
            Mais qu'est-ce qui crée le paramètre "Collation de la connexion à la base de données : utf8mb4_general_ci" ?
            Je ne connais pas les réglages sur mamp mais cela n'a pas trop d'importance... Mon explication était plus pour comprendre ces diffférents réglages.

            Par curiosité, je vérifierai tout de même le fichier my.cnf car je suppose que cela se comporte comme un serveur linux avec mysql installé.
            Vérifie la ligne collation-server si elle existe.



            Code:
            [mysqld]
            character-set-server = utf8mb4
            collation-server = utf8mb4_unicode_ci
            
            [mysql]
            default-character-set = utf8mb4
            Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

            Commentaire


            • #7
              OK bien vu : ces lignes sont bien présentes dans le fichier my.cnf de MAMP, mais commentées.
              Juste histoire de tester, j'ai modifié le template de my.cnf dans MAMP en décommentant ces lignes.
              Ce qui modifie effectivement le fichier my.cnf qui est généré dans un dossier temp (j'essaie de suivre, arf…) mais cela ne change rien aux mentions présentes dans l'admin de Joomla.

              Bon, si je comprends bien ceci n'a pas d'incidence et dans tous les cas cela dépend de la config du serveur (MAMP tant que je suis en local).
              Donc il faudrait ensuite que je modifie la config d'un hébergement au moment de mettre en ligne.
              Et tout ça pour pas grand chose.

              Ça va, j'ai bon ?

              Commentaire


              • #8
                Envoyé par ikeda Voir le message

                Ça va, j'ai bon ?
                Oui ! Je crois qu'on a fait le tour de la question

                A défaut de collation, ça mérite au moins un apéro au prochain joomladay,
                normalement cette année si tout va bien !





                Dernière édition par daneel à 01/02/2022, 20h17
                woluweb aime ceci.
                Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

                Commentaire


                • #9
                  Ouf, voilà qui me permet de finir ma journée le cœur léger !
                  Encore merci pour ton soutien sans faille
                  Santé !

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X