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.

0
Subscribe to my newsletter

Read articles from Jefferson Ferreira directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Jefferson Ferreira
Jefferson Ferreira