HeadlinesBriefing favicon HeadlinesBriefing.com

DoltLite : Fork de SQLite avec contrôle de version style Git

Hacker News •
×

Mon bébé grandit. Juste cinq mois après son lancement, Dolt Lite est Beta, version 0.50.0. Dolt Lite a commencé comme une blague. J'avais besoin d'un projet pour tester l'orchestrateur d'agents innovant de Steve Yegge, Gas Town. Je voulais un problème réel, pas un jouet. Nous voulions une version incorporée de Dolt depuis des années, mais réécrire le moteur de stockage de Dolt en C ou en Rust était trop loin. SQLite semblait un hôte logique pour ce moteur. Une équipe d'agents pouvait-elle s'en charger ? Cela n'a pris que environ 2 000 pull requests, mais Dolt Lite en Beta prouve qu'une équipe d'agents pouvait certainement le faire.

Qu'est-ce que Dolt Lite

Dolt Lite est une fourche de SQLite. Tout ce qui se trouve au-dessus de la couche B-tree est le même. Cela signifie le analyseur et l'analyseur SQL, la couche d'interaction avec le système de fichiers, et le jeu de tests sont du SQLite stock. Avec d'autres produits Dolt, nous devions implémenter un moteur SQL sur un stockage à contrôle de versions. Construire un moteur SQL est difficile. Avec Dolt Lite, nous l'avons obtenu au coût d'écriture d'un moteur de stockage à contrôle de versions en C. La couche B-tree est échangée contre un Prolly Tree soutenu par un seul fichier de stockage de chunks. Les Prolly Trees sont des arbres B adressés par contenu. Cette structure de données magique alimente la fonctionnalité de contrôle de versions de tous les produits Dolt. Cela signifie que vous obtenez toutes les fonctionnalités de contrôle de versions de Dolt et Git dans un package SQLite. Vous avez déjà voulu faire une branche, fusionner et diff SQLite ? Dolt Lite est pour vous. Ou peut-être encore plus important, avez-vous déjà voulu un moteur SQLite de synchronisation conscient des conflits entraîné par Git-style push, pull, clone, and fetch ? Dolt Lite est pour vous. Ou peut-être encore plus important, avez-vous déjà voulu un moteur SQLite de synchronisation conscient des conflits entraîné par Git-style push, pull, clone, and fetch ? Dolt Lite est pour vous. Vous pouvez même utiliser Dolt Hub comme votre backend de synchronisation.

Que signifie Beta ?

Alors, que signifie que Dolt Lite soit passé en Beta pour vous ? Beta signifie quatre choses : Stabilité du format de stockage, Compatibilité SQL, Contrôle de version complet, Performance de production, et rapports du terrain sur la fonctionnalité et la stabilité sont universellement positifs. La batterie de tests de SQLite est vraiment impressionnante. Dolt Lite passe ces tests ainsi qu'un suite personnalisée de tests oracle Dolt. Dolt Lite est prêt pour vous essayer. Stabilité du format de stockage

La plus grande plainte sur le processus de développement de Dolt Lite était les sauts de format de stockage. Les modifications de format de stockage n'étaient pas compatibles en arrière, obligeant les utilisateurs à rester sur la même version ou à vidanger manuellement leurs bases de données et à les réimporter. Il a fallu 12 changements de format pour arriver à Beta. Nous sommes restés sur le format actuel pendant 57 versions, ou plus de trois mois de temps calendrier. Ce format semble être un que nous pouvons garder. Le format de stockage est maintenant stable. Toute modification future qui cassera aura un chemin de migration pris en charge. Dolt Lite Beta signifie que vous pouvez l'adopter sans crainte de changement de format de stockage cassant. Compatibilité SQL

La couche SQL de SQLite est extrêmement bien testée. Dolt Lite passe la plupart de ces tests également, prouvant la compatibilité SQL. Dolt Lite passe 100 % de sqllogictest, un jeu de 5,8 M de requêtes complexes. La couche de requête est la même que SQLite, donc c'est attendu. SQLite est également livré avec un jeu de 892 277 tests d'acceptation basés sur TCL qui testent une surface plus large de l'API SQLite. Dolt Lite passe 99,46 % avec 4 809 divergences connues. Chaque divergence doit avoir une raison répertoriée. Les raisons principales sont : Les tables sont indexées par clé primaire, au lieu de rowid, pour supporter la fonctionnalité de contrôle de versions. Certains tests inspectent directement rowid. Dolt Lite a des chunks, pas de pages. Certains tests inspectent directement les pages. Il n'y a pas de fichier WAL ou journal latéral. Les tests WAL et journal sont sautés. Les utilisateurs de SQLite se sentiront comme à la maison avec Dolt Lite. Dolt Lite fonctionne comme SQLite avec des fonctions supplémentaires de contrôle de versions. Contrôle de version complet

Dolt Lite implémente le jeu de base des fonctionnalités de contrôle de version style Git de Dolt. Les fonctionnalités de contrôle de version local sont prises en charge. Branches, merges, diffs, rebases, cherry-picks, et resets, pour n'en citer que quelques-uns. Le contrôle de version à distance est pris en charge : push, pull, clone, and fetch depuis un custom remot...