Esta palestra ajudará a desbloquear o funcionamento interno de um Banco de Dados, desmembrando as abstrações que o compõem. Usaremos Python como nossa arma escolhida para discutir lentamente como você poderia
construir os diferentes componentes de um banco de dados.
1) Comunicando-se com seu Banco de Dados: Começamos construindo uma interface e uma linguagem que nos ajudem a nos comunicar com nosso banco de dados. Usaremos o Prompt toolkit para construir um REPL e utilizaremos uma linguagem simples baseada em SQL com expressões regulares básicas que podem analisá-la em instruções a serem executadas.
2) Trabalhando com Dados: Agora que podemos nos comunicar com nosso banco de dados usando instruções, começamos o trabalho real na construção do Datastore. Inicialmente, armazenamos todos os dados em um dicionário simples em memória e depois passamos a persistir esses dados no disco. Agora lemos os dados do disco para a memória toda vez que consultamos os dados e gravamos os dados de volta no disco, mas isso torna as coisas muito lentas :(
Esse problema é nossa entrada no belo mundo dos Índices, então, ao construir um índice Btree muito básico para armazenar referências em memória e acessar rapidamente apenas o que precisamos dos dados no disco, podemos realmente acelerar nossos tempos de acesso para consultas básicas de acesso a linhas de O(N) para O(1), onde N é o número de linhas em uma tabela.
3) Futuro: Agora podemos orgulhosamente demonstrar nosso novo e polido banco de dados que pode armazenar dados, persistir e executar consultas que são bastante rápidas graças aos nossos Índices Btree. Também discutimos como esse Banco de Dados pode ser melhorado no futuro, suportando Transações ACID completas, permitindo concorrência e lidando com bloqueios.
A melhor maneira de entender algo é construí-lo você mesmo :)