2011-01-12 11 views
1

私はBDBのJava Edition 4.1.7のデータベースタイプをBTreeからHashに変更しようとしていました。コアバージョンにはDatabaseType.HASH、DatabaseType.RECNOおよびDatabaseType.Queueがあります。これらはJava Editionではサポートされていません。もしそうなら、これらを落とす理由はありますか?Java EditionでBerkeley DBデータベースタイプを変更できませんか?

答えて

10

David Segleau、Berkeley DBの製品管理担当ディレクター。一般的に、人々はBerkeley DB forumsで質問することをお勧めします。活発なBerkeley DBアプリケーション開発者のコ​​ミュニティがあります。

はい、Berkeley DB(Cのオリジナル製品)には、Bツリー、ハッシュ、キュー、およびRecnoのアクセス方法があります。 Berkeley DB Java EditionはB-Treeのみをサポートしています。これの主な理由は、ユーザーの約99%がストレージにB-Treeを使用し、ハッシュは小さなアプリケーションのサブセットのみで使用されているということです。

このトピックの周りにいくつかの有用な技術一口:

  1. ハッシュは、巨大なデータセットと使用可能なメモリキャッシュのごく少量を持っている人々のために特に有用です。この特定のシナリオでは、(キャッシュに収まらない)内部索引ページをフェッチしてレコードをフェッチするために、Bツリーに複数のI/Oが必要な場合があります。ハッシュは通常、単一のI/Oでデータレコードにアクセスできます。
  2. ハッシュは、ハッシュインデックスに暗黙の順序がないため、データに順次アクセスしたり、重複を許可したい場合には通常役に立ちません。
  3. ほとんどのアプリケーションでは、最も頻繁にアクセスされるデータレコードだけでなく、Bツリーの内部ノードを保持するのに十分なメモリキャッシュがあります。このより一般的なシナリオでは、B-treeとHashのパフォーマンスはほぼ同じです。
  4. 昨年、Berkeley DB Java Editionチームは、非常に大規模なデータセット(250GB - 低TB範囲)を使用する顧客およびアプリケーション開発者と密接に協力してきました。特に、キャッシュ効率の最大化、キャッシュエビクションアルゴリズムの改善、Javaガベージコレクションの影響の最小化に焦点を当てています。 BDB JE 4.1は、特に利用可能なキャッシュを超えるデータセットに対して、キャッシュ管理と効率の点ではるかに優れていることがわかりました。この変更の詳細については、Berkeley DBダウンロードページのBDB JE 4.1.7の変更履歴を参照してください。
  5. バークレーDBのハッシュ対Bツリーアクセス方法の詳細については、BDBリファレンスマニュアル(アクセス方法の選択)の第2章を参照してください。

これが役立つことを願っています。

よろしく、

デイブ

+0

Dave、recnoについてはどうですか? – bmargulies

+0

Recnoは数値キー値を持つbtreeです。 Recnoには、Logical Record Numberedキーの動作に関する特定の特性があります。詳細については、リファレンスガイドを参照してください:http://bit.ly/f7Kh2P。私が言及したように、ほとんどの人はBツリーを使います。Recno、HashまたはQueueを使用することに興味がある場合は、Java APIを介してBerkeley DB製品を使用することをお勧めします。 – dsegleau

0

私も同じことを理解しようとしていました。私は、(1)のシナリオで作業しているので、メモリサイズとデータセットサイズの間の特定の比率で、ハッシュをberkeley db jeで使用する可能性を高く評価します。

これにはオプションがありますか?将来これを戻す予定ですか? oracle.comのberkeley db jeのサイトでは、アクセス時間はデータセットのサイズとは無関係に一定であると言います。 BTreesを使用する場合、この主張は間違っています。

+0

Recno、Hash、またはQueueを使用する場合は、Java APIを介してBerkeley DB製品を使用することをお勧めします。 Berkeley DB Java EditionはHASHアクセス方式をサポートしていませんでした。現時点でBDB JEに追加する計画はありません。誤解を招くようなテキストがサイト上にある場合はお詫び申し上げます。明らかに、アクセス時間はBツリーの深さと必要なI/O数に依存します。索引とデータがすでにメモリー内にある場合、Bツリーの深さにはほとんど影響がありません。 – dsegleau

+0

これらのその他の製品およびパフォーマンスに関する質問は、OTNのBerkeley DBフォーラムでも尋ねることができます。 BDB Java Editionフォーラムはhttp://bit.ly/e1AYFiにあります。 – dsegleau