La parole est aux speakers : Jonathan Van Belle

Publié le

Jusqu’au Forum PHP 2020, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

JSON en base de données, manipulons un peu cela

Une base de données relationnelle moderne peut facilement gérer du JSON. Avec quelques connaissances, vous pouvez facilement enrichir le comportement de votre modèle de données avec un soupçon de JSON. Nous verrons donc, comment utiliser certaines fonctionnalités avancées de mysql / mariadb et postgresql afin d'effectuer certaines recherches, créer des index, utiliser des colonnes virtuelles, etc. Au final, nous verrons que dans bien des cas, un peu de JSON résout pas mal de soucis, qu'une table ou plusieurs colonnes en plus, auraient rendu plus compliqué.

Katherine Johnson
23/10/2020
12:10-12:30

Qu’est-ce qui fait de JSON le format le plus adapté pour stocker des données non structurées en base ? Existe-t-il des formats alternatifs ?

JSON est structuré, mais souvent la structure fluctue fortement 🙂 Ce qui est intéressant avec le format JSON, c’est surtout qu’il nous est connu. C’est lisible par un humain, lisible par un ordinateur et dans le monde du web, c’est connu de toutes et tous ou presque. Il est aussi facile à réparer en cas de souci. C’est aussi une structure de donnée indépendante, qui n’est pas soumise à variation en cas de changement des choses, comme peut l’être un serialize (évolution des noms de classe, éventuellement incompatibilité avec des montées de version PHP, etc) et donc lisible par d’autres langages de programmation.

Des alternatives existent et elles vont vraiment varier d’un besoin à l’autre. JSON est requêtable en base de données depuis un certain temps déjà, avec des fonctions propres, là où d’autres formats ne le sont pas. Des alternatives pourraient-être : serialize/ubnserialize, JSONB (JSON sous format binaire), BSON (JSON binaire, mais limité), système de hashing… Il en existe beaucoup en fait, mais moins connus. Certains sont inspirés des nouveaux formats d’envoi par le réseau, d’autres sont d’anciennes pratiques. Et en fonction de votre infrastructure, d’autres possibilités s’ouvrent, mais là on s’écarte de la question je pense.

Ces fonctionnalités de JSON en base de données sont relativement récentes dans les SGBD. Penses-tu que la plupart des versions de production les supportent ? Y a-t-il du travail à faire de ce côté ?

Récent, tout dépend du milieu dans lequel on travaille. Pour certains, c’est déjà la préhistoire, pour d’autres, encore le futur. Plus sérieusement, si on regarde les dates d’introduction, on a MySQL 5.7 (octobre 2015), MariaDB 10.2 (avril 2016) et postgresql 9.2 (septembre 2013), soit entre les versions de PHP 5.6 et 7.1 (à peu de chose près). Je sais d’expérience que cela n’est pas toujours évident de faire évoluer sa version de PHP, et encore moins la base de données, mais même si ce n’est pas le cas, rien n’empêche d’utiliser un champ texte. Tout dépend du besoin. Avant d’utiliser les fonctions spécifiques à JSON, j’ai simplement stocké des données dans ce format car cela simplifiait de manière conséquente un schéma DB parfois déjà complexe. Les données de ces champs, à structure variable, ne devaient pas être requêtées par l’applicatif, mais simplement utilisées au moment opportun. Encore une fois, tout dépend de l’usage et du besoin.
Sinon, je pense que de manière générale aujourd’hui, il y a quand même peu de cas où une base de données ne peut monter en version. Là où pour du code, des incompatibilités existent, c’est rarement le cas en base de données surtout lorsque l’on utilise des couches de type ORM. Même si, paradoxalement, ces couches ont souvent du mal avec le json 🙂

Tu contribues à plusieurs projets open-source. Qu’est-ce qui te motive à donner de ton temps sur une telle pratique ?

Effectivement, même si ces deux dernières années, avec la rénovation de ma maison, j’ai drastiquement diminué mes contributions, je suis un contributeur (code, review, tests, feedback, idée, documentation, support, remerciement, talk…). Pour moi, c’est quelque chose de naturel car c’est surtout par ce biais que j’ai appris le code ! Sans l’opensource, honnêtement, je ne serais pas là où je suis, avec le bagage que j’ai. Je sais que tout le monde n’est pas fait pour contribuer au monde de l’opensource, mais parfois un simple merci ou un bug report peuvent faire la différence. Ma motivation réside aussi dans le fait de vouloir apprendre de nouvelles choses, de partager cet apprentissage et partager ce que j’ai produit ou l’améliorer. Par ailleurs, avec le temps, cela permet aussi de rencontrer des gens très sympas, avec qui discuter et ainsi se créer un réseau à travers le monde, sans véritable limite (pays, âge, genre, origine, religion…), ce qui est extrêmement enrichissant du point de vue personnel.

Une conférence présentée par

Jonathan VAN BELLE
Jonathan VAN BELLE
Développeur PHP depuis 2002, Jonathan est passionné. Il travaille principalement autour du PHP, dans tâches en background ou sur des processus métier. Contributeur (code, doc, idée …) à divers projet open source depuis toujours. Il aime promouvoir le partage de connaissance au sein des équipes et l’usage d’outils de qualité.

Autres interviews