(es ist "knotenorientiert", falls es das überhaupt gibt)
Fang hier an. Wenn Sie sich mit einer komplexen Anwendung wie einer Datenbank befassen (selbst eine einfache Datenbank ist eine komplexe Anwendung), sollten Sie mit der Geschichte der Domäne und der richtigen Terminologie vertraut sein und zumindest eine sehr genaue Vorstellung von der Architektur haben. Sie können mit dem Wikipedia-Artikel in der Datenbank beginnen . Verbrachte ein paar Tage damit, alle Artikel zu den verwandten Konzepten und den verschiedenen Datenbanktypen zu lesen.
Und da ist das, was ich vorhabe, weder relational noch dokumentenorientiert
Als nächstes wählen Sie Relational oder NoSQl. Wenn Sie sich für NoSQL entscheiden, sollten Sie einen NoSQL-Typ auswählen. Dies ist äußerst wichtig, da Sie keine Architekturdokumente finden, in denen alle verschiedenen Datenbankfamilien behandelt werden. Es ist nicht wirklich wichtig, welche Sie auswählen, wählen Sie einfach eine und bleiben Sie dabei.
Die Sprache spielt keine Rolle.
Ja, (leider), denn nachdem Sie eine Datenbankfamilie ausgewählt haben, sollten Sie Code aus Open-Source-Datenbanken dieser Familie untersuchen. Es gibt einige allgemeine Richtlinien, nach denen gesucht werden muss:
- Relativ kleine Codebasis
- Architekturdokumente oder zumindest ein Entwicklungsblog,
- Die Datenbank, die Sie auswählen, sollte in der Nähe dessen liegen, was in der Familie als generisch gilt. Es wäre schwieriger, daraus zu lernen, wenn sie hochspezialisiert ist.
Einige Beispiele, die passen:
Holen Sie sich den Quellcode, kompilieren Sie ihn und spielen Sie damit herum. Sie müssen keine Patches oder ähnliches einreichen. Sehen Sie sich einfach den Code an und nehmen Sie hier und da kleine Änderungen vor, um zu sehen, was passiert. Es ist ein inkrementeller Prozess. Je mehr Sie damit spielen, desto einfacher wird es, die Funktionsweise des Codes zu verstehen. Wenn das erste Projekt, das Sie ausgewählt haben, äußerst schwer zu verstehen ist, fahren Sie mit dem nächsten fort.
Eine weitere großartige Option wäre, sich auf die Entwicklung einer Engine für MySQL zu konzentrieren, wie @NB in einer früheren Antwort nahe legt .
Wenn Sie an einem Punkt angelangt sind, an dem Sie in der Lage sind, etwas Nützliches mit der Codebasis zu tun, beteiligen Sie sich an der Community des Projekts. Auf diese Weise finden Sie am einfachsten detailliertere Ressourcen zu den betreffenden Konzepten.
Und dann können Sie endlich mit der Arbeit an Ihrer Datenbank beginnen. Zuerst könnten Sie einfach einen extrem verkleinerten Klon des Codes schreiben, den Sie untersucht haben. Es muss nicht originell sein, viele großartige Projekte begannen als Klone oder Gabeln.
Welche Ressourcen / Tutorials / Bücher kann ich lesen, um sie zu verstehen?
Es gibt einige Bücher:
Und ein paar hundert weitere sowie eine Vielzahl von wissenschaftlichen Artikeln, die Sie problemlos über Google nachverfolgen können. Sie müssen zunächst definieren, was Sie tun möchten, und dann nach einem Buch suchen. Wenn Sie sich auf eine Community von anderen Datenbankautoren einlassen, können Sie auch die Liste der Bücher eingrenzen und möglicherweise viel bessere Vorschläge als die oben genannten erhalten.
Viel Glück! Ich erwarte einen Kommentar mit einem Link zu Ihrem Repository, wenn Sie fertig sind. Und wenn Sie noch nie fertig sind, hinterlassen Sie einen Kommentar, der mich daran erinnert, dass ich den Compiler, mit dem ich 2001 angefangen habe, noch nicht fertiggestellt habe.