Cette présentation vous aidera à débloquer le fonctionnement interne d'une base de données en décomposant les abstractions qui la composent. Nous utiliserons Python comme notre arme de choix pour discuter lentement de la manière dont vous pourriez construire les différents composants d'une base de données.
1) Communication avec votre base de données : Nous commençons par créer une interface et un langage qui nous aident à communiquer avec notre base de données. Nous utiliserons Prompt toolkit pour construire un REPL et utiliser un langage simple basé sur SQL avec des expressions régulières de base qui peuvent le parser en instructions à exécuter.
2) Travailler avec les données : Maintenant que nous pouvons communiquer avec notre base de données en utilisant des instructions, nous commençons le travail réel de construction du Datastore. Nous stockons initialement toutes les données dans un simple dictionnaire en mémoire, puis nous passons à la persistance de ces données sur disque. Nous lisons maintenant les données du disque en mémoire chaque fois que nous interrogeons les données et écrivons à nouveau les données sur le disque, mais cela rend les choses très lentes :(
Ce problème est notre entrée dans le magnifique monde des Index, donc en construisant un index Btree très basique pour stocker des références en mémoire afin d'accéder rapidement uniquement à ce dont nous avons besoin dans les données sur disque, nous pouvons réellement accélérer nos temps d'accès pour les requêtes d'accès de ligne de O(N) à O(1) où N est le nombre de lignes dans une table.
3) Avenir : Nous pouvons maintenant fièrement présenter notre nouvelle base de données polie qui peut stocker des données, les persister et exécuter des requêtes qui sont assez rapides grâce à nos Index Btree. Nous discutons également de la manière dont cette base de données peut être améliorée à l'avenir en prenant en charge des transactions ACID complètes, en permettant la concurrence et en gérant les verrous.
La meilleure façon de comprendre quelque chose est de le construire vous-même :)