HeadlinesBriefing favicon HeadlinesBriefing.com

DoltLite: Fork de SQLite com Controle de Versões estilo Git

Hacker News •
×

Meu bebê está crescendo. Apenas cinco meses após o lançamento, Dolt Lite é Beta, versão 0.50.0. Dolt Lite começou como uma piada. Eu precisava de um projeto para testar o orquestador de agentes inovador de Steve Yegge, Gas Town. Queria um problema real, não um brinquedo. Queríamos uma versão incorporada de Dolt há anos, mas reescrever a engine de armazenamento do Dolt em C ou Rust era um ponte demais. SQLite parecia um host lógico para esse motor. Uma equipe de agentes conseguiu? Levou cerca de 2.000 pull requests, mas o Dolt Lite em Beta prova que uma equipe de agentes certamente poderia.

O que é Dolt Lite

Dolt Lite é um fork de SQLite. Tudo acima da camada B-tree é o mesmo. Isso significa o parser e o analisador SQL, a camada de interação com o sistema de arquivos e o conjunto de testes são SQLite stock. Com outros produtos Dolt, tivemos que implementar um motor SQL em cima de armazenamento com controle de versões. Construir um motor SQL é difícil. Com Dolt Lite, conseguimos um pelo custo de escrever uma engine de armazenamento com controle de versões em C. A camada B-tree foi trocada por um Prolly Tree apoiado por um único arquivo de armazenamento de chunks. Prolly Trees são árvores B com conteúdo endereçadas. Essa estrutura de dados mágica alimenta a funcionalidade de controle de versões de todos os produtos Dolt. Isso significa que você obtém todas as funcionalidades de controle de versões de Dolt e Git em um pacote SQLite. Já quis fazer branch, merge e diff SQLite? Dolt Lite é para você. Ou talvez ainda mais importante, já quis um motor SQLite sincronização consciente de conflitos alimentado por Git-style push, pull, clone, and fetch? Dolt Lite é para você. Ou talvez ainda mais importante, já quis um motor SQLite sincronização consciente de conflitos alimentado por Git-style push, pull, clone, and fetch? Dolt Lite é para você. Você até pode usar Dolt Hub como seu backend de sincronização.

O que significa Beta?

Então, o que significa o Dolt Lite ir para Beta para você? Beta significa quatro coisas: Estabilidade do Formato de Armazenamento, Compatibilidade SQL, Controle de Versões Completo, Desempenho de Produção e Relatórios de Campo sobre funcionalidade e estabilidade são universalmente positivos. A bateria de testes do SQLite é realmente impressionante. Dolt Lite passa esses testes assim como um conjunto personalizado de testes oracle Dolt. Dolt Lite está pronto para você testar. Estabilidade do Formato de Armazenamento

A maior reclamação sobre o processo de desenvolvimento do Dolt Lite foi as mudanças de formato de armazenamento. Mudanças de formato de armazenamento não eram compatíveis para trás, exigindo que os usuários permanecessem na mesma versão ou despejassem e reimportassem manualmente seus bancos de dados. Levou 12 mudanças de formato para chegar ao Beta. Estávamos no formato atual por 57 lançamentos, ou mais de três meses de tempo calendário. Este formato parece um que podemos manter. O formato de armazenamento agora é estável. Quaisquer mudanças futuras que quebrem terão um caminho de migração suportado. Dolt Lite Beta significa que você pode adotar sem medo de uma mudança de formato de armazenamento que quebre. Compatibilidade SQL

A camada SQL do SQLite está extremamente bem testada. Dolt Lite passa a maioria desses testes também, provando compatibilidade SQL. Dolt Lite passa 100% do sqllogictest, um conjunto de 5,8M de consultas complexas. A camada de consulta é a mesma que o SQLite, então isso é esperado. O SQLite também vem com um conjunto de 892.277 testes de aceitação baseados em TCL que testam uma superfície mais ampla da API do SQLite. Dolt Lite passa 99.46% com 4.809 divergências conhecidas. Cada divergência deve ter uma razão listada. Os principais motivos são: Tabelas são indexadas por chave primária, em vez de rowid, para suportar funcionalidade de controle de versões. Alguns testes inspecionam diretamente rowid. Dolt Lite tem chunks, não páginas. Alguns testes inspecionam diretamente páginas. Não há arquivo WAL ou journal lateral. Testes WAL e journal são pulados. Usuários de SQLite se sentirão em casa com Dolt Lite. Dolt Lite funciona como SQLite com funções extras de controle de versões. Controle de Versões Completo

Dolt Lite implementa o conjunto básico de recursos de controle de versões estilo Git de Dolt. Recursos de controle de versões local são suportados. Branches, merges, diffs, rebases, cherry-picks, e resets, para citar alguns. Controle de versões remoto é suportado: push, pull, clone, and fetch desde um custom remot...