Je dois apprendre le fonctionnement des bases de données pour pouvoir les utiliser plus efficacement. Ma façon d'apprendre consiste à le faire.
Je veux créer mon propre système de base de données. Je ne parle pas de la création d'une pseudo-base de données qui utiliserait une requête pour analyser des fichiers; ce serait simplement une interface de système de fichiers avec un langage de requête. Je parle de la structure réelle d'un moteur de base de données. Et comme ce que je pense n’est ni relationnel ni orienté document (c’est «orienté nœud», s’il existe), il faudrait que toute ressource soit aussi abstraite et de haut niveau que possible.
Alors, comment pourrais-je créer cela? Quelles ressources / tutoriels / livres puis-je lire pour comprendre?
La langue n'a pas d'importance. Idéalement, le code serait un pseudo-code pour illustrer le concept, non lié à un langage particulier, mais n'importe quoi ferait l'affaire. Je n'ai rien trouvé à ce sujet sur Google (étant donné que je suis tellement analphabète sur le sujet, je ne saisis peut-être pas la bonne recherche).
Si de telles ressources ne sont pas disponibles, alors quelque chose sur la façon de créer un client serait au moins un pas dans la bonne direction.
la source
I studied open-source DBs, but their codebase is too huge
: Si quelque chose comme redis ou flockdb est trop énorme pour que vous puissiez le lire, je ne vois pas comment vous allez gérer l'écriture ou votre propre base de données.Réponses:
Commencer ici. Lorsque vous traitez avec une application complexe telle qu'une base de données (même une base de données simple est une application complexe), vous devez connaître l'historique du domaine et la terminologie appropriée et avoir au moins une idée très détaillée de l'architecture. Vous pouvez commencer par l'article de Wikipedia sur Database . J'ai passé quelques jours à lire tous les articles sur les concepts associés et les différents types de bases de données.
Ensuite, vous choisissez Relational ou NoSQl. Si vous choisissez NoSQL, vous devez choisir un type de NoSQL. C'est extrêmement important, vous ne trouverez pas de documents architecturaux traitant de toutes les familles de bases de données. Peu importe lequel vous choisissez, choisissez-en un et respectez-le.
Oui (malheureusement), car après avoir sélectionné une famille de bases de données, vous devez commencer à explorer le code des bases de données open source de cette famille. Il existe quelques directives génériques sur ce qu'il faut rechercher:
Quelques exemples qui correspondent à:
Obtenez la source, compilez-la et jouez avec elle. Vous n'avez pas besoin de soumettre des correctifs ou quoi que ce soit d'intéressant, mais d'explorer le code et de faire de petites modifications ici et là pour voir ce qui se passe. C'est un processus incrémental, plus vous y jouez, plus il sera facile de comprendre ce que fait le code. Si le premier projet que vous avez choisi semble extrêmement difficile à comprendre, passez au suivant.
Une autre option intéressante serait de vous concentrer sur la construction d’un moteur pour MySQL, comme le suggère @NB dans une réponse précédente .
Si vous atteignez un point où vous êtes capable de faire quelque chose d’utile avec le code, impliquez-vous dans la communauté du projet, c’est le moyen le plus simple de trouver des ressources plus détaillées sur les concepts en question.
Et enfin, commencez à travailler sur votre base de données. Au début, vous pouvez simplement écrire un clone extrêmement réduit du code que vous avez exploré. Cela n'a pas besoin d'être original, bon nombre de projets géniaux ont été lancés sous forme de clones ou de fourchettes.
Il y a pas mal de livres:
Et quelques centaines d’autres, plus une myriade d’articles scientifiques que vous pourriez facilement retrouver via Google. Vous devez d'abord définir ce que vous voulez faire, puis rechercher un livre. S'impliquer dans une communauté d'auteurs de bases de données similaires vous aidera également à réduire la liste des livres et peut-être à obtenir des suggestions bien meilleures que celles mentionnées ci-dessus.
Bonne chance! J'attends un commentaire avec un lien vers votre référentiel lorsque vous avez terminé. Et si vous n’avez jamais terminé, veillez à laisser un commentaire me rappelant que je n’ai toujours pas terminé le compilateur que j’ai commencé à écrire en 2001.
la source
I'm expecting a comment with a link to your repository when you're done
: très certainement! Merci encore, à vous et à tous les autres, c'était vraiment édifiant.Tu devrais juste le faire et arrêter de trop penser. Profiter du processus d'apprentissage et de l'enthousiasme sont des cadeaux.
Demander aux autres si c'est une bonne idée n'est certainement pas une bonne stratégie . Si j'avais écouté toutes les grenouilles, je travaillerais toujours chez Ikea aujourd'hui pour pousser le caddie du parking au dépôt.
Vous n'êtes pas obligé de vous justifier comme Ayende l'a fait dans cet article intéressant . La question était:
Si vous aimez le processus, ne vous inquiétez pas de l'objectif, vous avez déjà gagné.
la source
"(c'est" orienté noeud ", si cela existe même)". - C'est peut-être pour ça que tu ne trouves pas grand chose!
Plongez dans la version 0.1 et voyez où vous en êtes. Vous pouvez en apprendre davantage en essayant de produire ce que vous voulez, en demandant ce que vous "devriez" faire. Donnez-lui quelques jours, puis examinez où vous en êtes.
Il y a environ 18 ans, j'ai écrit un système de base de données (pour le plaisir, allez-y) avec des index btree et j'ai énormément appris.
la source
MySQL a une structure de moteur de stockage enfichable, cela pourrait être une idée de vérifier comment les moteurs sont créés pour fonctionner avec MySQL.
la source
Cela semble être un bon projet. Apparemment, votre objectif n'est pas de créer un logiciel de production, mais de vous familiariser avec les bases de données et le processus de création d'un système de base de données.
Je ne pense pas vraiment que vous deviez faire beaucoup de recherche. Il semble que l'objectif soit de faire l'expérience de la création d'un système de base de données basé sur des noeuds.
Voici comment je pourrais commencer:
Une fois que vous maîtriserez les bases, vous aurez une meilleure idée de ce qui est difficile ou problématique. Vous pourrez ensuite faire des recherches à ce sujet, trouver des améliorations et les intégrer.
la source
Écrire votre propre base de données «afin de comprendre comment tout cela fonctionne» est la seule bonne raison de le faire (car les bases de données sont difficiles à obtenir et difficiles à prouver). Tu es fou, mais dans le bon sens!
Afin de voir comment cela se passe, je suggère de regarder SQLite. La source SQLite ne contient qu'environ 1,3 Mo de compression, et il s’agit d’une base de données transactionnelle entièrement conforme à ACID. C'est aussi du domaine public et l'auteur principal est un gars sympa qui, j'en suis sûr, se fera un plaisir de répondre à vos questions. (Je pense que la solution la plus simple consiste à valider réellement des informations sur un disque; il est étonnamment difficile de persuader les systèmes d'exploitation et le matériel informatique de cesser de mentir et d'écrire réellement la transaction MAINTENANT, et je suis si heureux de ne jamais avoir à écrire une base de données.)
la source
Achète un livre:
http://www.springer.com/computer/database+management+%26+information+retrieval/book/978-1-84628-394-9
Les index sont l’un des aspects les plus importants des bases de données actuelles. Etudiez les alternatives qui existent comme les arbres binaires.
Lisez également sur le produit cartésien qui permet de calculer la complexité des jointures.
la source
Apprendre l'algèbre relationnelle.
Trouvez un petit moteur de base de données et apprenez la source.
Nan. Vous devez apprendre à utiliser efficacement une base de données. Vous pourriez être un meilleur conducteur si vous comprenez le fonctionnement de votre voiture, mais vous serez un meilleur conducteur si vous vous concentrez vraiment sur la conduite.
Suivez les itinéraires traditionnels: suivez un cours, lisez un livre, passez en revue vos pairs, posez des questions, utilisez l’index luke .
la source
Learn relational algebra.
En supposant que op s'intéresse aux bases de données relationnelles, bien sûr ...