0

メモリに完全にロードできないハッシュセットがあります。したがって、ABC部分があり、それぞれをメモリにロードすることはできますが、一度にすべてをロードすることはできないとしましょう。
また、ランダムなエントリがときどき入ってくるので、それがどの部分に属する可能性があるかはほとんどわかりません。したがって、アプローチの1つは、最初にAをロードしてからチェックを行い、次にB、Cを作成することです。しかし、次のエントリはBに属する可能性があるため、Cをアンロードしてから、AをロードしてからBをロードする必要があります...うまくいけばこれを理解してください。

これは明らかに非常に遅いので、それを行うためのより良い方法があるのだろうか?(dbを使用することが代替手段ではない場合)

4

1 に答える 1

0

データ入力をAまたはBのいずれかに配置するために、いくつかの基準を使用しないことをお勧めします。言い換えると、A、B、C-データ全体を3つの等しい部分に分割した結果です。私は正しいですか?その場合、セットに新しいエントリを追加するときに、いくつかの基準を追加することをお勧めします。たとえば、エントリが0-3からAで始まる数字、4-6-からBで始まる数字、7-9からCの数字の場合、何かを検索するときは、検索する必要があるので、アプリオリになります。 AまたはB、またはCで。エントリが単語の場合-同じ解決策ですが、基準は最初の文字になります。3セットではなく26-英語のアルファベットのサイズを使用する方が良いかもしれません。とにかく、セットの1つをメモリに保存する必要があることに注意してください。1つの利点があります。最大1回のロード/アンロード操作を実行し、すべてのセットをチェックする必要はありません。これで、どのセットが実際に値を格納できるかがわかります。このアイデアは、DBで広く使用されています-パーティショニング。セット、数字、単語で保存するが、いくつかの複雑なオブジェクトを格納する場合は、とにかくいくつかの単純な基準を発明することができます。

于 2013-03-09T12:42:31.420 に答える