La parole est aux speakers : Jonathan Van Belle
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 celaUne 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 |
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
- La parole est aux speakers : Samuel Rozé
- La parole est aux speakers : Kévin Dunglas
- La parole est aux speakers : Sarah Haïm-Lubczanski
- La parole est aux speakers : Gilles Dowek
- La parole est aux speakers : Hélène Maître-Marchois
- La parole est aux speakers : Estelle Landry
- La parole est aux speakers : Pascal Martin et Martin Supiot
- La parole est aux speakers : Lucas Legname & Maxime Richard
- La parole est aux speakers : Maxime Veber
- La parole est aux speakers : Agnès Haasser
- La parole est aux speakers : Mikael Randy
- La parole est aux speakers : Mathieu Girard
- La parole est aux speakers : Antti Rössi
- La parole est aux speakers : Frédéric Bouchery
- La parole est aux speakers : Jean-Pierre Vincent
- La parole est aux speakers : Benoit Jacquemont
- La parole est aux speakers : Ben Smith
- La parole est aux speakers : Antoine Bluchet
- La parole est aux speakers : Olivier Dolbeau
- La parole est aux speakers : Karim Pinchon
- La parole est aux speakers : Damien Alexandre
- La parole est aux speakers : Gabriel Caruso