Cinq façons de modéliser les données polymorphiques dans les bases de données relationnelles

2025-07-09
Cinq façons de modéliser les données polymorphiques dans les bases de données relationnelles

Cet article explore cinq approches pour modéliser les données polymorphiques dans les bases de données relationnelles : table unique, clés étrangères nullables, union étiquetée, clés étrangères enfant-parent et JSON. Chaque méthode présente des avantages et des inconvénients ; par exemple, l’approche à table unique est simple mais peut être lente, tandis que JSON est facilement extensible mais manque de validation des données. L’auteur suggère de choisir la méthode la plus facile à lire, à maintenir et à déboguer, et d’éviter l’optimisation prématurée.

Lire plus

Découvertes Multiples : Le Cas des Arbres Prolly

2025-07-01
Découvertes Multiples : Le Cas des Arbres Prolly

Les arbres Prolly, une structure de données nouvelle et cruciale pour Dolt, n'ont pas été inventés une seule fois, mais au moins quatre fois indépendamment. Du projet bup d'Avery Pennarun en 2009 (qui précède même Noms), à la création du terme par Noms en 2015, aux « arbres de recherche Merkle » d'Inria en 2019 et aux « arbres Merkle définis par le contenu » de l'université DePaul en 2020, la même structure de données fondamentale est apparue à plusieurs reprises dans différents contextes. Cela met en évidence le phénomène courant des découvertes multiples en science et souligne le rôle de la demande dans l'innovation technologique. Les auteurs, de DoltHub, discutent de ce phénomène et de ses implications pour la technologie future, en utilisant leur propre expérience avec les arbres Prolly comme étude de cas.

Lire plus

go-mysql-server de Dolt après cinq ans : Le parcours d'une requête

2025-04-27
go-mysql-server de Dolt après cinq ans : Le parcours d'une requête

Cet article revient sur les cinq années d'utilisation de go-mysql-server par Dolt, en détaillant le fonctionnement interne de son moteur SQL. Il décrit le cheminement d'une requête, de l'analyse à la génération des résultats, en passant par l'analyse, la liaison, la simplification du plan, l'exploration des jointures, l'optimisation basée sur les coûts et l'exécution. Dolt utilise un analyseur récursif à gauche et une programmation dynamique ascendante pour optimiser le plan de requête, en sélectionnant la stratégie d'exécution optimale à l'aide d'un modèle de coût. L'article aborde également la gestion de la mémoire et les optimisations futures, telles que l'unification des représentations intermédiaires et la réduction des échanges de mémoire.

Lire plus
Développement

Le piège surprenant de l'allocation mémoire en Go : Une histoire de régression de 30%

2025-04-21
Le piège surprenant de l'allocation mémoire en Go : Une histoire de régression de 30%

Une refactorisation apparemment anodine dans un projet Go a entraîné une régression de performance de 30 %. Le coupable était la méthode `GetBytes` de la structure `ImmutableValue`, qui utilisait un récepteur de valeur, provoquant une allocation sur le tas à chaque appel. Les allocations sur le tas sont significativement plus coûteuses que les allocations sur la pile. La cause profonde était l'imprécision de l'analyse d'échappement du compilateur Go ; il n'a pas réussi à reconnaître que le récepteur de valeur n'échapperait pas. Le passage à un récepteur de pointeur a résolu le problème. Cet exemple souligne l'importance de comprendre les décisions d'allocation mémoire du compilateur Go et d'utiliser des types de récepteurs appropriés pour un code Go performant.

Lire plus
Développement allocation mémoire

Cursor : Éditeur de code IA – Hype vs. Réalité

2025-03-29
Cursor : Éditeur de code IA – Hype vs. Réalité

Un développeur de la base de données Dolt a testé l'éditeur de code IA Cursor pour voir s'il tenait ses promesses d'une productivité multipliée par 10. Les premières tentatives sur une base de code importante ont été décevantes, le débogage s'avérant fastidieux. Cependant, lors de la création d'un nouveau projet, Cursor a excellé, générant un mod Factorio en quelques heures. Sur un projet professionnel, Cursor a généré efficacement les fonctionnalités de base, mais a nécessité une refactoring importante. L'auteur conclut que Cursor a amélioré sa productivité d'environ 50 %, loin des 10x annoncés, en soulignant les limites de l'outil pour gérer du code complexe et comprendre les bases de code existantes.

Lire plus
Développement