(é "orientado a nós", se isso existir)
Começa aqui. Ao lidar com um aplicativo complexo como um banco de dados (mesmo um banco de dados simples é um aplicativo complexo), você deve estar familiarizado com o histórico do domínio e com a terminologia apropriada e ter pelo menos uma idéia de nível muito alto da arquitetura. Você pode começar do artigo da Wikipedia sobre banco de dados . Passei alguns dias lendo todos os artigos sobre os conceitos relacionados e os diferentes tipos de banco de dados.
E como o que tenho em mente não é relacional nem orientado a documentos
Em seguida, você escolhe Relational ou NoSQl. Se você escolher o NoSQL, deverá escolher um tipo de NoSQL. Isso é extremamente importante, você não encontrará nenhum documento arquitetural que discuta todas as diferentes famílias de bancos de dados. Realmente não importa qual você escolher, basta escolher um e ficar com ele.
O idioma não importa nem um pouco.
Sim (infelizmente), porque depois de escolher uma família de bancos de dados, você deve começar a explorar o código nos bancos de dados de código aberto dessa família. Existem algumas diretrizes genéricas sobre o que procurar:
- Base de código relativamente pequena,
- Documentos arquitetônicos ou pelo menos um blog de desenvolvimento,
- O banco de dados escolhido deve estar próximo do que é considerado genérico na família; seria mais difícil aprender com isso, se for altamente especializado.
Alguns exemplos que se encaixam:
Obtenha a fonte, compile-a e brinque com ela. Você não precisa enviar patches ou qualquer coisa que deseje, basta explorar o código e fazer pequenas alterações aqui e ali para ver o que acontece. É um processo incremental, quanto mais você brinca com ele, mais fácil será entender o que o código faz. Se o primeiro projeto escolhido parecer extremamente difícil de entender, passe para o próximo.
Outra ótima opção seria se concentrar na construção de um mecanismo para o MySQL, como o @NB sugere em uma resposta anterior .
Se você chegar a um ponto em que é capaz de fazer algo útil com a base de código, envolva-se na comunidade do projeto, essa é a maneira mais fácil de encontrar recursos mais detalhados sobre os conceitos envolvidos.
E, finalmente, comece a trabalhar no seu banco de dados. No começo, você pode escrever um clone extremamente reduzido do código que está explorando. Não precisa ser original, alguns ótimos projetos começaram como clones ou garfos.
Quais recursos / tutoriais / livros posso ler para entender?
Existem alguns livros:
E algumas outras centenas, além de uma infinidade de trabalhos acadêmicos que você pode rastrear facilmente via Google. Você precisa definir o que deseja fazer primeiro e depois procurar um livro. O envolvimento com uma comunidade de colegas autores de bancos de dados também ajudará você a restringir a lista de livros e, talvez, a obter sugestões muito melhores do que as anteriores.
Boa sorte! Estou esperando um comentário com um link para o seu repositório quando terminar. E se você nunca terminar, não deixe de comentar que ainda não terminei o compilador que comecei a escrever em 2001.