DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Database Zone»Relation de collation, quelle est votre traduction ?
    Database Zone

    Relation de collation, quelle est votre traduction ?

    novembre 9, 2021
    Relation de collation, quelle est votre traduction ?
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Langue Emoji.

    Lorsque les développeurs voient les infâmes points d’interrogation noirs de l’image de couverture dans leur terminal, ils frissonnent. Il y a un problème d’encodage dans le système et il est temps de plonger dans un coin sombre du développement.

    Aujourd’hui, nous aborderons les classements et les jeux de caractères dans MySQL, deux blocs de construction fondamentaux pour mieux comprendre comment votre base de données traite les caractères non ASCII. Et, comment il n’est pas.

    Que sont les classements ?

    Les classements de base de données sont des ensembles de règles différentes liées au stockage de caractères dans un moteur de stockage de base de données donné. Ils indiquent à une base de données comment trier les données dans un serveur de base de données. Sans utiliser un classement approprié, nos données seraient simplement représentées par des points d’interrogation au lieu du texte réel. Voulez-vous que toutes vos lignes soient représentées par  » ???  » panneaux? Bien sûr que non ! La seule façon de s’assurer que cela ne se produise pas est d’utiliser un classement approprié qui indiquerait à la base de données « Regardez, vous devez trier les données dans la table de base de données nommée x d’une manière qui respecte les règles des classements utf8, Latin ou autres ».

    Choisir un bon classement dans MySQL

    Il est temps de choisir une collation appropriée pour représenter vos données. Mais quelles sont vos options ? Si vous utilisez MySQL, lancez un SHOW COLLATION requête à l’intérieur de votre instance de base de données à l’aide du client Arctype SQL.

    Image d'assemblage.

    Une requête comme celle ci-dessus nous fournirait des informations sur les classements disponibles dans un moteur de stockage de base de données donné. Comme vous pouvez le voir ci-dessus, la requête ne fournit pas seulement des classements ; vous pourrez également voir des jeux de caractères donnés (les jeux de caractères sont une histoire entièrement différente, nous y reviendrons un peu plus tard), si le classement est défini par défaut dans votre moteur de gestion de base de données et s’il est compilé dans un moteur de stockage donné.

    Maintenant, voici un kicker – ni MySQL ni MariaDB ne fourniraient les langues sur lesquelles un jeu de caractères donné conviendrait pour être utilisé. Pour cela, vous devrez vous référer à la documentation MySQL ou vous fier à votre expertise en bases de données, mais en général :

    Il existe un tas d’autres cas d’angle pour l’utilisation des jeux de caractères. Par exemple, différents types de jeux de caractères occuperaient différentes quantités d’espace disque sur le disque. Si vous traitez de plus gros ensembles de données dans des bases de données MySQL, il est probablement sage de garder un œil sur les documentations sur la consommation de stockage également.

    Collations à usage général

    Si vous demandez à presque n’importe quel administrateur de base de données ou même à un développeur qui travaille avec MySQL de nos jours comment vous devez travailler avec les classements, vous obtiendrez probablement une réponse du type « choisissez un classement UTF-8 approprié ». .. Quel? Un bon classement UTF-8 ? N’y en a-t-il pas déjà un ?

    En fait, non – MySQL propose quelques classements basés sur UTF-8 parmi lesquels vous pouvez choisir. Le problème avec les classements MySQL dans ce scénario est que l’UTF-8 n’est pas vraiment considéré comme UTF-8 par MySQL. En d’autres termes, si vous choisissez d’utiliser utf8_general_ci, vous n’utilisez pas UTF-8.

    Vous voyez, l’UTF-8 de MySQL est différent du bon encodage UTF-8. C’est le cas parce que l’option basée sur UTF-8 « par défaut » dans MySQL n’offre pas une prise en charge complète d’Unicode et ne prend en charge que les caractères Unicode à 3 octets. À l’origine, UTF-8 supportait quatre octets. Pour résoudre ce problème, choisissez simplement d’utiliser utf8mb4_general_ci malgré utf8_general_ci et vous devriez être prêt à partir.

    Ces types de classements devraient être utiles à tout type de développeur ou DBA soucieux des bases de données. Comprenez l’architecture de votre base de données, et lorsque vous vous retrouvez à concevoir des schémas pour votre cas d’utilisation donné ou à transformer de petits points d’interrogation noirs en caractères lisibles, n’oubliez jamais la puissance des classements.

    Que sont les jeux de caractères et pourquoi sont-ils importants ?

    Un jeu de caractères est un ensemble de caractères autorisés à être utilisés dans la valeur d’une colonne. Alors que les classements font référence à des règles utilisées pour comparer des caractères donnés, les jeux de caractères sont des ensembles de symboles et de codages.

    Les jeux de caractères sont généralement importants car, lorsqu’ils sont combinés avec des classements, ils fournissent un affichage correct pour toutes les langues. Par exemple, le big5 jeu de caractères est livré avec le classement par défaut de big5_chinese_ci qui peut rendre possible l’utilisation des caractères chinois dans MySQL et MariaDB, le latin1 jeu de caractères est livré avec le latin1_swedish_ci collation qui peut être utilisée pour prendre en charge les caractères pertinents pour la langue suédoise, et nous pouvons utiliser un jeu de caractères connu sous le nom de « sjis » pour prendre en charge les caractères japonais. ujis_japanese_ci.

    Comment choisir un bon jeu de caractères ?

    Pour choisir un jeu de caractères, vous pouvez simplement exécuter une requête comme SHOW CHARACTER SET G; et vous devriez voir quelque chose comme ceci :

    ************************** 1. row ***************************
    Charset: big5
    Description: Big5 Traditional Chinese
    Default collation: big5_chinese_ci
    Maxlen: 2
    *************************** 2. row ***************************
    Charset: dec8
    Description: DEC West European
    Default collation: dec8_swedish_ci
    Maxlen: 1

    Cependant, il existe une autre approche. Exécutez une requête comme ceci :

    SELECT * FROM information_schema.CHARACTER_SETS ORDER BY CHARACTER_SET_NAME 

    Vous pourrez également observer tous les jeux de caractères classés par leur nom de A à Z. Voici ce que vous verrez :

    Image des résultats de la requête.

    Dans ce cas, nous pensons qu’il devrait être un peu plus facile de choisir des jeux de caractères que des classements dans MySQL car vous pouvez déjà voir que MySQL combine à la fois des jeux de caractères et des classements et vous donne également une brève description de ce qu’est un certain classement ( en d’autres termes, à quels types de langues il pourrait être pertinent, etc.)

    Pour choisir un jeu de caractères approprié, vous devez évaluer les exigences de votre projet à l’avance. Voici quelques questions :

    • Tout d’abord, vous auriez besoin de réfléchir à vos schémas de base de données : sont-ils optimisés ?
    • Une fois que vous avez approfondi vos schémas de base de données, réfléchissez aux données que vous êtes sur le point de stocker : stockez-vous des ensembles de données volumineux dans un certain moteur de stockage ?
    • De quelles données se composent vos données ? Stockez-vous des noms d’utilisateur ? Emplacements géographiques ? Noms? Noms de famille ?
    • Si vous stockez des noms ou des prénoms, dans quel pays les personnes résident-elles (cela peut également être un facteur décisif – rappelez-vous que certaines langues (par exemple, le suédois, le russe, etc.) ont des caractères uniques) ?

    Assurez-vous de prendre en compte tous les facteurs qui pourraient jouer un rôle décisif en ce qui concerne les langues, puis lancez une requête comme celle ci-dessus et choisissez judicieusement vos jeux de caractères. Bien sûr, vous pouvez toujours les changer si vous n’aimez pas quelque chose. Ci-dessous, nous allons revenir à l’ancien pratique utf8mb4 comme jeu de caractères pour notre table.

    ALTER TABLE demo_table CONVERT TO CHARACTER SET utf8mb4;

    C’est ça; une fois que vous saurez à la fois comment choisir les jeux de caractères et comment convertir votre table en un jeu de caractères donné, vous serez en mesure de résoudre même les problèmes de langue et d’encodage les plus difficiles.

    Lukas est un hacker éthique, un administrateur de base de données MySQL et un conférencier fréquent. Depuis 2014, Lukas a découvert et divulgué de manière responsable des failles de sécurité dans certains des sites Web les plus visités en Lituanie et à l’étranger, notamment la publicité, l’achat de cadeaux, les jeux, l’hébergement de sites Web ainsi que certains sites Web d’institutions gouvernementales. Lukas gère l’un des moteurs de recherche de violation de données les plus importants et les plus rapides au monde : BreachDirectory.com et blogue fréquemment à plusieurs endroits pour éduquer les gens sur la sécurité de l’information et d’autres sujets. Il dirige également son propre blog sur lukasvileikis.com.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.