Il convient pour cela, mais il est peut-être plus de travail que vous êtes prêt à mettre en. BerkeleyDB est une clé très générale/magasin de valeur, donc tout ce que vous faites est à dire « pour la touche X, la valeur du magasin Y » . Plus tard, vous pouvez dire "donnez-moi la valeur de la touche X" et cela vous rendra Y. C'est vraiment tout ce qu'il fait d'un niveau élevé. Il a des caractéristiques très robustes pour garantir des propriétés de fiabilité importantes (appelées ACID, pour Atomicity, Consistency, Isolation, et Durability), et a de grandes performances, mais du point de vue du programmeur, c'est une structure de carte simple.
Alors oui, vous pouvez stocker des arbres, mais vous devez choisir une bonne représentation pour eux. Vous pouvez utiliser des clés entières (assurez-vous qu'elles sont stockées dans l'ordre des octets big-endian car BDB utilise l'ordre lexicographique sur les clés) et avez simplement une structure comme valeur contenant une liste d'entiers pour les enfants. Cependant, vous devrez toujours écrire tous vos algorithmes de traversée à la main. Sans savoir quelles exigences vous avez pour vos données hiérarchiques, il est difficile de donner une suggestion plus concrète.
SpeedWelding, pour ce qu'il est, Berkeley DB ne peut probablement pas aller beaucoup plus vite (c'est-à-dire que vous ne trouverez pas beaucoup plus rapidement, surtout si vous êtes prêt à sacrifier certaines propriétés ACID). Il vous donne un contrôle presque complet sur votre interface vers la carte, donc en théorie vous pourriez probablement construire une structure hautement optimisée pour votre cas d'utilisation particulier. Toutefois, étant donné l'interface de bas niveau, si vous implémentez des jointures, des requêtes de filtre complexes ou n'importe quel type de langage de requête non trivial, vous devrez écrire du code et des algorithmes très rapides pour suivre la grande bases de données relationnelles là-bas. Si vos données peuvent être modélisées par XML (eugh, mais je sais que certaines personnes l'apprécient), il existe une base de données existante basée sur BDB appelée BDB XML (également par Sleepycat, qui fait maintenant partie d'Oracle).Cela vous permet de stocker des documents XML arbitraires dans la base de données et d'exécuter des requêtes XPath et XQuery rapides sur la base de données. Je ne pense pas qu'il existe encore une API .NET officielle, mais je suis à peu près sûr d'avoir rencontré une liaison .NET non officielle. En général, sauf si vous avez des exigences très particulières que les solutions existantes ne permettent pas (cela ne semble pas être le cas avec votre scénario), je vous déconseille de rouler votre propre base de données (même sur haut de BDB) sauf si vous êtes très compétent avec des algorithmes efficaces et l'optimisation du code. Si vous stockez des triplets RDF, il existe des bases de données dédiées, et même les bases de données relationnelles ne leur sont pas particulièrement inadaptées. BDB XML est toujours une solution viable pour cela aussi. C'est finalement votre choix, mais si j'étais vous, je choisirais de travailler sur les problèmes les plus intéressants sans avoir à gérer les opérations de base de données de bas niveau (et j'utiliserais donc une couche mince sur le paquetage RDF).
J'ai mis à jour ma question –
Mis à jour pour répondre à cette question :) – copumpkin
Ce lecteur de flux en ligne n'est pas seulement un grand magasin de données. Il aura de solides connaissances scientifiques (traitement de texte et extraction de connaissances). Donc vous pensez que MySQL ira bien dans ce cas? –