2011-07-25 5 views
1

私は整数値を参照するキーとして文字列を持つデータ構造を持っています。私はすべてのStringキーをメモリに収めることができません。私の最も重要な焦点は、高速検索を実行することです。これを(ツールやライブラリなしで)自分自身で実装しようとすると、ノードが文字列のutf-8バイトの値であるb-treeを実装することを考えていました。深さは文字列内の位置に対応します。しかし、ある時点では、ツリー全体がメモリに収まりきらないため、ツリーをディスク上に永続化する必要があります。私はこれに多くの最適化を想像することができますが、私は書く時間がありません。私が始め始める前に、これのようなツールがすでに存在するかどうか疑問に思っていましたか?おそらくルシネがそのトリックをするかもしれないが、正確なマッチング(あいまいではない)が必要なので、わからない。何か案は?ありがとう。効率的なルックアップとディスク永続性を備えた文字列キーマップの検索

+1

なぜデータベースを使用するだけではないのですか?彼らはこのようなことをしっかりとしており、インデックスを使ってビルドされたこのBツリーロジックをすべて持っていますか? – dcp

+1

'HashMap 'を何とかしてディスクストレージを使う方法を模倣するのはどうですか?単純なハッシュマップを使用して、VMにページングを処理させますか? –

+1

ディスクベースのbツリーとトライの要素を組み合わせて、実際にスペース効率の良いインデックス作成アルゴリズムを得ることができます。または、発明されたホイールのためにBerkeley DBを見てください。 – Perception

答えて

1

JDBMプロジェクトのHTreeまたはBTreeを参照してください。

彼らはMapインターフェイスを実装していませんが、同様のAPIを提供しています。

2

試行Redis。永続的なデータ構造を提供します。

0

多分これは簡単です - なぜmd5やsha1のようなハッシュ戦略を使用しないのですか?明らかに、ハッシュを行う時間は重要な要素になります。実際の文字列の値を知る必要がある場合は問題は解決しませんが、おそらくそうではありません。

関連する問題