Compiler ou non les requêtes de base de données : une plongée en profondeur
Cet article explore les compromis liés à la compilation des requêtes de base de données. Les interpréteurs de requêtes traditionnels luttent contre la vitesse des SSD NVMe modernes, ce qui entraîne d’importants goulots d’étranglement en termes de performances. La compilation des requêtes offre des améliorations de vitesse substantielles, en particulier pour les charges de travail OLAP. Cependant, le temps de compilation et les défis d’optimisation créent des falaises de performances imprévisibles. Les interpréteurs vectorisés, à l’inverse, sont plus faciles à construire, à déboguer et offrent des performances plus cohérentes. L’article oppose cela aux moteurs de navigateur JavaScript/Wasm, qui utilisent une approche de compilation à plusieurs niveaux (interpréteur, compilateur de base, compilateur optimisant) pour obtenir un compromis de performances harmonieux. L’auteur propose une approche similaire pour les bases de données, en suggérant un compilateur de base comme composant clé. Plusieurs stratégies de mise en œuvre, notamment « copier-coller » et la compilation Wasm, sont explorées. En fin de compte, l’article soutient que la création d’un compilateur de base n’est pas excessivement difficile et offre des perspectives sur les orientations futures.