Por que estou construindo um banco de dados do zero em C++?

Deixando o conhecimento raso para trás
Você já parou para pensar no que realmente acontece quando faz um simples SELECT? Pois é, eu também não. E essa resposta me incomodou.
O projeto AuroraBD surgiu dessa inquietação, basicamente se trata da construção de um banco de dados totalmente do zero. A proposta desse projeto não é fazer frente aos SGBD’s que já existem no mercado, até porque sejamos realistas, eu estou indo nessa empreitada sozinho. A proposta é construir um banco de dados para fins de aprendizado.
De onde surgiu a ideia?
Mais do que um mero projeto “feito por fazer”, a ideia por trás do AuroraBD surgiu como algo além disso. Para contextualizar, a ideia veio através de um vídeo do Augusto Galego onde ele separa o que é conhecimento raso de conhecimento profundo e destaca a importância por trás de tal conhecimento aprofundado sobre o como as ferramentas funcionam. Foi nesse video que comecei a me perguntar: Eu tenho esse tipo de conhecimento? E não, eu ainda não tenho.
Como um SELECT simples é processado?
Como as queries são otimizadas?
Como os dados são armazenados no disco?
E o famoso ACID? Como ele é de fato implementado?
Foram exatamente essas perguntas, e muitas outras, que eu me propus a responder.
Por que C++?
Bom, eu queria me propor a realmente entender um pouco mais do funcionamento de baixo nível da máquina, então pensei… Vamos ao nosso bom e velho C++. Mas admito que ele não foi minha primeira escolha, a principio eu cheguei a cogitar uma abordagem dentro do paradigma funcional, o qual eu carrego um apreço bem grande, talvez um Haskell ou OCaml, mas cheguei a conclusão de que eu queria ter a experiência de mexer de fato com o baixo nível e essas ferramentas não me permitiriam tal liberdade. Cheguei a considerar por um mísero momento Rust, mas eu ainda não enlouqueci de vez rsrs.
Mas, que fique claro, que o aprendizado de C++, embora vá acontecer, não é o foco principal desse projeto. O foco é de fato entender o funcionamento por trás de um banco de dados.
Neste blog, vou documentar cada passo, erro e aprendizado que eu tiver com esse projeto. Se você também tem curiosidade sobre esses fundamentos, te convido a me acompanhar nessa jornada.
Subscribe to my newsletter
Read articles from Jefferson Ferreira directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
