(it's "node-oriented", if that even exists)
Inizia qui. Quando si ha a che fare con un'applicazione complessa come un database (anche un semplice database è un'applicazione complessa), si dovrebbe avere familiarità con la storia del dominio e la terminologia appropriata e avere almeno un'idea di alto livello dell'architettura. Potresti iniziare dall'articolo di Wikipedia su Database . Passato qualche giorno a leggere tutti gli articoli sui concetti correlati e sui diversi tipi di database.
And since what I have in mind is neither relational nor document-oriented
Successivamente, scegli Relational o NoSQl. Se scegli NoSQL, dovresti scegliere un tipo di NoSQL. È estremamente importante, non troverai documenti architettonici che discutano tutte le diverse famiglie di database. Non importa quale scegli, prendine uno e seguilo.
The language does not matter in the slightest.
Sì (purtroppo), perché dopo aver scelto una famiglia di database dovresti iniziare ad esplorare il codice dai database open source di quella famiglia. Ci sono alcune linee guida generiche su cosa cercare:
- Codebase relativamente piccolo,
- Documenti architettonici o almeno un blog di sviluppo
- Il database che scegli dovrebbe essere vicino a ciò che è considerato generico nella famiglia, sarebbe più difficile da imparare se fosse altamente specializzato.
Alcuni esempi adatti:
Ottieni la fonte, compila e gioca con essa. Non devi presentare patch o qualsiasi cosa che sia di fantasia, basta esplorare il codice e apportare piccole modifiche qua e là per vedere cosa succede. È un processo incrementale, più giochi con esso, più facile sarà capire cosa fa il codice. Se il primo progetto che hai scelto sembra estremamente difficile da capire, passa a quello successivo.
Un'altra ottima opzione sarebbe concentrarsi sulla creazione di un motore per MySQL, come @ N.B. suggerisce in una risposta precedente .
Se raggiungi un punto in cui sei in grado di fare qualcosa di utile con il codebase, partecipa alla comunità del progetto, questo è il modo più semplice per trovare risorse più dettagliate sui concetti coinvolti.
E poi, finalmente, inizia a lavorare sul tuo database. All'inizio potresti semplicemente scrivere un clone estremamente ridimensionato del codice che hai esplorato. Non deve essere originale, alcuni grandi progetti iniziati come cloni o forchette.
What resources/tutorials/books can I read to understand?
Ci sono alcuni libri:
E alcune centinaia di altri, oltre a una miriade di documenti accademici che potresti facilmente rintracciare tramite Google. Devi prima definire cosa vuoi fare e poi cercare un libro. Essere coinvolti in una comunità di altri autori di database ti aiuterà anche a restringere l'elenco dei libri e forse a ottenere suggerimenti molto migliori di quelli sopra.
Buona fortuna! Mi aspetto un commento con un link al tuo repository quando hai finito. E se non hai mai finito, assicurati di lasciare un commento per ricordarmi che non ho ancora finito quel compilatore che ho iniziato a scrivere nel 2001.