AFUP Forum PHP 2020 Baromètre Planète PHP

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 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.

Le speaker

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

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation des cookies pour améliorer votre navigation. plus d'infos

1. Qu’est-ce qu’un cookie?

Un Cookie est un petit fichier texte enregistré sur votre terminal (ordinateur, tablette, smartphone, etc.), à l’occasion de la consultation d’un service en ligne grâce à votre logiciel de navigation. Il permet à son émetteur d’identifier le terminal dans lequel il est enregistré, pendant la durée de validité ou d’enregistrement du Cookie. Lors de la consultation de notre site Internet, des informations relatives à la navigation de votre terminal sont susceptibles d'être enregistrées dans ces fichiers dits "Cookies". Ces derniers sont installés sur votre terminal, sous réserve des choix que vous auriez exprimés concernant les Cookies et que vous pouvez modifier à tout moment.

2. A quoi servent les cookies émis sur notre site ?

Seul l’émetteur d’un cookie est susceptible de lire ou de modifier les informations qui y sont contenues.
Les cookies utilisés sur notre site permettent :

3. Vos choix concernant les cookies

Vous disposez de différents moyens pour gérer les cookies. Tout paramétrage que vous pouvez entreprendre sera susceptible de modifier votre navigation sur notre site et sur Internet en général et vos conditions d'accès à certains services de notre site nécessitant l'utilisation de cookies. Vous pouvez à tout moment exprimer et modifier vos souhaits en matière de cookies, par les moyens décrits ci-dessous. L'accord sur les cookies L'enregistrement d'un cookie dans un terminal est essentiellement subordonné à la volonté de l'utilisateur du terminal, que celui-ci peut exprimer et modifier à tout moment et gratuitement à travers les choix qui lui sont offerts par son logiciel de navigation. Si vous avez accepté dans votre logiciel de navigation l'enregistrement de cookies dans votre terminal, les cookies intégrés dans les pages et contenus que vous avez consultés pourront être stockés temporairement dans un espace dédié de votre terminal. Ils y seront lisibles uniquement par leur émetteur.

Le refus des cookies Si vous refusez l'enregistrement de cookies dans votre terminal, ou si vous supprimez ceux qui y sont enregistrés, vous ne pourrez plus bénéficier d'un certain nombre de fonctionnalités qui sont néanmoins nécessaires pour naviguer dans certains espaces de notre site. Tel serait le cas si vous tentiez d'accéder à votre compte ou à votre abonnement qui nécessite de vous identifier. Tel serait également le cas lorsque nous, ou nos prestataires, ne pourrions pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par votre terminal, ses paramètres de langue et d'affichage ou le pays depuis lequel votre terminal semble connecté à Internet. Le cas échéant, nous déclinons toute responsabilité pour les conséquences liées au fonctionnement dégradé de nos services résultant de l'impossibilité pour nous d'enregistrer ou de consulter les cookies nécessaires à leur fonctionnement et que vous auriez refusés ou supprimés. Les choix offerts par votre logiciel de navigation Vous pouvez configurer votre logiciel de navigation de manière à ce que des cookies soient enregistrés dans votre terminal ou, au contraire, qu'ils soient rejetés, soit systématiquement, soit selon leur émetteur. Vous pouvez également configurer votre logiciel de navigation de manière à ce que l'acceptation ou le refus des cookies vous soient proposés ponctuellement, avant qu'un cookie soit susceptible d'être enregistré dans votre terminal. Pour la gestion des cookies et de vos choix, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d'aide de votre navigateur, qui vous permettra de savoir de quelle manière modifier vos souhaits en matière de cookies. Selon votre navigateur, consultez le lien ci-dessous pour configurer votre navigateur et refuser les cookies :