AFUP Forum PHP 2019 Baromètre Planète PHP

La parole est aux speakers : Lætitia Avrot (AFUP Day 2019 Lyon)

Jusqu’à l’AFUP Day 2019 Lyon, 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

Les merveilles méconnues du SQL

Le SQL est un langage très puissant. Si vous avez suivi les évolutions de la
norme SQL, vous devriez savoir ce qu'est une CTE (y compris une CTE recursive),
les aggrégations avancées (window function, cube, rollup...) et les différents
types de jointures (même les jointures latérales). Mais les avez-vous essayées ?

Cette conférence se focalisera sur ces nouvelles fonctionnalités, comment elles
sont décrites dans la norme et comment elles sont implémentées dans PostgreSQL
avec des exemples concrets.

À la fin de cette conférence, vous devriez être capable d'utiliser toutes ces
merveilles du SQL et de les expliquer à vos collègues pour que leurs yeux à eux
aussi se mettent à briller!

SupInfo
17/05/2019
15:40-16:20

De nombreuses développeuses et développeurs font peu de SQL et accèdent à leur base via des ORM. Quels sont les avantages à bien connaitre le SQL ?

Aujourd’hui, on voit de plus en plus de retours d’expériences de développeurs séniors expliquant que la ressource la plus utile qu’ils ont négligée dans leur apprentissage était le langage SQL. Ce qu’il faut bien comprendre, c’est que le langage SQL que 95% des développeurs connaissent est un sous-ensemble de ce que le SQL peut faire. En gros, les développeurs savent faire ce qu’on appelle des CRUD (Create, Read, Update, Delete) dans leurs expressions les plus simples. En n’utilisant pas toute la puissance du langage SQL (et du moteur du SGBDR), c’est-à-dire en n’utilisant le SQL uniquement pour récupérer des données sans les traiter, on laisse cette charge au programme dont ce n’est pas le travail. Au final, les performances ne sont pas au rendez-vous et personne n’est satisfait.
Ma vision des ORM est biaisée : on m’appelle quand ça ne marche pas… Je n’ai donc jamais vu un ORM utilisé correctement… Par contre, je peux dire une chose: mapper des objets sur des tables d’une base de données ne peut pas fonctionner. Les structures d’un programme sont créées pour gérer les données et les afficher. Le stockage en SGBDR est fait pour éviter au maximum la duplication des données. Ces buts différents font que les structures sont différentes. Ce qui a du sens, c’est de mapper des objets sur des relations, qui peuvent être un résultat de requête.
Un autre problème du SQL, c’est la généralisation du langage. Effectivement, il existe une norme SQL, mais comme toute norme, chaque moteur a développé sa propre manière de faire. Du coup, les ORM se reposent souvent sur un sous-ensemble du SQL qui fonctionne avec la majorité des SGBDR et là encore, on perd beaucoup à ne pas utiliser les spécificités du SGBDR choisi et on se retrouve, à nouveau, avec des problèmes de performances. Imaginez un développeur web qui décide de ne pas utiliser un seul hook dans son css pour avoir un code qui fonctionne sur tous les navigateurs ! C’est exactement le même problème.

MySQL tente de rattraper son retard en terme de fonctionnalités sur PostgreSQL. Penses-tu qu’ils ont fini par combler leurs lacunes ou PostgreSQL conserve toujours une marge d’avance sur la concurrence ?

Cette question est assez drôle, car lorsque j’ai commencé Postgres, vers 2007, c’était MySQL qui était en avance sur Postgres en terme de fonctionnalités. Mais c’est une question de philosophie. PostgreSQL a toujours mis en avant la stabilité par rapport aux fonctionnalités. Ce qui a permis au projet de construire sereinement les fonctionnalités sur des bases solides, mais beaucoup plus lentement. Au contraire, mySQL a mis en avant les fonctionnalités. Je ne me prononcerai pas sur la stabilité du moteur parce que je ne le connais pas, mais je peux citer un exemple sur lequel on voit cette philosophie. Pour renforcer certaines contraintes d’intégrité, la norme SQL prévoit des `check constraints`. Cela permet pour une colonne qui stocke des prix de s’assurer que ceux-ci sont toujours positifs, par exemple. Cette fonctionnalité a été ajoutée à MySQL, dans le sens où la syntaxe SQL permet de déclarer une telle contrainte. Cependant, jusqu’à très récemment (avant MySQL 8.0), la contrainte indiquée n’était jamais vérifiée. Autre exemple, chez PostgreSQL, 98% des bugs sont corrigés dans la journée… Une nouvelle version ne sortira jamais tant qu’il existe des bugs connus non corrigés.

On parle de plus en plus de PostgreSQL dans notre écosystème « PHP ». Est-ce une tendance que tu rencontres aussi avec d’autres technologies ?

Je crois qu’on peut dire qu’on parle de plus en plus de PostgreSQL. Pour beaucoup, le fait d’utiliser un outil open source semble être un risque. J’entends souvent dire qu’il n’y a pas de support. Au contraire, plusieurs sociétés font du support pour Postgres donc si vous n’êtes pas contents du prestataire, vous pouvez en changer, vous n’êtes pas captifs! De plus, une manière simple d’évaluer la qualité d’un outil open source est d’aller lire son code. Il suffit de choisir n’importe quel fichier, de le lire (en étant concentré, quand même) et de voir si on le comprend (avec l’aide des commentaires).
Bien sûr, la stabilité de PostgreSQL (99,999% d’uptime) et le fait que les éditeurs privés fixent des prix parfois exorbitants aident beaucoup à l’adoption de Postgres et c’est tant mieux!

Le speaker

Lætitia AVROT
Lætitia AVROT
Lætitia est consultante et formatrice PostgreSQL pour Loxodata à Lyon. Elle a commencé à travailler sur PostgreSQL en 2007. Rapidement, elle a du apprendre aussi l'administration Oracle et SQL Server. Lors de ses différentes expériences, elle a pu travailler sur des projets à fortes contraintes de haute disponibilité et de forte charge, des incidents de prod, des PRA, des données géographiques...

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 :