1. Introduction
1.1 Importance du JSON
Dans le développement web moderne, les échanges de données sont devenus de plus en plus complexes. Le JSON (JavaScript Object Notation), en tant que format de données léger et structuré, est largement utilisé pour le transfert et le stockage de données. Depuis la version 5.7, MySQL prend en charge le type de données JSON, ce qui facilite le stockage et la manipulation du JSON directement dans la base de données.
1.2 Utilisation du JSON dans MySQL
Cet article explique tout, des bases du travail avec le JSON dans MySQL aux considérations de performance et aux cas d’utilisation pratiques. Que vous soyez débutant ou utilisateur avancé, vous acquerrez les connaissances nécessaires pour exploiter efficacement le JSON dans MySQL.
2. Qu’est‑ce que le JSON dans MySQL ?
2.1 Notions de base du JSON
Le JSON est un format simple qui structure les données sous forme de paires clé‑valeur. Il est largement utilisé dans les API web et les transferts de données, connu pour sa légèreté et sa lisibilité. Dans MySQL, le type de données JSON vous permet de stocker et de manipuler des données JSON directement dans la base.
2.2 Type de données JSON de MySQL
Le type de données JSON, introduit dans MySQL 5.7, occupe un espace disque similaire à LONGBLOB ou LONGTEXT. Pour garantir l’intégrité des données, MySQL valide le JSON lors de l’insertion, empêchant ainsi le stockage de JSON invalide.
2.3 Cas d’utilisation du JSON
Scénarios courants d’utilisation du JSON dans MySQL :
- Stockage de structures de données complexes
- Enregistrement de données brutes récupérées depuis des API
- Gestion de données avec des schémas dynamiques ou évolutifs

3. Opérations de base sur le JSON dans MySQL
3.1 Création de colonnes JSON
Pour créer une colonne destinée à stocker du JSON, spécifiez le type de données json comme suit :
CREATE TABLE json_data (
doc JSON
);
3.2 Insertion de données JSON
Pour insérer des données JSON, utilisez l’instruction INSERT. MySQL valide le format des données lors de l’insertion et renvoie une erreur si ce n’est pas du JSON valide.
INSERT INTO json_data(doc) VALUES ('{"a": {"b": ["c", "d"]}, "e": "f"}');
Vous pouvez également générer un objet JSON à partir de paires clé‑valeur avec la fonction JSON_OBJECT :
INSERT INTO json_data(doc) VALUES (JSON_OBJECT('key1', 'value1', 'key2', 'value2'));
3.3 Interrogation de données JSON
Pour interroger les données JSON insérées, utilisez la fonction JSON_EXTRACT. Cette fonction extrait des valeurs d’un objet JSON à l’aide d’un chemin spécifié.
SELECT * FROM json_data WHERE JSON_EXTRACT(doc, '$.e') = 'f';
Vous pouvez aussi utiliser l’opérateur raccourci -> :
SELECT * FROM json_data WHERE doc->'$.e' = 'f';
3.4 Mise à jour de données JSON
Pour mettre à jour des parties d’un objet JSON, utilisez la fonction JSON_SET. Elle met à jour des champs spécifiques sans écraser l’ensemble de l’objet.
UPDATE json_data SET doc = JSON_SET(doc, '$.a.b[0]', 'new_value');
4. Considérations de performance
4.1 Performance d’insertion
Lors de l’insertion de données dans des colonnes JSON, la performance est presque identique à celle d’une insertion dans des colonnes TEXT. Par exemple, l’insertion de 50 000 enregistrements montre que le JSON offre des performances comparables à celles du TEXT en termes de vitesse.
4.2 Performance de mise à jour
Lors de la mise à jour de données JSON, JSON_SET permet des mises à jour partielles, améliorant les performances puisque vous ne modifiez que les champs spécifiques au lieu d’écraser l’objet complet. Même lors de la mise à jour de 50 000 enregistrements, JSON_SET assure des mises à jour efficaces.

5. Bonnes pratiques pour l’utilisation du JSON dans MySQL
5.1 Cas d’utilisation appropriés
Le JSON est idéal pour stocker des structures de données complexes ou des données à schéma dynamique. Cependant, pour des données bien structurées, les tables relationnelles classiques sont généralement plus efficaces.
5.2 Indexation des données JSON
Dans MySQL, vous pouvez créer des index sur les colonnes JSON à l’aide de colonnes virtuelles. Cela améliore les performances des requêtes sur les données JSON.
ALTER TABLE json_data ADD COLUMN e_value VARCHAR(255) AS (doc->'$.e'), ADD INDEX (e_value);
5.3 Éviter les écueils courants
- Évitez l’utilisation excessive de colonnes JSON et exploitez les forces des bases de données relationnelles.
- Définissez des index appropriés pour garantir l’efficacité des requêtes.
- Empêchez les données JSON de devenir trop volumineuses et normalisez les données lorsque cela est nécessaire.
6. Fonctions JSON avancées dans MySQL
6.1 Fonctions JSON supplémentaires
MySQL propose de nombreuses fonctions pour manipuler les données JSON. Par exemple, JSON_APPEND ajoute de nouveaux éléments, et JSON_REMOVE supprime des champs spécifiques.
-- Add data
UPDATE json_data SET doc = JSON_APPEND(doc, '$.a.b', 'new_element');
-- Remove data
UPDATE json_data SET doc = JSON_REMOVE(doc, '$.a.b[0]');
6.2 Combinaison avec les fonctions SQL
Les fonctions JSON peuvent être combinées avec les fonctions SQL traditionnelles pour créer des requêtes plus complexes. Par exemple, vous pouvez utiliser les données JSON avec les clauses GROUP BY ou ORDER BY.
SELECT JSON_EXTRACT(doc, '$.e') AS e_value, COUNT(*) FROM json_data GROUP BY e_value;
7. Conclusion
Cet article a couvert tout, des opérations JSON de base aux fonctionnalités avancées de MySQL. En tirant parti des capacités JSON de MySQL, vous pouvez simplifier le stockage et la gestion de données complexes. Appliquer les connaissances en performance et les meilleures pratiques vous aidera à gérer les données plus efficacement.


