Introduction

Honker est une extension pour SQLite qui ajoute des fonctionnalités de type NOTIFY/LISTEN, des files d'attente, des flux et des mécanismes de publication/abonnement. Cela permet aux développeurs d'utiliser SQLite comme base de données principale sans avoir besoin d'ajouter une autre base de données ou un courtier pour gérer les files d'attente.

Contexte Technique

Honker utilise une approche innovante pour gérer les files d'attente et les flux. Il s'appuie sur la fonctionnalité PRAGMA data_version de SQLite, qui est un compteur monotonique incrémenté à chaque commit. Cela permet à Honker de détecter les changements dans la base de données sans avoir besoin de poller constamment. Les files d'attente, les flux et les mécanismes de publication/abonnement sont tous gérés à l'aide d'INSERT dans des tables gérées par l'extension.

La latence de réveil entre les processus est d'environ 0,7 ms, ce qui est très rapide. De plus, le coût au repos est très faible, car il n'y a qu'une seule requête SELECT par millisecondes par base de données, sans pression sur le cache de pages, sans contention de verrous d'écriture et sans surveillant de fichiers au niveau du noyau.

Analyse et Implications

L'utilisation d'Honker peut simplifier l'architecture des applications qui utilisent SQLite comme base de données principale. Elle élimine le besoin d'ajouter une autre base de données ou un courtier pour gérer les files d'attente, ce qui réduit les coûts opérationnels et les risques de problèmes de cohérence des données. De plus, les files d'attente et les flux sont gérés de manière ACID, ce qui signifie que les transactions sont traitées de manière atomique et cohérente.

Perspective

Il est important de noter que Honker est conçu pour les applications qui utilisent SQLite comme base de données principale. Si vous utilisez déjà Postgres, il est recommandé d'utiliser des outils comme pg-boss ou Oban pour gérer les files d'attente et les flux. Cependant, pour les applications qui utilisent SQLite, Honker peut être une solution très intéressante pour simplifier l'architecture et améliorer les performances.