16

どうやら、BDB-XML は少なくとも 2003 年から存在しているようですが、Oracle の Web サイトBerkeley DB XMLで偶然見つけたのはつい最近のことです。宣伝文句は次のとおりです。

Oracle Berkeley DB XML は、コンテナに格納され、そのコンテンツに基づいて索引付けされたドキュメントへの XQuery ベースのアクセスを備えた、オープン ソースの埋め込み可能な XML データベースです。Oracle Berkeley DB XML は、Oracle Berkeley DB の上に構築され、その豊富な機能と属性を継承しています。Oracle Berkeley DB と同様に、アプリケーションと一緒にインプロセスで実行され、人による管理は必要ありません。Oracle Berkeley DB XML は、ドキュメント パーサー、XML インデクサー、および XQuery エンジンを Oracle Berkeley DB の上に追加して、最も高速で効率的なデータ検索を可能にします。

私には、根底にあるアイデアは技術的に健全であり、おそらく CouchDB や MongoDB のような新しいドキュメント ベースの DB よりも成熟しているように思えます。私が判断できる限り、C、C++、Ruby、および Perl をサポートしています。自動選択によるマスター/スレーブ モデルを使用した自動レプリケーションなどの HA 機能もあります。

ただし、それを使用するプロジェクトが見つからないようです。根本的に何か間違っているのでしょうか?ライセンスは面倒ですか?複雑すぎませんか?

なぜ使われていないのですか?

4

8 に答える 8

47

私は以前、Oracle で Berkeley DB 製品のプロダクト マネージャーを務めていました。私はこれらの BDB データベースに 8 年以上取り組んできました。あなたがコピーした「宣伝文句」を質問に書きました。

商業的には、次のように使用されています (すべてを網羅しているわけではありませんが、頭の片隅にあるものです)。

  • オートデスクは Mapquest で BDB XML を使用します
  • Farelogix は予約システムに BDB XML を使用しています
  • スターウッド ホテルは BDB XML を使用して、管理する施設に関する情報を管理します
  • ジュニパーネットワークスは、NetScreen セキュリティ マネージャーで BDB XML を使用します。
  • 契約上の制約により名前を挙げられないことが多い...
  • 等々...

Berkeley DB XML は、オープン ソースの世界では比較的無視されてきました。その理由はわかりません。あちこちでいくつかのプロジェクトがあり、私が知っている公開されたものは何もありません。最近、 Emacs 内から BDB XML を使用する方法についての気の利いたブログ記事を見ました。セットアップが完了すると、テキスト エディター内で XML に対して XQuery ステートメントを対話的に実行できます。とはいえ、商用およびオープンソースでの使用には非常に適しています。

XQilla は、BDB の XML エンジニアが、私たちが何年にもわたって編み上げてきた他のいくつかの XML プロジェクトから作成されたプロジェクトです。XQilla は優れた XQuery および XML 解析ライブラリであるため、オープン ソース化 (Apache 2.0 ライセンス) しました。私たちはデータベース会社であるため、解析後に XML を取得し、それを Btree データベースに編成する部分と、クエリの最適化、インデックス作成、統計、およびその他の大量のコードに関する作業は、XQilla の下にありますが、 BDB の btree の上で、2 つを BDB XML に結合します。問題が解決する場合は、自由に使用してください。データベースはまったくありません。

XML 用にゼロから構築された製品は、通常、ディスク上の情報を管理するいくつかのトランザクション データ構造をコアに持っています。Berkeley DB でまだ実行できず、Berkeley DB XML で使用されていない最適化はほとんどありません。XML を管理するためにゼロから構築されたデータベースが BDB XML よりも大幅に優れていると言うのは、Berkeley DB に何かが欠けていると言っているのと同じです。ここに弁明の余地があるとは思いませんが、誰かが、BDB がまだ実装していない、効率的な XML ストレージにとって重要な並行トランザクション データ構造に関する情報を持っています。

eXist は Java XML データベースです。必要に応じて Java JNI API を用意しています。パフォーマンス、安定性、スケーラビリティのテストでは、通常、eXist に勝っています。

Sedna は優れた XML データベースです。これは Apache 2.0 であるため、デュアル ライセンスではなく、単なる FLOSS ソフトウェアです。BDB XML に対してベンチマークすることをお勧めします。驚くかもしれません。

MarkLogic は優れた XML/XQuery データベース サーバーであり、非常に堅実な製品を構築しています。これはソフトウェア ライブラリではなく、サーバーです。BDB XML と MarkLogic には大きな違いがありますが、どちらも市販されており、BDB XML のみがオープン ソースです。

XML データベースの状態に関する Elliot Rusty Harold のブログについて誰かが言及していましたが、これは 2007 年頃のことであることに注意してください。;-)

Kimbro Staken の古いが、まだ適切なレビュー( Oracle によってホワイトペーパーに変更された) を見てみましょう。「XML データにネイティブ XML データベースを使用する: XQuery ベースのネイティブ XML データベースが SQL データベースより優れている場合の判断」

長年にわたる真の権威はロン・ブーレットでした。彼はこの件に関して言いたいことがたくさんあります。

MongoDB と CouchDB は、異なる市場セグメントにあります。彼らは、分散、分割、最終的に一貫性のある BASE スタイル (非 ACID) のデータ管理を行っており、それを非常にうまく行っていると考えている人もいます。彼らは若いと思います。陪審員はまだ出ていません。彼らは良いスタートを切っており、私は彼らが成長し続けることを願っています. BDB XML の分散型ストーリーは、単一マスター、複数レプリカ、常に一貫性のある (必要に応じて) ログベースのレプリケーション、およびマスターに障害が発生した場合の PAXOS ベースの選択アルゴリズムに基づいて構築されています。データを分割しません。すべてのノードには同じデータ (データベース全体) が含まれます。どこでも書き込みを許可するのではなく、マスターでのみ許可します。レプリケーション用に TCP/IP 以外にもサポートしています (まあ、必要に応じて、サーバーにカスタムのハードウェア バスを使用できます)。私たちは、読み取りスケーラビリティ、システムの可用性、耐障害性を解決するために HA 製品を構築しました。NoSQL の分散システムは、書き込み場所を問わずに分割されたデータ管理用に設計されています。選択は良いですよね?:)

データ スキーマとしての XML と、XML コンテンツにアクセスして管理するための言語としての XQuery は、非常に成功したソリューションであり続けています。最近の NoSQL ソリューションを使用しているより一般的な Web サイトではそれほどでもないかもしれませんが (これは問題なく、私にとっては興味深いことです)、ドキュメント管理、金融、ゲノミクス、バイオインフォマティクス、データ交換、メッセージングなどの多くの分野ではそうです。XML は、SQL/リレーショナル製品と比較するとニッチなデータベースかもしれませんが、オブジェクト データベースやブロック NoSQL データベース ソリューションの新しい子供よりもはるかに成功していることは確かです。すべてのストレージ ソリューションにはそれぞれの場所があり、XML は将来にわたって有用なことを行い続けます。

結局のところ、ニーズに合ったデータベースを選択していただければ幸いです。

于 2010-06-14T22:36:42.573 に答える
7

覚えておくべきことの 1 つは、Berkeley DB のライセンスです。プロジェクトをオープンソース化する予定がない限り、Oracle からライセンスを購入する必要があります。それ以外の点では、すべての Berkeley DB データベースは非常に優れています。私は配布しないもの (社内プロジェクト) にそれらを使用する傾向があります。

于 2009-10-05T16:35:39.887 に答える
4

私の経験からすると、Berkeley DB XML には多くの可能性があり、関連する多くのユース ケースがあります。ただし、すべての場合に機能することを期待しないように注意する必要があります。最後のリリースは、2009 年 12 月 22 日の Berkeley DB XML 2.5.16 であることに注意してください。

ベースとなるテクノロジーである Berkeley DB は、ユースケースに合わせて正しく構成すれば、非常に堅牢で驚くほど高速です。正しく処理するための詳細が多数あります (トランザクションの有効化、ログ記録、MVCC を機能させるために必要なすべてのフラグの理解など)。この複雑さのために、大多数の人が問題を抱えていると思います。

ただし、他にもいくつかの欠点に遭遇しました。最大の問題は、クエリ プランナーが並べ替え時にインデックスを使用しないことです。これは、次のような非常に一般的なデータ アクセス パターンを実行できないことを意味します。

SELECT * FROM table ORDER BY time DESC LIMIT 100;

これを行うと、Berkeley DB は順序付けの前にディスク上の時間のすべての値をチェックするため、ノード数が数万を超えると速度が低下します。他の誰かがここでもこれを報告しました:

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

任意のインデックスを直接列挙することもできますが、アドホック クエリを実行できなくなります。

フォーラムでは、インデックスの種類とパフォーマンスに関連するいくつかの奇妙な動作も報告されています。

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

そのため、キーベースのアクセスは高速で信頼性がありますが、未熟なクエリ プランナーには注意してください。

于 2012-05-04T18:17:54.017 に答える
3

あなたのニーズが何であるかに依存します。あるネイティブxmlDBを別のDBよりも推奨することはしませんが、パブリッシング業界は、リレーショナルデータベースをほとんど放棄し、パブリケーションのコンテンツを処理するためにネイティブxmlデータベースに大きく移行したセクター全体の例であると言えます。 。最も目立つ(そして最も高価な)のはMarkLogicのものです。eXistDBはオープンソースであり、ある程度の注目を集めているようです。

これは、優れたxmlの達人の1人であるElliotRustyHaroldによるこのテーマに関する優れた記事です。 http://cafe.elharo.com/xml/the-state-of-native-xml-databases/

于 2009-10-01T14:15:07.620 に答える
3

最高の[*] XML リポジトリは、 MarkLogiceXistなど、XML をサポートするためにゼロから構築されたものです。

ただし、BDB-XML のストレージ エンジンは、最も普及している組み込みデータベース エンジンの 1 つである由緒ある Berkeley DB エンジンです。小さくて速くて安定しています。

BDB-XML自体は確かに有能な製品です。以前は Sleepycat という名前で販売されていましたが、参考文献を見つけるのに役立ちます。これは、BDB ストレージ エンジンとXQilla XQuery エンジンを組み合わせたものです。

また、 XQillaを検索すると、さらに詳しい情報が見つかる場合があります。これはかなり強力なエンジンであり、まだオープン ソースです。

[*] もちろん、「最高」は主観的な用語です。

于 2009-10-01T14:28:42.853 に答える
1

結論として、BDB-XML が広く使用されていないように見える理由は次のとおりです。

  • 組み込みのローカル データベースのみを許可します (ただし、マスター/スレーブ レプリケーションを実行するための規定はあります)。
  • 商用利用は無料ではありません
  • XML をサポートするためにゼロから構築された多くの競合製品

それを使用しない理由はないようですが、同様に、競合他社から際立っていることはあまりありません. その上、最近のコンペティションには「おお、ピカピカ!」のほうが多いです。アピールと XML データベース自体は、まだニッチな市場です。

于 2009-10-08T10:27:27.053 に答える
-1

私は最近同じことをしており、 Sedna XML dbmsに出くわしました。

于 2009-10-06T13:44:57.590 に答える
-7

「何か根本的に間違っているのでしょうか?」

はい。XMLです。

そして残念なことに、それを発明した人々は、関係代数や関係微積分などの既存の概念や技術の威力に目を向けようとしなかったことを意味します。

それらよりもうまくやることは簡単な作業ではなく (丁寧に言えば)、これまでに試みたすべての人が失敗しています。

それはあなたに何かを伝えるはずです。

于 2009-09-30T16:24:05.770 に答える