Introduction
Dans l'univers des technologies modernes, optimiser chaque composant de ton infrastructure IT peut faire une énorme différence. PostHog, une plateforme d'analyse de produits, l'a compris en réécrivant son parseur SQL pour qu'il soit 70 fois plus rapide. Mais ce qui est encore plus impressionnant, c'est que cette prouesse a été réalisée sans passer des heures à scruter le code ligne par ligne.
Pourquoi un parseur SQL chez PostHog ?
PostHog permet à ses utilisateurs d'accéder directement à leurs données via SQL. Pour cela, il est crucial de transpiler le SQL en requêtes ClickHouse brutes. Cela aide à présenter une vue logique des données, indépendante de la structure physique de la base de données. En d'autres termes, le parseur SQL joue un rôle fondamental en convertissant les requêtes SQL en un arbre syntaxique abstrait (AST), qui est ensuite utilisé pour des optimisations de performances et des contrôles d'accès.
Génération de parseur avec ANTLR
Pour éviter la complexité et la maintenance chronophage d'un parseur écrit manuellement, PostHog a choisi ANTLR, un générateur de parseurs open source. ANTLR permet de déclarer la grammaire dans un fichier .g4, générant ainsi automatiquement la plupart du code du parseur. Bien que puissant, ANTLR est flexible mais peut être lourd, nécessitant ainsi des optimisations supplémentaires.
Utilisation de sessions AI pour la réécriture
Robbie Coomber, ingénieur chez PostHog, a eu recours à des sessions parallèles de Claude Code, un outil AI, pour réécrire le parseur. Le résultat ? 16 000 lignes de code de parseur et environ 5 000 lignes d'outils supplémentaires. Le gain de vitesse a atteint un facteur de 70, tout en gardant une équivalence fonctionnelle pour toutes les requêtes réalistes.
Tests basés sur les propriétés
L'une des approches innovantes employées fut l'utilisation de tests basés sur les propriétés. Ces tests vérifient que le parseur fonctionne correctement pour une large gamme de scénarios, augmentant ainsi la robustesse du système et limitant les erreurs potentielles.
Impact et perspectives
Le nouveau parseur a non seulement amélioré la performance, mais il a aussi ouvert des perspectives pour des optimisations futures. Avec cette base solide, PostHog peut envisager des améliorations continues et répondre à des demandes plus complexes.
Conclusion
Réécrire un composant clé comme un parseur SQL est un défi, mais avec les bons outils et une approche innovante, les résultats peuvent être spectaculaires. Si tu souhaites explorer comment optimiser ton infrastructure avec l'IA et d'autres technologies avancées, discutons de ton projet en 15 minutes.