Guide JSON MySQL : Types de données, fonctions, performances et bonnes pratiques

1. Introduction

1.1 L’importance du JSON

Dans le développement web moderne, les échanges de données deviennent de plus en plus complexes. Le JSON (JavaScript Object Notation) est largement utilisé pour le transfert et le stockage de données grâce à son format léger et structuré. Depuis la version 5.7, MySQL prend en charge le type de données JSON, ce qui facilite la manipulation directe des données JSON au sein des bases de données.

1.2 Utiliser le JSON dans MySQL

Cet article fournit une explication détaillée du JSON dans MySQL, couvrant les opérations de base, les considérations de performance et les techniques d’utilisation pratiques. Il offre les connaissances essentielles pour exploiter efficacement le JSON dans MySQL, que vous soyez débutant ou utilisateur avancé.

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 en raison de sa légèreté et de sa lisibilité. Dans MySQL, vous pouvez utiliser le type de données JSON pour stocker et manipuler des données JSON directement dans la base de données.

2.2 Le type de données JSON dans MySQL

Le type de données JSON introduit dans MySQL 5.7 nécessite un espace disque comparable à LONGBLOB ou LONGTEXT. Pour garantir l’intégrité des données, MySQL valide les documents JSON lors de l’insertion. Cela empêche le stockage de données JSON invalides dans la base de données.

2.3 Cas d’utilisation courants du JSON

Les principaux scénarios d’utilisation du JSON dans MySQL sont les suivants :

  • Stocker des structures de données complexes
  • Enregistrer les réponses d’API sans modification
  • Gérer des données avec des schémas évolutifs

3. Opérations de base JSON dans MySQL

3.1 Créer une colonne JSON

Pour créer une colonne destinée à stocker des données JSON, spécifiez le type de données JSON comme indiqué ci‑dessous :

CREATE TABLE json_data (
    doc JSON
);

3.2 Insérer des données JSON

Utilisez l’instruction INSERT pour insérer des données JSON comme illustré ci‑dessous. MySQL vérifie que les données sont au format JSON valide au moment de l’insertion et renvoie une erreur si ce n’est pas le cas.

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 en utilisant la fonction JSON_OBJECT.

INSERT INTO json_data(doc) VALUES (JSON_OBJECT('key1', 'value1', 'key2', 'value2'));

3.3 Interroger des données JSON

Pour récupérer les données JSON insérées, utilisez la fonction JSON_EXTRACT. Cette fonction extrait les données d’un chemin spécifié au sein d’un objet JSON.

SELECT * FROM json_data WHERE JSON_EXTRACT(doc, '$.e') = 'f';

Vous pouvez aussi recourir à l’opérateur raccourci ->.

SELECT * FROM json_data WHERE doc->'$.e' = 'f';

3.4 Mettre à jour des données JSON

Pour mettre à jour partiellement des données JSON, utilisez la fonction JSON_SET. Cette fonction met à jour le chemin indiqué et renvoie un nouvel objet JSON.

UPDATE json_data SET doc = JSON_SET(doc, '$.a.b[0]', 'new_value');

4. Considérations de performance

4.1 Performance des insertions

Lors de l’insertion de données dans une colonne JSON MySQL, il y a peu de différence de performance entre le type TEXT et le type JSON. Les tests en temps réel montrent que l’insertion de 50 000 enregistrements avec le type JSON s’effectue à peu près dans le même délai que l’utilisation du type TEXT.

4.2 Performance des mises à jour

Lors de la mise à jour de données JSON, l’utilisation de JSON_SET permet des mises à jour partielles efficaces. Au lieu d’écraser l’ensemble du document, vous pouvez ne mettre à jour que des champs spécifiques, ce qui améliore les performances. Même lors de la mise à jour partielle de 50 000 enregistrements, JSON_SET assure une exécution efficace.

5. Bonnes pratiques pour l’utilisation du JSON dans MySQL

5.1 Quand utiliser le JSON de manière appropriée

Le JSON convient au stockage de structures de données complexes et de données avec des schémas évolutifs. Cependant, pour des données fortement structurées, l’utilisation de tables relationnelles classiques est généralement plus efficace.

5.2 Indexation des données JSON

Dans MySQL, vous pouvez créer des index sur les colonnes JSON en utilisant des colonnes virtuelles. Cela vous permet d’améliorer les performances des requêtes lorsqu’il s’agit de travailler avec des données JSON.

ALTER TABLE json_data 
ADD COLUMN e_value VARCHAR(255) AS (doc->'$.e'), 
ADD INDEX (e_value);

5.3 Éviter les pièges courants

  • Évitez de surutiliser les colonnes JSON et profitez des points forts des bases de données relationnelles.
  • Configurez des index appropriés pour garantir des requêtes efficaces.
  • Empêchez les données JSON de devenir excessivement 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, vous pouvez ajouter de nouvelles données à un tableau JSON avec JSON_APPEND, ou supprimer des champs spécifiques avec JSON_REMOVE.

-- Append 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 Combiner JSON 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 dans 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

Dans cet article, nous avons couvert tout, des opérations JSON de base dans MySQL aux fonctionnalités avancées. En tirant parti des capacités JSON de MySQL, vous pouvez facilement stocker et manipuler des structures de données complexes au sein de votre base de données. Appliquez les connaissances relatives aux considérations de performance et aux meilleures pratiques présentées ici pour obtenir une gestion des données plus efficace.