Aller au contenu
learn

LadybugDB — Mission

Le cours DuckDB répond à des questions sur des lignes : combien d’exécutions, combien de temps, quel step. D’autres questions sur ce site portent sur des connexions. Combien de clics entre la page d’accueil et une leçon ? Quels fichiers changent ensemble ? Sur quels commits un workflow en échec a-t-il tourné ? En SQL, chacune d’elles devient une chaîne d’auto-jointures, ou une CTE récursive dont je dois deviner la profondeur.

Une base de données orientée graphe stocke les connexions elles-mêmes, et son langage de requête décrit directement les chemins. LadybugDB en est une qui s’exécute dans ton processus, comme DuckDB et SQLite : aucun serveur à installer.

Tu connais le SQL : SELECT, JOIN, GROUP BY, peut-être une CTE récursive. Tu écris du C# ou du Java. Tu n’as besoin de rien savoir des bases de données orientées graphe ni de Cypher.

Tables de graphe de SQL Server Neo4j LadybugDB
S’exécute comme un serveur comme un serveur dans ton processus
Schéma tables créées AS NODE et AS EDGE facultatif : les étiquettes et les propriétés apparaissent quand tu les écris obligatoire : tables de nœuds et tables de relations, avec des colonnes typées
Langage de requête T-SQL avec MATCH Cypher Cypher
Chemins de longueur quelconque SHORTEST_PATH motifs de longueur variable motifs de longueur variable, plus courts chemins
Depuis .NET Microsoft.Data.SqlClient pilote .NET de Neo4j paquet NuGet LadybugDB
Depuis Java pilote JDBC pilote Java de Neo4j paquet Maven com.ladybugdb:lbug

Sources : architecture de SQL Graph, manuel Cypher de Neo4j, différences entre LadybugDB et Neo4j.

LadybugDB s’appelait auparavant Kuzu. Les auteurs de Kuzu ont archivé son dépôt ; LadybugDB poursuit la base de code sous licence MIT, avec de nouveaux noms : la CLI s’appelle lbug, et la documentation nomme les fichiers de base de données .lbdb.

code/ladybugdb/data/extract.py lit ce dépôt au commit cbcbb42 (2026-09-14) et écrit six fichiers CSV dans code/ladybugdb/data :

  • pages.csv : les 319 pages du site (117 en anglais, 101 en français, 101 en espagnol), avec leur locale, leur cours, leur titre et leur nombre de lignes ;
  • links.csv : les 712 liens d’une page du site vers une autre, trouvés dans les liens Markdown et les attributs href hors des blocs de code ;
  • external_links.csv : les 3 712 liens vers 85 autres sites ;
  • commits.csv, parents.csv et changes.csv : les 74 commits jusqu’à cbcbb42, le parent de chacun, et les 1 019 modifications qu’ils ont apportées à 710 fichiers.

La leçon 4 ajoute les 125 exécutions de CI de code/duckdb/data/runs.json, l’instantané qu’interroge le cours DuckDB.

Les leçons 5 et 6 interrogent un autre dépôt : les projets .NET de GuitarAlchemist/ga au commit a26a7893, extraits par code/ladybugdb/data/ga/extract.py : 111 projets, 266 références de projet et 478 références de paquet.

  • modéliser des données en tables de nœuds et tables de relations, et les interroger avec des motifs Cypher ;
  • charger des fichiers CSV et JSON, et trouver les lignes qui ne respectent pas le schéma ;
  • écrire des chemins de longueur variable et des plus courts chemins, et connaître la sémantique de chemin qu’ils utilisent ;
  • reconnaître les bugs et les limites de LadybugDB, et vérifier un résultat autrement ;
  • utiliser LadybugDB depuis C# et depuis Java.
# Leçon Si tu connais SQL
1 Un premier graphe : tables, CREATE, MATCH, MERGE CREATE TABLE, INSERT, MERGE, JOIN
2 Charger des fichiers : LOAD FROM, COPY, avertissements OPENROWSET, BULK INSERT
3 Chemins : longueur variable et plus courts chemins CTE récursives
4 L’historique Git et les exécutions de CI en graphe auto-jointures, tables de jointure
5 LadybugDB depuis C# ADO.NET
6 LadybugDB depuis Java JDBC
7 Algorithmes de graphe et recherche plein texte index plein texte, CONTAINSTABLE
8 Persistance, transactions et concurrence isolation, verrous, journal des transactions
9 Un laboratoire de graphe : traductions, cycles de prérequis, atteignabilité bornée jeux d’essai, CTE récursive bornée
— Journal