Frage

Anscheinend gibt es seit mindestens 2003 BDB-XML, aber ich bin erst kürzlich auf der Website von Oracle gestoßen: Berkeley DB XML. Hier ist der Klappentext:

Oracle Berkeley DB XML ist eine Open Source, eingebettete XML-Datenbank mit XQuery-basierten Zugriff auf in Containern gespeicherte Dokumente, die basierend auf ihrem Inhalt indiziert sind. Oracle Berkeley DB XML basiert auf Oracle Berkeley DB und erbt seine reichen Merkmale und Attribute. Wie Oracle Berkeley DB ist es mit der Anwendung in Bearbeitung, ohne dass eine menschliche Verwaltung erforderlich ist. Oracle Berkeley DB XML fügt einen Dokument -Parser, XML -Indexer und XQuery -Engine über Oracle Berkeley DB hinzu, um das schnellste und effizienteste Abruf von Daten zu ermöglichen.

Für mich scheint es, dass die zugrunde liegenden Ideen technisch klang und wahrscheinlich reifer sind als die neueren dokumentbasierten DBs wie CouchDB oder MongoDB. Soweit ich kann, unterstützt C, C ++, Ruby und Perl. Es verfügt sogar über HA-Kapazitäten wie automatische Replikation unter Verwendung eines Master-/Slave-Modells mit automatischen Wahlen.

Ich kann jedoch keine Projekte finden, die sie verwenden. Gibt es etwas grundlegend falsch daran? Ist die Lizenz zu belastend? Ist es zu kompliziert?

Warum wird es nicht verwendet?

War es hilfreich?

Lösung

Früher war ich Produktmanager für Berkeley DB -Produkte bei Oracle. Ich arbeite seit über acht Jahren an diesen BDB -Datenbanken, ich habe den "Klappentext" geschrieben, den Sie in Ihre Frage kopiert haben.

Kommerziell werden wir verwendet (nicht exexhustive Liste, ganz oben auf meinem Kopf): - Autodesk verwendet BDB XML in MAPQUEST - Farelogix verwendet BDB XML für ein Reservierungssystem - Starwood -Hotels verwendet BDB XML, um Informationen über Eigenschaften zu verwalten, die sie verwalten, verwaltet die von ihnen verwalteten Eigenschaften verwalten - Juniper Networks verwendet BDB XML im NetScreen Security Manager - Viele ich kann aufgrund von Vertragsbeschränkungen nicht benennen ... - und so weiter ...

Berkeley DB XML wurde in der Open -Source -Welt relativ ignoriert, warum ich keine Ahnung habe. Es gibt ein paar Projekte hier und da haben es genutzt, nichts all das öffentliche, von dem ich weiß. Ich habe kürzlich gesehen Ein raffinierter Blog -Beitrag Über die Verwendung von BDB XML aus EMACs. Nach dem Einrichten können Sie XQuery -Anweisungen über XML interaktiv im Texteditor ausführen. Das heißt, es ist sehr tragfähig für den kommerziellen und open -Source -Gebrauch.

Xqilla ist ein Projekt, das von den BDB XML -Ingenieuren aus einigen anderen XML -Projekten erstellt wurde, die wir im Laufe der Jahre zusammen gestrickt haben. Wir sind open Source (Apache 2.0 -Lizenz) XQilla, da es sich um eine großartige XQuery- und XML -Parsing -Bibliothek handelt. Wir sind ein Datenbankunternehmen, also das Stück, das XML nimmt, nachdem es analysiert wurde und es in unsere BTree -Datenbanken organisiert, sowie die Arbeit zur Abfrageoptimierung, -indexierung, Statistiken und einer ganzen Tonne anderer Code ist das, was unter XQilla ist, aber aber Oben BDBs Btree kleben die beiden zusammen in BDB XML. Fühlen Sie sich frei, es zu verwenden, wenn es Ihr Problem löst. Diese dort überhaupt keine Datenbank.

Das von Grund auf XML aufgebaute Produkt verfügt im Allgemeinen im Kern einige Transaktionsdatenstrukturen, die Informationen auf der Festplatte verwalten. Es gibt nicht viel Optimierung, die wir in Berkeley DB noch nicht getan haben und in Berkeley DB XML verwendet wurden. Zu sagen, dass eine Datenbank, die von Grund auf zur Verwaltung von XML erstellt wurde, erheblich besser sein wird als BDB XML Jemand hat Informationen zu einer gleichzeitigen Transaktionsdatenstruktur, die für einen effizienten XML -Speicher entscheidend ist, den BDB noch nicht implementiert.

Existieren ist eine Java XML -Datenbank, wir haben eine Java -JNI -API, wenn Sie möchten, und wir schlagen im Allgemeinen die Hose, die in Leistung, Stabilität und Skalierbarkeit testen.

Sedna ist eine gute XML-Datenbank, es ist Apache 2.0, daher ist es keine Dual-Lizenz-es, nur eine Zahnseide-Software. Ich würde vorschlagen, dass Sie es gegen BDB XML bewerten, Sie könnten überrascht sein.

Marklogic ist ein großartiger XML/XQuery -Datenbankserver, der ein sehr solides Produkt erstellt hat. Es ist keine Softwarebibliothek, sondern ein Server. Es gibt signifikante Unterschiede zwischen BDB XML und Marklogic, aber beide sind im Handel erhältlich - nur BDB XML ist Open Source.

Jemand erwähnte Elliot Rusty Harolds Blog im Zustand der XML -Datenbanken. ;-)

Schauen Sie sich Kimbro Stakens an Alte, aber immer noch relevante Bewertung (verwandelte sich von Oracle in ein Whitepaper), es ist gut, aber auch datiert. "Verwenden Sie eine native XML-Datenbank für Ihre XML-Daten: Die Entscheidung, wann eine XML-basierte XML-Datenbank besser ist als eine SQL-Datenbank"

Die wahre Autorität im Laufe der Jahre war Ron Bourrett. Er hat viel zu diesem Thema zu sagen.

MongoDB und CouchDB befinden sich in einem anderen Marktsegment. Sie verteilt, verteilt, partitioniert, letztendlich konsistentes Datenmanagement (Nicht-Säure) und einige glauben, dass sie das sehr gut machen. Ich denke, sie sind jung, die Jury ist immer noch draußen. Sie haben einen guten Start und ich hoffe, dass sie weiter wachsen. Die verteilte Geschichte von BDB XML basiert auf Einzelmeister-, Multi-Replica-immer konsistenten (wenn Sie möchten) logbasierte Replikation und Paxos-basierte Wahlalgorithmen, wenn der Master fehlschlägt. Wir partitionieren keine Daten, jeder Knoten enthält dieselben Daten (die gesamte Datenbank). Wir erlauben nicht überall Schreibvorgänge, nur beim Meister. Wir unterstützen mehr als TCP/IP für die Replikation (zum Teufel können Sie einen Hardware -Bus -Benutzerdefinierter auf Ihren Server verwenden, wenn Sie möchten). Wir haben unser HA-Produkt gebaut, um Lesekalkalierbarkeit, Systemverfügbarkeit und Fehlertoleranz zu lösen. Die verteilten Systeme von NoSQL sind für die Verfasser von Anywhereed Data Management ausgelegt. Die Wahl ist gut, oder? :)

XML als Datenschema und XQuery als Sprache, um XML -Inhalte zuzugreifen und zu verwalten, war und ist weiterhin eine sehr erfolgreiche Lösung. Vielleicht nicht so sehr in den öffentlichen Websites, die heutzutage NoSQL -Lösungen verwenden (was für mich in Ordnung ist), sondern mehr in Dokumentmanagement, Finanzen, Genomik, Bioinformatik, Datenaustausch, Messaging und vielem mehr. XML kann im Vergleich zu SQL/Relational Products eine Nischendatenbank sein, aber sie ist sicherlich viel erfolgreicher als Objektdatenbanken oder ein neues Kind in der Block NoSQL -Datenbanklösung. Jede Speicherlösung hat ihren Platz, XML wird weiterhin nützliche Dinge in der Zukunft tun.

Am Ende des Tages hoffe ich, dass Sie eine Datenbank auswählen, die Ihren Anforderungen entspricht.

Andere Tipps

Eine Sache, die Sie beachten sollten, ist die Lizenz von Berkeley DB. Wenn Sie Ihr Projekt nicht zu Open Source gehen, müssen Sie eine Lizenz von Oracle kaufen, weshalb ich vermute, dass Sie nicht mehr davon sehen. Alle Berkeley DB -Datenbanken sind sonst sehr hervorragend. Ich neige dazu, sie für alles zu verwenden, was ich nicht verteilen werde (in Hausprojekten).

Aus meinen Erfahrungen hat Berkeley DB XML viel Versprechen und viele relevante Anwendungsfälle. Sie sollten jedoch darauf achten, dass Sie nicht erwarten, dass es in allen Fällen funktioniert. Beachten Sie, dass die letzte Veröffentlichung im 22. Dezember 2009 Berkeley DB XML 2.5.16 war.

Die Technologie, auf der sie basiert, Berkeley DB, ist sehr robust und blendend schnell, wenn Sie sie für Ihren Anwendungsfall korrekt konfigurieren. Es gibt viele Details, um richtig zu werden (z. B. Transaktionen aktivieren, protokollieren, alle Flaggen verstehen, die erforderlich sind, um MVCC zum Laufen zu bringen). Ich glaube, die Mehrheit der Menschen hat Probleme aufgrund dieser Komplexität.

Ich bin allerdings auf ein paar andere Mängel gestoßen. Das größte ist, dass der Abfrageplaner beim Sortieren keine Indizes verwendet. Dies bedeutet, dass Sie kein ziemlich häufiges Datenzugriffsmuster durchführen können, das entspricht:

SELECT * FROM table ORDER BY time DESC LIMIT 100;

Wenn Sie dies tun, überprüft Berkeley DB vor der Bestellung alle Zeitwerte auf der Festplatte, was es langsam macht, wenn Sie über ein paar Zehntausende von Knoten hinausgehen. Jemand anderes hat dies auch hier gemeldet:

https://forums.oracle.com/forums/message.jspa?messageId=9754987#9754987

Sie können auch alle Indizes direkt aufzählen, aber dann verlieren Sie die Fähigkeit, Ad-hoc-Abfragen zu machen.

In den Foren berichtet auch ein seltsames Verhalten im Zusammenhang mit Indextypen und Leistung:

https://forums.oracle.com/forums/message.jspa?messageId=9753022#9753022

Achten Sie zwar schnell und zuverlässig, während der unreife Abfrageplaner vorsichtig ist.

Hängt davon ab, was Ihre Bedürfnisse sind. Ich werde keine native XML -DB gegenüber einem anderen empfehlen, aber ich kann Ihnen sagen, dass die Verlagsbranche ein Beispiel für einen gesamten Sektor ist, der relationale Datenbanken ziemlich aufgegeben hat und große Zeit in native XML -Datenbanken für den Umgang mit dem Inhalt ihrer Veröffentlichungen verschoben hat . Der prominenteste (und teuerste) ist der von Marklogic. existdb ist eine OpenSource -One, die anscheinend eine gewisse Traktion zu bekommen scheint.

Hier ist ein ausgezeichneter Artikel zu diesem Thema eines der herausragenden XML -Gurus, Elliot Rusty Harold.http://cafe.elharo.com/xml/the-state-of-native-xml-databases/

Die besten [*] XML -Repositories sind die von Grund auf gebaut, um XML zu unterstützen, wie Marklogic oder existieren.

Die Speichermotor für BDB-XML ist jedoch der ehrwürdige Berkeley DB-Motor, einer der am weitesten verbreiteten eingebetteten Datenbankmotoren. Es ist klein, schnell und stabil.

BDB-XML selbst ist sicherlich ein fähiges Produkt. Es wurde früher unter dem Namen Sleepycat verkauft, wenn dies Ihnen hilft, Referenzen zu finden. Es ist eine Kombination aus der BDB -Speichermotor mit der Xqilla XQuery Motor.

Sie können auch weitere Informationen finden, nach denen suchen Xqilla. Es ist ein ziemlich starker Motor und immer noch Open Source.

*] "Best" natürlich ein subjektiver Begriff.

Zusammenfassend sind dies alles Gründe, warum BDB-XML nicht weit verbreitet zu sein scheint:

  • Ermöglicht nur integrierte lokale Datenbanken (obwohl es Bestimmungen für die Master-Slave-Replikation gibt)
  • Nicht kostenlos für den kommerziellen Gebrauch
  • Viele konkurrierende Produkte, die von Grund auf gebaut wurden, um XML zu unterstützen

Es scheint keinen Grund zu geben, es nicht zu verwenden, aber es gibt nicht viel, um es von der Konkurrenz abzuheben. Darüber hinaus hat der jüngste Wettbewerb mehr "ooh, glänzend!" Appell- und XML -Datenbanken selbst sind immer noch ein Nischenmarkt.

Ich war in letzter Zeit für dasselbe und bin auf die gestoßen Sedna xml DBMs.

"Gibt es etwas grundlegend falsch daran?"

Ja. Es ist XML.

Und leider bedeutet dies, dass diejenigen, die erfunden haben, es sich nicht die Mühe gemacht hat, die Kraft bereits vorhandener Konzepte und Technologien wie relationale Algebra und relationaler Kalkül zu betrachten.

Es ist keine triviale Aufgabe (und das sagt es höflich aus), und jeder, der es bisher versucht hat, ist gescheitert.

Das sollte dir etwas sagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top