3 puntos por GN⁺ 2023-08-14 | 1 comentarios | Compartir por WhatsApp
  • Artículo sobre un proyecto llamado 'LearnDB', un sistema de gestión de bases de datos relacionales (RDBMS) similar a SQLite, escrito desde cero en Python puro.
  • El proyecto se inspira en la cita de Richard Feynman: "Lo que no puedo crear, no lo entiendo", con el objetivo de ofrecer una comprensión profunda de las bases de datos.
  • LearnDB tiene una base de código simple y una implementación de RDBMS relativamente completa, por lo que es ideal para experimentar.
  • Soporta un SQL amplio (learndb-sql), incluyendo select, from, where, group by, having, limit, order by, etc., y utiliza lark para construir un lexer y un parser personalizados.
  • El sistema permite a los usuarios conectarse al RDBMS de varias maneras, como mediante un REPL, importando el módulo de Python o pasando archivos de comandos al motor.
  • Usa una implementación de btree basada en disco como estructura de datos subyacente.
  • Sin embargo, LearnDB tiene algunas limitaciones, como una implementación simplificada de la aritmética de números de punto flotante y la falta de funciones de utilidad comunes, como la expansión de columnas con comodines.
  • El artículo ofrece instrucciones detalladas sobre cómo instalar y ejecutar LearnDB, incluyendo los requisitos del sistema y los pasos para ejecutar pruebas.
  • El autor proporciona referencias de los materiales consultados durante el desarrollo del proyecto, entre ellos SQLite Database System: Design and Implementation (1st ed), la documentación del formato de archivo de SQLite y implementaciones de sentencias SQL en Postgres.
  • A pesar de sus limitaciones, LearnDB está pensado no como una solución real de almacenamiento, sino como una herramienta de aprendizaje para entender el funcionamiento interno de las bases de datos.

1 comentarios

 
GN⁺ 2023-08-14
Comentarios en Hacker News
  • Un artículo sobre un nuevo RDBMS (Relational Database Management System), una réplica de SQLite escrita desde cero en Python.
  • Se eligió el lenguaje Python por su legibilidad y accesibilidad en comparación con lenguajes como C++ o C, que se usan con frecuencia para bases de datos.
  • El proyecto es percibido como educativo y útil para estudiar cómo funcionan las bases de datos.
  • Despierta interés sobre cómo un motor de base de datos podría funcionar de forma distribuida.
  • Se menciona un proyecto similar en el que SQLite fue reescrito en C#.
  • El proyecto no fue pensado para ser rápido, pero hay interés en ver benchmarks para compararlo.
  • La publicación presentó a los lectores Lark, una biblioteca de parsing para Python que se usó en el proyecto.
  • El proyecto es visto como una buena forma de aprender mejor estructuras de datos y algoritmos (DS&A), especialmente para quienes tienen interés en bases de datos y Python.
  • Se plantean preguntas sobre qué tanto de la suite de pruebas de SQLite puede pasar, y si soporta garantías ACID (Atomicity, Consistency, Isolation, Durability) o planificación/optimización de consultas.
  • Hay curiosidad sobre las ventajas y limitaciones de usar Python en este proyecto, especialmente frente a C++, en aspectos como control de concurrencia de bajo nivel y gestión de almacenamiento.
  • El código del proyecto es elogiado por su buena legibilidad y sus excelentes comentarios.