Comment écrire un simple moteur de base de données

Je suis intéressé à apprendre comment un moteur de base de données fonctionne (c'est à dire à l'intérieur de celui-ci). Je sais que la plupart des structures de données de base enseignées dans les CS (arbres, tables de hachage, des listes, etc.) ainsi qu'une assez bonne compréhension de la théorie des compilateurs (et ont mis en œuvre très simple interprète), mais je ne comprends pas comment faire pour aller sur l'écriture d'un moteur de base de données. J'ai cherché des tutoriels sur le sujet et je ne pouvais pas trouver, donc je suis en espérant que quelqu'un d'autre peut me pointer dans la bonne direction. En gros, je voudrais des informations sur les éléments suivants:

  • Comment les données sont stockées en interne (c'est à dire la manière dont les tables sont représentées, etc.)
  • Comment le moteur trouve les données dont il a besoin (par exemple, exécuter une requête SELECT)
  • La façon dont les données sont insérées dans une manière rapide et efficace

Et tout autres sujets qui peuvent être pertinents pour cela. Il n'a pas à être une base de données de disque - même une base de données en mémoire est très bien (si c'est plus facile) parce que je veux apprendre les principes derrière elle.

Merci beaucoup pour votre aide.

OriginalL'auteur a_m0d | 2009-06-27