Benjamin Geer

Comparer les performances de requêtes SQL

Benjamin Geer

J’ai réalisé un petit programme en Rust, sqlstopwatch, pour comparer les performances de différentes requêtes SQL. J’ai été inspiré par l’article Benchmarking SQL publié par le projet jOOQ, dans lequel le code du test est implémenté en SQL. Je voulais quelque chose de semblable, mais j’avais quelques exigences supplémentaires :

L’interface utilisateur a été facile à réaliser avec Ratatui. Pour interagir avec la base de données, j’ai utilisé la bibliothèque asynchrone sqlx, qui fournit une bibliothèque SQLite embarquée.

J’ai pensé à utiliser le format TOML pour le fichier de configuration, mais le fichier doit fournir les identifiants de connexion. Dans les environnements de test, il se peut que les identifiants doivent être chargés à partir de variables d’environnement ou de fichiers sur un système de fichiers monté, mais TOML ne permet pas d’effectuer de telles opérations. Par conséquent, il vaut mieux que le fichier de configuration soit un programme dans un langage de script. Mon exercice d’implémentation d’un interpréteur de langage de script m’avait permis d’apprécier à sa juste valeur la machine virtuelle Lua. Le fichier de configuration est donc un script en Lua, que je trouve plus commode de rédiger en Fennel, un dialect de Lisp qui se compile en Lua. Grâce à la bibliothèque mlua, il a été très facile d’embarquer un interpréteur Lua dans le programme et d’utiliser Serde pour convertir des tables Lua en structs Rust.

Maintenant je peux me remettre à me pencher sur mes requêtes SQL.

Catégories :
Sujets :