14

LevelDBについて読んでいて、次のことがわかりました。

Chrome ブラウザーの今後のバージョンには、LevelDB の上に構築された IndexedDB HTML5 API の実装が含まれています。

IndexedDBは、データをインデックス化する機能を持つ単純なキー/値ストアでもあります。

私の質問は、キー/値ストアの上にインデックスを構築するにはどうすればよいですか? インデックスがその最下位レベルにあることは n-ary ツリーであることを知っており、データベースでデータがインデックス付けされる方法を理解しています。しかし、LevelDB のようなキー/バリュー ストアを使用してデータベース インデックスを作成するにはどうすればよいでしょうか?

4

2 に答える 2

9

重要な機能は、カスタム コンパレータをサポートすることではなく、キーを介した順序付けされた反復をサポートし、部分キーを検索することです。文字列値を分離するための規則を使用するだけで、キーのフィールドをエミュレートできます。leveldb の上にある多くのスクリプト レイヤーは、このアプローチを使用します。

Key-Value ストアのディクショナリ ビューでは、キーが存在するかどうかは完全一致によってのみわかります。このような KV ストアだけをデータベース インデックスのベースとして使用することは現実的ではありません。

部分一致から開始してキーを反復処理できるようになるとすぐに、インデックスの検索操作と並べ替え操作を提供するのに十分になります。

于 2013-06-30T15:53:50.747 に答える
5

LevelDB は、リンク先のページから、カスタム比較子を使用してデータの並べ替えをサポートしています。

プロジェクトサイトによると、主な機能は次のとおりです。

  • キーと値は任意のバイト配列です。
  • データはキーでソートされて保存されます。
  • 呼び出し元は、並べ替え順序をオーバーライドするカスタム比較関数を提供できます。
  • ....

したがって、LevelDB には、1 つの並べ替え順序に基づいて並べ替え/インデックス付けできるデータを含めることができます。

いくつかのインデックス可能なフィールドが必要な場合は、LevelDB の上で動作する独自の B ツリーを追加するだけで済みます。これは Chrome ブラウザーが採用するアプローチのタイプであると想像できますが、推測にすぎません。

Chrome のソースはいつでも見ることができます。

于 2012-01-28T20:30:19.357 に答える