(it's "node-oriented", if that even exists)
Comece aqui. Ao lidar com um aplicativo complexo como um banco de dados (até mesmo um banco de dados simples é um aplicativo complexo), você deve estar familiarizado com o histórico do domínio e com a terminologia correta e ter pelo menos uma ideia de alto nível da arquitetura. Você poderia começar a partir do artigo da Wikipedia sobre o banco de dados . Passamos alguns dias lendo todos os artigos sobre os conceitos relacionados e os diferentes tipos de banco de dados.
And since what I have in mind is neither relational nor document-oriented
Em seguida, você escolhe Relacional ou NoSQl. Se você escolher NoSQL, você deve escolher um tipo de NoSQL. Isso é extremamente importante, você não encontrará documentos arquitetônicos que discutam todas as famílias de bancos de dados diferentes. Realmente não importa qual você escolher, basta escolher um e ficar com ele.
The language does not matter in the slightest.
Sim (infelizmente), porque depois de escolher uma família de banco de dados, você deve começar a explorar o código de bancos de dados de código aberto dessa família. Existem algumas orientações genéricas sobre o que procurar:
- Codebase relativamente pequena,
- Documentos arquitetônicos ou pelo menos um blog de desenvolvimento,
- O banco de dados que você escolhe deve estar próximo do que é considerado genérico na família, seria mais difícil aprender com ele se fosse altamente especializado.
Alguns exemplos que se encaixam:
Pegue a fonte, compile e brinque com ela. Você não precisa enviar patches ou algo assim, apenas explore o código e faça pequenas alterações aqui e ali para ver o que acontece. É um processo incremental, quanto mais você brincar com ele, mais fácil será entender o que o código faz. Se o primeiro projeto que você escolheu parece extremamente difícil de entender, basta seguir para o próximo.
Outra ótima opção seria se concentrar na criação de um mecanismo para o MySQL, como @ N.B. sugere em uma resposta anterior .
Se você chegar a um ponto em que é possível 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ê poderia simplesmente escrever um clone do código que você está explorando. Não tem que ser original, alguns grandes projetos começaram como clones ou garfos.
What resources/tutorials/books can I read to understand?
Existem alguns livros:
- Manual de design de banco de dados relacional
- Banco de Dados Oracle 11g R2: Arquitetura & Internals
- Sistemas de bancos de dados orientados a objetos: conceitos e arquiteturas
- Gerenciamento de transações com restrições de tempo: restrições em tempo real em sistemas de transações de banco de dados
- Compreendendo os internos do MySQL
- Gerenciamento de objetos em sistemas de bancos de dados distribuídos para computadores fixos e móveis: uma abordagem competitiva
- Sistemas de bancos de dados em tempo real - Arquitetura e técnicas
- Arquitetura de um sistema de banco de dados
- Fundações de bancos de dados: o nível lógico
- Leituras em sistemas de banco de dados
E algumas centenas de outras, além de uma infinidade de trabalhos acadêmicos que você pode rastrear facilmente pelo Google. Você precisa definir o que deseja fazer primeiro e depois procurar um livro. Envolver-se com uma comunidade de autores de bancos de dados também ajudará você a restringir a lista de livros e talvez receba sugestões muito melhores do que as citadas acima.
Boa sorte! Estou esperando um comentário com um link para o seu repositório quando terminar. E se você nunca terminar, deixe um comentário lembrando que eu ainda não terminei o compilador que comecei a escrever em 2001.