3 points par GN⁺ 2023-08-14 | 1 commentaires | Partager sur WhatsApp
  • Article sur un projet appelé LearnDB, un système de gestion de base de données relationnelle (RDBMS) similaire à SQLite, écrit from scratch en pur Python.
  • Le projet s’inspire de la citation de Richard Feynman : « Ce que je ne peux pas créer, je ne peux pas le comprendre », avec pour objectif d’offrir une compréhension approfondie des bases de données.
  • LearnDB dispose d’une base de code simple et d’une implémentation de RDBMS relativement complète, ce qui le rend adapté à l’expérimentation.
  • Il prend en charge un SQL riche (learndb-sql), notamment select, from, where, group by, having, limit, order by, etc., et utilise lark pour construire un lexer et un parseur personnalisés.
  • Le système permet aux utilisateurs de se connecter au RDBMS de plusieurs façons : via un REPL, en important le module Python, ou en passant un fichier de commandes au moteur.
  • Il utilise une implémentation de btree sur disque comme structure de données de stockage sous-jacente.
  • Cependant, LearnDB présente certaines limites, comme une implémentation simplifiée de l’arithmétique des nombres à virgule flottante et l’absence de certaines fonctionnalités utilitaires courantes, comme l’expansion des colonnes avec wildcard.
  • L’article fournit des instructions détaillées pour installer et exécuter LearnDB, y compris les prérequis système et les étapes d’exécution des tests.
  • L’auteur fournit des références aux ressources consultées pendant l’écriture du projet, notamment SQLite Database System: Design and Implementation (1st ed), la documentation du format de fichier SQLite, et Postgres pour l’implémentation des instructions SQL.
  • Malgré ses limites, LearnDB est conçu non pas comme une solution de stockage réelle, mais comme un outil d’apprentissage destiné à comprendre le fonctionnement interne des bases de données.

1 commentaires

 
GN⁺ 2023-08-14
Avis Hacker News
  • Article sur un nouveau SGBDR (Relational Database Management System), un clone de SQLite écrit en Python from scratch.
  • Le langage Python a été choisi pour sa lisibilité et son accessibilité, par rapport à des langages comme C++ ou C souvent utilisés pour les bases de données.
  • Le projet est perçu comme éducatif et utile pour étudier le fonctionnement des bases de données.
  • Il suscite de l’intérêt pour la manière dont un moteur de base de données pourrait fonctionner de façon distribuée.
  • Un projet similaire dans lequel SQLite a été réécrit en C# est mentionné.
  • Le projet n’a pas été conçu pour être rapide, mais il y a un intérêt à voir des benchmarks à titre de comparaison.
  • L’article a aussi fait découvrir aux lecteurs Lark, une bibliothèque de parsing pour Python, utilisée dans le projet.
  • Le projet est considéré comme un bon moyen de mieux apprendre les structures de données et les algorithmes (DS&A), en particulier pour les personnes intéressées par les bases de données et Python.
  • Des questions sont posées sur la part de la suite de tests SQLite que le projet peut réussir, et sur le support des garanties ACID (Atomicity, Consistency, Isolation, Durability) ou de la planification/optimisation des requêtes.
  • Il existe une curiosité quant aux avantages et limites de ce projet en Python, notamment par rapport au C++ pour ce qui est du contrôle bas niveau de la concurrence et de la gestion du stockage.
  • Le code du projet est salué pour sa bonne lisibilité et l’excellence de ses commentaires.