3 pontos por GN⁺ 2023-08-14 | 1 comentários | Compartilhar no WhatsApp
  • Artigo sobre um projeto chamado 'LearnDB', um sistema de gerenciamento de banco de dados relacional (RDBMS) semelhante ao SQLite, escrito do zero em Python puro.
  • O projeto foi inspirado na famosa frase de Richard Feynman, "O que eu não consigo criar, eu não consigo entender", com o objetivo de proporcionar uma compreensão profunda sobre bancos de dados.
  • O LearnDB tem uma base de código simples e uma implementação relativamente completa de um RDBMS, o que o torna adequado para experimentação.
  • Oferece suporte rico a SQL (learndb-sql), incluindo select, from, where, group by, having, limit, order by etc., e usa o lark para construir um lexer e um parser personalizados.
  • O sistema permite que os usuários se conectem ao RDBMS de várias formas, como por REPL, importando o módulo Python ou passando arquivos de comandos para o motor.
  • Usa uma implementação de btree baseada em disco como estrutura de dados de apoio.
  • No entanto, o LearnDB tem algumas limitações, como uma implementação simplificada de aritmética com números de ponto flutuante e a ausência de suporte a recursos utilitários comuns, como expansão de colunas com curinga.
  • O artigo fornece instruções detalhadas sobre como instalar e executar o LearnDB, incluindo requisitos do sistema e etapas para rodar testes.
  • O autor fornece referências dos materiais consultados durante a criação do projeto, incluindo SQLite Database System: Design and Implementation (1st ed), a documentação do formato de arquivo do SQLite e Postgres para implementação de instruções SQL.
  • Apesar das limitações, o LearnDB foi pensado para ser usado como uma ferramenta de aprendizado para entender os mecanismos internos de bancos de dados, e não como uma solução real de armazenamento.

1 comentários

 
GN⁺ 2023-08-14
Opiniões do Hacker News
  • Artigo sobre um novo RDBMS (Relational Database Management System), um clone do SQLite escrito do zero em Python.
  • A linguagem Python foi escolhida por sua legibilidade e acessibilidade, em comparação com linguagens como C++ ou C, frequentemente usadas em bancos de dados.
  • O projeto é visto como educativo e útil para estudar como os bancos de dados funcionam.
  • Desperta interesse sobre como um mecanismo de banco de dados poderia funcionar de forma distribuída.
  • É mencionado um projeto semelhante em que o SQLite foi reescrito em C#.
  • O projeto não foi feito com a intenção de ser rápido, mas há interesse em ver benchmarks para comparação.
  • O texto apresentou aos leitores o Lark, uma biblioteca de parsing para Python, que foi usada no projeto.
  • O projeto é visto como uma boa forma de aprender melhor estruturas de dados e algoritmos (DS&A), especialmente para quem tem interesse em bancos de dados e em Python.
  • Surgem perguntas sobre quanto da suíte de testes do SQLite o projeto consegue passar, e se ele oferece garantias ACID (Atomicity, Consistency, Isolation, Durability) ou suporte a planejamento/otimização de consultas.
  • Há curiosidade sobre as vantagens e limitações de usar Python neste projeto, especialmente em comparação com C++, no suporte a controle de concorrência de baixo nível e gerenciamento de armazenamento.
  • O código do projeto é elogiado por sua boa legibilidade e excelentes comentários.