Question

Apparemment, BDB-XML a été autour depuis au moins 2003, mais je suis tombé récemment sur sur le site Web d'Oracle: Berkeley DB XML . Voici le texte de présentation:

  

XML Oracle Berkeley DB est une open source, base de données XML intégrable avec accès basé XQuery aux documents stockés dans des conteneurs et indexés en fonction de leur contenu. XML Oracle Berkeley DB est construit sur Oracle Berkeley DB et hérite de ses fonctions riches et attributs. Comme Oracle Berkeley DB, il fonctionne en cours avec l'application sans nécessité pour l'administration humaine. XML Oracle Berkeley DB ajoute un analyseur de documents, XML indexeur et moteur XQuery sur Oracle Berkeley DB pour permettre la plus rapide, la récupération plus efficace des données.

Pour moi, il semble que les idées sous-jacentes sont techniquement fiables et probablement plus mature que les nouveaux blocs de données basées sur des documents comme CouchDB ou MongoDB. Il a un support pour C, C ++, Ruby et Perl, pour autant que je sache. Il a même HA des fonctionnalités telles que la réplication automatique à l'aide d'un modèle maître / esclave avec élection automatique.

Cependant, je ne peux pas sembler trouver des projets qui l'utilisent. Y at-il quelque chose de fondamentalement mauvais avec elle? La licence est trop onéreux? Est-il trop compliqué?

Pourquoi est-il pas utilisé?

Était-ce utile?

La solution

Je l'habitude d'être le chef de produit pour les produits Berkeley DB à Oracle. Je travaille autour de ces bases de données BDB depuis plus de huit ans, je l'ai écrit le « texte de présentation » vous avez copié dans votre question.

dans le commerce que nous sommes habitués dans (liste non exhaustive, juste à côté du haut de ma tête):  - Autodesk utilise XML BDB dans MapQuest  - Farelogix utilise XML BDB pour un système de réservation  - Starwood Hotels utilise XML BDB pour gérer des informations sur les propriétés qu'ils gèrent  - Juniper Networks utilise XML BDB dans le gestionnaire de sécurité NetScreen  - beaucoup je ne peux pas nommer en raison des restrictions de contrat ...  - et ainsi de suite ...

Berkeley DB XML a été relativement ignorée dans le monde open source, pourquoi je ne sais pas. Il y a quelques projets ici et là ont utilisé, rien tout ce public que je connais. Je ne l'ai récemment un billet de blog nifty sur l'utilisation de BDB XML à partir d'Emacs. Une fois la configuration que vous pouvez exécuter XQuery sur XML de manière interactive dans l'éditeur de texte. Cela dit, il est très viable pour une utilisation commerciale et open source.

xqilla est un projet créé par les ingénieurs XML BDB de quelques autres projets XML, nous tricotée ensemble au cours des années. Nous open source (licence Apache 2.0) xqilla parce qu'il est une grande bibliothèque et l'analyse syntaxique XQuery XML. Nous sommes une entreprise de base de données, de sorte que la pièce qui prend XML après qu'il a été analysé et organise dans nos bases de données btree ainsi que les travaux sur l'optimisation des requêtes, l'indexation, les statistiques, et une tonne tout autre code est ce qui se trouve sous xqilla mais au-dessus de btree de BDB coller les deux ensemble en XML BDB. Ne hésitez pas à utiliser si cela résout votre problème, ceux-ci aucune base de données du tout.

construit produit à partir de zéro pour XML ont généralement quelques structures de données transactionnelles à leur base qui gèrent des informations sur le disque. Il n'y a pas beaucoup d'optimisation qui peut être fait que nous avons pas encore fait à Berkeley DB et utilisé à Berkeley DB XML. Dire qu'une base de données construite à partir du sol pour gérer XML va être beaucoup mieux que BDB XML dit qu'il ya quelque chose qui manque de Berkeley DB, je ne pense pas qu'il y un argument défendable ici, mais je suis prêt à apprendre si quelqu'un a des informations sur une structure de données simultanées, des transactions critiques pour le stockage XML efficace BDB ne met pas en œuvre déjà.

est une base de données eXist XML Java, nous avons une API Java JNI si vous voulez et nous battre généralement le pantalon existez au large dans les tests de performance, la stabilité et l'évolutivité.

Sedna est une bonne base de données XML, il est Apache 2.0 il est donc pas une double licence, il est tout simplement un logiciel FLOSS. Je vous suggère de référence contre XML BDB, vous pourriez être surpris.

MarkLogic est un XML / serveur de base de données XQuery, ils ont construit un produit très solide. Ce n'est pas une bibliothèque logicielle, il est un serveur. Il existe des différences significatives entre XML et BDB MarkLogic, mais ils sont à la fois disponibles dans le commerce - que BDB XML est open source

.

Quelqu'un a mentionné le blog de Elliot Rusty Harold sur l'état des bases de données XML, faites attention, il est vers 2007 - hey, est pas avant toute base de données NoSQL existait? ; -)

Jetez un oeil à la ancienne mais toujours examen pertinent ( transformé en un livre blanc par Oracle ), il est bon, mais aussi daté. « Utiliser une base de données XML native pour vos données XML: Décider quand une base de données XML native basée XQuery-est meilleure qu'une base de données SQL »

L'autorité réelle au fil des ans a été Ron Bourrett . Il a beaucoup à dire sur le sujet.

MongoDB et CouchDB sont dans un segment de marché différent. Ils ne distribués, cloisonné,éventuellement cohérente style BASE gestion des données (non acide) et certains pensent qu'ils le font très bien. Je pense qu'ils sont jeunes, le jury est encore. Ils sont à un bon départ et j'espère qu'ils continuent de croître, le stockage de données est une chose difficile à obtenir à droite et une taille ne correspond pas le problème de tous / besoins. L'histoire distribuée de BDB XML est construit sur un seul maître, multi-réplique toujours cohérente (si vous le souhaitez) la réplication et les algorithmes électoraux à base PAXOS basée log lorsque le maître échoue. Nous ne divisons pas de données, chaque nœud contient les mêmes données (la base de données entière). Nous ne permettons pas partout écrit, seulement au maître. Nous soutenons la réplication plus de TCP / IP (Heck, vous pouvez utiliser un bus matériel personnalisé à votre serveur si vous voulez). Nous avons construit notre produit HA pour résoudre lecture évolutivité, la disponibilité du système et la tolérance aux pannes. Les systèmes distribués de NoSQL sont conçus pour écrire la gestion des données partout partitionné. Le choix est bon, non? :)

XML en tant que schéma de données et XQuery comme langue d'accès et de gérer du contenu XML a été et continue d'être une solution très réussie. Peut-être pas tant dans les sites plus publics utilisant des solutions NoSQL ces jours-ci (ce qui est bien et intéressant pour moi), mais plus dans la gestion des documents, la finance, la génomique, bioinformatique, échange de données, la messagerie, et bien plus encore. XML peut être une base de données de niche par rapport aux produits SQL / relationnels mais il est certainement beaucoup plus de succès que les bases de données d'objets ou de tout nouveau sur la solution de base de données NoSQL bloc. Chaque solution de stockage a sa place, XML continuera à faire des choses utiles loin dans l'avenir.

A la fin de la journée, je l'espère vous choisissez une base de données convient à vos besoins.

Autres conseils

Une chose à garder à l'esprit est la licence de Berkeley DB. À moins que vous allez ouvrir la source de votre projet, vous aurez besoin d'acheter une licence d'Oracle, qui est la raison pour laquelle je pense que vous ne voyez pas plus. Toutes les bases de données Berkeley DB sont tout à fait excellente autrement. J'ai tendance à les utiliser pour tout ce que je ne vais pas distribuer (dans des projets de maison).

A partir de mes expériences Berkeley DB XML a beaucoup de promesses et beaucoup de cas d'utilisation pertinents. Mais vous devez être prudent de ne pas attendre à travailler dans tous les cas. Notez que la dernière version a été Berkeley DB XML 2.5.16 Décembre chez 22 2009.

La technologie elle est basée sur Berkeley DB, est très robuste et ultra rapide, si vous configurez correctement pour votre cas d'utilisation. Il y a beaucoup de détails pour obtenir le droit (par exemple permettre des transactions, l'exploitation forestière, comprendre tous les drapeaux nécessaires pour faire fonctionner MVCC). Je crois que la majorité des gens ont des problèmes en raison de cette complexité.

J'ai couru dans quelques autres défauts bien. Le plus important est que le planificateur de requêtes ne sera pas utiliser les index lors du tri. Cela signifie que vous ne pouvez pas faire un modèle d'accès aux données assez commun qui est l'équivalent de:

SELECT * FROM table ORDER BY time DESC LIMIT 100;

Si vous le faites Berkeley DB vérifiera toutes les valeurs de temps sur le disque avant de commander, ce qui le rend lent quand vous allez au-delà de quelques dizaines de milliers de nœuds. Quelqu'un a signalé d'autre cela aussi bien ici:

https://forums.oracle.com/forums/message. JSPA? messageID = 9754987 # 9754987

Vous pouvez énumérer tous les index directement aussi bien, mais vous perdez la possibilité de faire des requêtes ad hoc.

En outre rapporté sur les forums est un comportement étrange liés à des types d'indices et de performance:

https://forums.oracle.com/forums/message. JSPA? messageID = 9753022 # 9753022

Ainsi, alors que la clé d'accès à base est rapide et fiable, prenez garde de son planificateur de requêtes immature.

Cela dépend de vos besoins. Je ne recommanderais pas un DB XML natif sur une autre, mais je peux vous dire que l'industrie de l'édition est un exemple d'un secteur qui a assez des bases de données relationnelles beaucoup abandonné et déplacé grand temps aux bases de données XML natives pour gérer le contenu de leurs publications . Le plus important (et le plus cher) est celui de MarkLogic. eXistDB est un opensource qui semble obtenir une certaine traction.

Voici un excellent article sur ce sujet par l'un des gourous xml prééminent, Elliot Rusty Harold. http://cafe.elharo.com/xml/the -state-de-native-xml-bases de données /

Les meilleurs [*] référentiels XML sont ceux construits à partir du sol pour soutenir XML, comme MarkLogic ou existez.

Cependant, le moteur de stockage pour BDB XML est le moteur vénérable Berkeley DB, un des moteurs de base de données les plus répandues embarqués. Il est petit, rapide et stable.

BDB XML lui-même est certainement un produit capable. Il était auparavant vendu sous le nom de Sleepycat, si cela vous aide à trouver des références. Il est une combinaison du moteur BDB avec xqilla moteur XQuery.

Aussi, vous pouvez trouver plus d'informations pour la recherche xqilla . Il est un moteur assez puissant, et encore open source.

[*] "meilleur" bien sûr, étant un terme subjectif.

En conclusion, ce sont toutes les raisons pour lesquelles BDB XML ne semble pas largement utilisé:

  • Seulement intégré permet, les bases de données locales (bien qu'il existe des dispositions pour faire la réplication maître-esclave)
  • Pas libre pour un usage commercial
  • De nombreux produits concurrents qui ont été construits à partir du sol pour soutenir XML

Il ne semble pas y avoir de raison de ne pas l'utiliser, mais aussi il n'y a pas grand-chose à faire se démarquer de la concurrence. En plus de cela, la concurrence récente a plus d'un « Ooh, brillant! » appel et les bases de données XML sont eux-mêmes encore un marché de niche.

Je suis pour la même ces derniers temps et suis tombé sur les Sedna XML dbms .

"Y at-il quelque chose de fondamentalement mauvais avec elle?"

Oui. Il est XML.

Et malheureusement cela signifie que ceux qui ont inventé il n'a pas pris la peine de jeter un oeil à la puissance des concepts et des technologies déjà existantes comme, par exemple, l'algèbre et le calcul relationnel.

Faire mieux que ceux ne sont pas une tâche triviale (et c'est le mettre poliment), et tous ceux qui ont essayé jusqu'à présent a échoué.

Cela devrait vous dire quelque chose.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top