HeadlinesBriefing favicon HeadlinesBriefing.com

DoltLite: bifurcación de SQLite con control de versiones estilo Git

Hacker News •
×

Mi bebé está creciendo. Solo cinco meses después de su lanzamiento, Dolt Lite es Beta, versión 0.50.0. Dolt Lite comenzó como una broma. Necesitaba un proyecto de prueba para probar el orquestador de agentes innovador de Steve Yegge, Gas Town. Quería un problema real, no un juguete. Queríamos una versión incorporada de Dolt durante años, pero reescribir el motor de almacenamiento de Dolt a C o Rust era demasiado lejos. SQLite parecía un host lógico para ese motor. ¿Podría un equipo de agentes lograrlo? Solo tomó alrededor de 2,000 solicitudes de extracción, pero Dolt Lite en Beta demuestra que un equipo de agentes ciertamente podía.

¿Qué es Dolt Lite

Dolt Lite es una bifurcación de SQLite. Todo lo que esté por encima de la capa B-tree es el mismo. Eso significa el analizador y analizador SQL, la capa de interacción con el sistema de archivos y el conjunto de pruebas son SQLite de stock. En otros productos Dolt tuvimos que implementar un motor SQL sobre almacenamiento con control de versiones. Construir un motor SQL es difícil. Con Dolt Lite conseguimos uno por el costo de escribir un motor de almacenamiento con control de versiones en C. La capa B-tree se intercambia por un Prolly Tree respaldado por un solo archivo de almacenamiento de fragmentos. Los Prolly Trees son árboles B con contenido abordados. Esta estructura de datos mágica impulsa la funcionalidad de control de versiones en todos los productos Dolt. Eso significa que obtienes todas las funciones de control de versiones de Dolt y Git en un paquete SQLite. ¿Alguna vez has querido hacer ramas, fusionar y hacer diff a SQLite? Dolt Lite es para ti. O quizás aún más importante, ¿alguna vez has querido un motor de sincronización SQLite consciente de conflictos impulsado por Git-style push, pull, clone, and fetch? Dolt Lite es para ti. O quizás aún más importante, ¿alguna vez has querido un motor de sincronización SQLite consciente de conflictos impulsado por Git-style push, pull, clone, and fetch? Dolt Lite es para ti. Incluso puedes usar Dolt Hub como tu backend de sincronización.

¿Qué significa Beta

Entonces, ¿qué significa que Dolt Lite haya entrado en Beta para ti? Beta significa cuatro cosas: Estabilidad del formato de almacenamiento, Compatibilidad SQL, Control de versiones completo, Rendimiento de producción y Informes del campo sobre funcionalidad y estabilidad son universalmente positivos. La batería de pruebas de SQLite es realmente impresionante. Dolt Lite pasa esas pruebas así como un conjunto personalizado de pruebas oracle de Dolt. Dolt Lite está listo para que lo pruebes. Estabilidad del formato de almacenamiento

La queja más grande sobre el proceso de desarrollo de Dolt Lite fue los saltos de formato de almacenamiento. Los cambios de formato de almacenamiento no eran compatibles hacia atrás, obligando a los usuarios a mantenerse en la misma versión o transferir manualmente sus bases de datos. Tomó 12 cambios de formato llegar a Beta. Llevamos 57 lanzamientos en el formato actual, o más de tres meses de tiempo calendario. Este formato parece uno que podemos mantener. El formato de almacenamiento ahora es estable. Cualquier cambio futuro que rompa la compatibilidad tendrá una ruta de migración compatible. Dolt Lite Beta significa que puedes adoptarlo sin miedo a un cambio de formato de almacenamiento que rompa la compatibilidad. Compatibilidad SQL

La capa SQL de SQLite está extremadamente bien probada. Dolt Lite pasa la mayoría de estas pruebas también, demostrando compatibilidad SQL. Dolt Lite pasa el 100% de sqllogictest, un conjunto de 5.8M de consultas complejas. La capa de consultas es la misma que SQLite, así que esto es esperado. SQLite también envía un conjunto de 892,277 pruebas de aceptación basadas en TCL que prueban una superficie más amplia de la API de SQLite. Dolt Lite pasa el 99.46% con 4,809 divergencias conocidas. Cada divergencia debe tener una razón listada. Las razones principales son: Las tablas están indexadas por clave primaria, en lugar de rowid, para soportar la funcionalidad de control de versiones. Algunos tests inspeccionan directamente rowid. Dolt Lite tiene fragmentos, no páginas. Algunos tests inspeccionan directamente páginas. No hay archivo WAL o journal lateral. Las pruebas WAL y journal se omiten. Los usuarios de SQLite se sentirán como en casa con Dolt Lite. Dolt Lite funciona como SQLite con funciones extra de control de versiones. Control de versiones completo

Dolt Lite implementa el conjunto básico de funciones de control de versiones estilo Git de Dolt. Se admiten funciones de control de versiones locales. Ramas, fusiones, diffs, rebases, cherry-picks, y resets, por mencionar algunos. Se admite control de versiones remoto: push, pull, clone, y fetch desde un custom remot...