title: How to write a simple database engine
body: <p>I am interested in learning how a database engine works (i.e. the internals of it).  I know most of the basic data structures taught in CS (trees, hash tables, lists, etc.) as well as a pretty good understanding of compiler theory (and have implemented a very simple interpreter) but I don't understand how to go about writing a database engine.  I have searched for tutorials on the subject and I couldn't find any, so I am hoping someone else can point me in the right direction.  Basically, I would like information on the following:</p>
  
  <ul>
  <li>How the data is stored internally (i.e. how tables are represented, etc.)</li>
  <li>How the engine finds data that it needs (e.g. run a SELECT query)</li>
  <li>How data is inserted in a way that is fast and efficient</li>
  </ul>
  
  <p>And any other topics that may be relevant to this. It doesn't have to be an on-disk database - even an in-memory database is fine (if it is easier) because I just want to learn the principals behind it.</p>
  
  <p>Many thanks for your help.</p>