Contexte et architecture
DoltLite est un fork de SQLite dont la couche au‑dessus du B‑tree reste inchangée : analyseur SQL, parser, interaction système de fichiers et suite de tests sont ceux de SQLite. L’innovation réside dans le remplacement du B‑tree par un Prolly Tree, un arbre de type content‑addressed stocké dans un unique chunk store. Cette structure, déjà utilisée dans les produits Dolt, fournit les primitives de versionnage similaires à Git. Le projet a atteint la version 0.50.0 après environ 2 000 pull requests automatisées générées par l’orchestrateur d’agents Gas Town.
Stabilité du format de stockage
Le principal obstacle rencontré était la compatibilité du format de stockage : douze changements de format ont obligé les utilisateurs à rester sur la même version ou à réimporter leurs bases. Depuis la version bêta, le format est stable depuis 57 releases, soit plus de trois mois, et toute évolution future devra proposer une migration prise en charge.
Compatibilité SQL et tests
Le moteur SQL de DoltLite hérite intégralement de SQLite, ce qui se traduit par une conformité élevée aux tests officiels. DoltLite réussit 100 % du suite sqllogictest, soit 5,8 M de requêtes complexes, et 99,46 % des 892 277 tests TCL de SQLite, avec 4 809 divergences documentées. Les écarts majeurs proviennent de la clé primaire utilisée à la place du rowid, du stockage en chunks au lieu de pages, et de l’absence de journal WAL, entraînant le saut des tests correspondants.
Performances et limites
Les mesures de performance, publiées quotidiennement, comparent DoltLite à SQLite sur un benchmark de type sysbench. En mémoire, les lectures sont 10 % plus lentes et les écritures 60 % plus lentes. Sur disque, les lectures sont à parité et les écritures groupées sont 10 % plus lentes. Les écritures en autocommit restent le goulot d’étranglement : elles sont 3,1 fois plus lentes, passant de ~125 µs sous SQLite à ~400 µs sous DoltLite sur un runner GitHub minimal. Cette pénalité s’atténue en regroupant les écritures, ce qui constitue la pratique recommandée pour les charges sensibles.