Estou interessado em aprender como funciona um mecanismo de banco de dados (ou seja, as partes internas dele). Conheço a maioria das estruturas básicas de dados ensinadas em CS (árvores, tabelas de hash, listas etc.), bem como um bom entendimento da teoria dos compiladores (e implementamos um intérprete muito simples), mas não entendo como seguir sobre como escrever um mecanismo de banco de dados. Procurei tutoriais sobre o assunto e não encontrei nenhum, por isso espero que outra pessoa possa me apontar na direção certa. Basicamente, gostaria de obter informações sobre o seguinte:
- Como os dados são armazenados internamente (ou seja, como as tabelas são representadas etc.)
- Como o mecanismo encontra os dados necessários (por exemplo, execute uma consulta SELECT)
- Como os dados são inseridos de maneira rápida e eficiente
E quaisquer outros tópicos que possam ser relevantes para isso. Ele não precisa ser um banco de dados em disco - mesmo um banco de dados em memória é bom (se for mais fácil), porque eu só quero aprender os princípios por trás dele.
Muito obrigado pela sua ajuda.