- SQL est la langue de base du traitement des données structurées depuis 50 ans, mais il reste difficile à apprendre, peu commode à utiliser et compliqué à faire évoluer
- Problèmes du SQL existant : ordre syntaxique imposé, syntaxe redondante, nécessité d’utiliser des sous-requêtes, flux de données « de l’intérieur vers l’extérieur », manque d’extensibilité, etc.
- Avec GoogleSQL, l’approche retenue pour résoudre ces problèmes consiste à étendre SQL
- L’objectif est de résoudre les problèmes du SQL existant en introduisant dans SQL une syntaxe de flux de données en pipeline
- Cela permet d’apprendre et d’utiliser SQL de manière plus flexible tout en conservant l’écosystème existant, avec une compatibilité totale avec le SQL actuel
- Les opérateurs SQL existants sont réutilisés et peuvent être composés dans un ordre arbitraire via des pipelines
- Chaque opérateur de pipeline ne voit que la table d’entrée, ce qui rend sa portée explicite
- La sémantique déclarative est préservée
- Une correspondance un à un avec l’algèbre relationnelle devient possible
- L’extensibilité est améliorée grâce aux fonctions de table
- Par exemple, des agrégations multi-étapes peuvent être exprimées de façon continue sans sous-requêtes
- Le SQL utilisant la syntaxe en pipeline est plus simple à apprendre et à utiliser, et sa flexibilité est nettement améliorée car divers opérateurs peuvent être appliqués dans un ordre arbitraire
- Les opérateurs de pipeline fonctionnent de manière séquentielle, ce qui permet de filtrer, agréger et trier les données plus facilement
- Retour d’expérience dans GoogleSQL
- Adoption régulière par les utilisateurs et retours positifs
- Même les requêtes complexes peuvent être exprimées de manière linéaire
- Pratique pour l’édition et le débogage
- Meilleure prise en charge par les outils IDE
- Avantageux pour les générateurs et convertisseurs de code SQL
- Potentiels avantages pour les usages liés à l’IA
- Implémentation et feuille de route
- La syntaxe en pipeline a été implémentée dans GoogleSQL comme composant partagé
- Les moteurs de requête existants peuvent activer cette syntaxe facilement
- La prise en charge externe dans BigQuery et Spanner est à l’étude
- Il serait intéressant d’explorer son inclusion future dans le standard SQL
L’avis de GN⁺
- Avantages de la syntaxe en pipeline : elle peut devenir un outil puissant pour résoudre la complexité de SQL, notamment en permettant d’exprimer le flux de données de manière intuitive, ce qui améliore fortement l’utilisabilité de SQL.
- Compatibilité avec le SQL existant : l’approche ne vise pas à remplacer SQL, mais à l’améliorer, ce qui réduit la courbe d’apprentissage tout en préservant la compatibilité avec le code existant.
- Points à considérer lors de l’adoption : il faut évaluer l’impact sur les performances et le niveau de support des outils ; la syntaxe en pipeline peut être particulièrement avantageuse pour les requêtes de grande taille.
- Comparaison avec des projets similaires : une structure en pipeline est aussi utilisée dans des API de DataFrame comme Pandas, mais la différence avec SQL réside dans son intégration à la sémantique déclarative de SQL. Cette fonctionnalité peut ainsi être utilisée tout en conservant l’extensibilité et les performances des systèmes SQL.
11 commentaires
Un pipe avec un accent circonflexe, voilà une combinaison qui risque de faire mal à la main droite 🤣
Il est vrai que SQL a besoin de quelques améliorations.
Le vrai problème, c’est qu’on n’a pas trouvé de solution d’amélioration depuis 30 ou 40 ans..
On dirait que c’est à Google de faire avancer l’écosystème autour de la grammaire SQL supplémentaire, mais est-ce que la division va vraiment faire durer ça ?
C’est du dplyr, hein haha
Pourquoi ai-je toujours l’impression que ça va être un échec dès que c’est Google qui s’y met..
Gemini répond en plus comme un gamin, donc ça ne me donne même pas envie de l’utiliser
On dirait que c’est assez similaire à l’approche adoptée par les ORM.
Rien qu’en regardant l’exemple ci-dessous tiré du papier, on voit clairement que le SQL de Google est plus facile à lire.
SQL standard
SQL Google
Cela me fait penser au LINQ de C#. Chaque fois que j’utilise SQL, je me dis toujours qu’il serait préférable que l’ordre du
SELECTpasse aprèsFROMetWHERE....Au début, cela peut sembler étrange parce qu’on n’y est pas habitué, mais si on le lit lentement, le flux paraît bien plus naturel.
Le côté SQL semble plus agréable à lire.
Personnellement, je trouve SQL bien plus facile à lire. Haha, j’imagine que c’est le cas pour la plupart des gens qui ont commencé avec SQL...
Moi aussi, je trouve que ce avec quoi on est habitué est plus facile à lire.. haha
Avis Hacker News