BDB に格納されている値の長さ (バイト単位) のみを取得する方法はありますか? データ配列全体は必要ありません。そのサイズだけが必要です。
4 に答える
エントリ全体を取得する必要がなく、DPLを使用していない場合は、格納されているバイト配列のサイズにセカンダリインデックスを追加し、DAOがこの値を適切に更新するようにする必要があります。保存または更新します。レコードに基づいてセカンダリデータベースにKeyCreator
セカンダリキーを作成するを追加できます。size
どのタイプのクエリを実行しようとしていますか?特定のサイズのすべてのレコードを検索しますか?または、特定のレコードを取得する前に、そのサイズを知りたいですか?後者の質問には答えるのが難しいと思います。
JEバージョン(またはBDBのJavaバインディング)を使用していると想定しています。この場合、目的のキーのDatabaseEntryを取得すると、getSize()によって必要なものが提供されます。
Cバインディングを使用している場合は、DBTハンドルのサイズフィールドを確認してください。
ドキュメント ID を 1 つの BLOB データ項目値としてではなく、重複データ項目として保存する場合、DBC->count() を使用して、ID の長いリストを実際に取得することなく、一致するドキュメントの数を検出できます。それ以外の場合、Berkeley DB API は、あなたが求めているものをサポートしていないようです (たとえ、Berkeley DB API を追加することが効率的であると考えても)。私もこれに戸惑い、それが私自身のプロジェクトで思いついた解決策でした。