2

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

4

2 に答える 2

11

Berkeley DB の製品管理担当ディレクターである David Segleau はこちら。通常、Berkeley DB フォーラムで質問することをお勧めします。そこには、アクティブな Berkeley DB アプリケーション開発者の大規模なコミュニティがあります。

はい。Berkeley DB (C の元の製品) には、B-Tree、Hash、Queue、および Recno アクセス メソッドがあります。Berkeley DB Java Edition は B-Tree のみをサポートします。これの主な理由は、ユーザーの約 99% がストレージに B-Tree を使用しており、ハッシュはアプリケーションの小さなサブセットでしか使用されていないためです。

このトピックに関する有用な技術情報:

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

これがお役に立てば幸いです。

よろしく、

デイブ

于 2011-01-14T20:34:14.583 に答える
1

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

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

于 2011-01-27T23:14:13.037 に答える