|

Boring technology: les bases de données relationnelles

La semaine dernière, j’évoquais les « boring technologies » et le fait qu’elles soient sous-cotées dans l’esprit collectif. Les bases de données relationnelles et le langage SQL en sont probablement l’exemple le plus courant. Très largement utilisées dans les projets nécessitant de stocker des informations, elles sont pourtant régulièrement boudées par les développeurs au premier problème.

Ce billet a été initialement publié sur LinkedIn
Voir la publication originale
Cette dernière est republiée ici afin de ne pas dépendre entièrement d'une plateforme tierce.

C’est le constat que je fais depuis plusieurs années et la cause est que de moins en moins de développeurs en maîtrisent le fonctionnement ou ne connaissent réellement le langage SQL. Je ne pense pas que cela soit réellement dû à un manque d’intérêt, je pense surtout que les frameworks et les ORM que nous utilisons au quotidien ont leur part de responsabilité.

De nombreuses couches d’abstraction sont conçues de manière générique pour permettre d’interchanger rapidement et simplement le système relationnel. Cela se fait au détriment des fonctionnalités avancées, des optimisations spécifiques ou des mécanismes évolués permettant d’améliorer drastiquement les performances de nos applications (colonnes générées, gestion des vues, index partiels, CTE, requêtes récursives, partitionnement, …).

Cela ne se remarque pas à charge ou volumétrie réduite. Mais dès que l’on change un peu d’échelle, c’est là que les problèmes commencent. Les temps de réponse se dégradent, les performances chutent et si l’on ne s’intéresse pas à ce qu’il se passe sous le capot du SGBD, cela devient très compliqué de s’en sortir.

Les ORM ne sont pas le problème. Ce sont des outils très pratiques qui permettent de gagner du temps. Mais eux aussi, il convient de les maîtriser pour optimiser les requêtes générées et savoir comment tirer parti des fonctionnalités avancées des bases de données. La plupart d’entre eux ont des couches « bas niveau » et permettent généralement de faire des requêtes SQL directement et éventuellement de « mapper » la réponse dans des objets.

Comme je le dis régulièrement, il est essentiel, voire indispensable, de s’attacher aux fondamentaux, de comprendre et maîtriser les outils que l’on utilise. Le langage SQL et le fonctionnement des bases de données en font partie. C’est ainsi que l’on peut se donner les moyens de construire des applications qui tiennent la charge sur le long terme sans multiplier les technologies.

Jérémy DECOOL

Jérémy DECOOL

Développeur depuis plus d'une décennie, je partage mes réflexions sur les bonnes pratiques de développement et d'architecture logicielle.