1

VB.NETで大量のデータを頻繁にチェックすることに対処しようとしています。

アプリケーションの入力に変更があるたびに、この大量のデータを確認する必要があり、それも頻繁に行われます。

次のうち、よりスマートで高速なのはどれですか?

  1. アプリケーションの開始時にファイルを読み取り、すべて変数コレクションに入力しますか?

    アプリケーション load the fileの読み込み: 次にfor each line in file add to array mycollection (ファイルが 1 回だけ読み込まれるため)
    チェックするリクエスト: for each in mycollection if = Something then do stuff (リクエストごとに、コレクションに含まれているかどうかを確認するだけです)

    • リクエストごとにすべてのデータをロードする必要がないため、これは私には高速に思えます。しかし、コレクション変数には膨大な数の文字列が含まれているため、アプリケーションのメモリ消費量が高くなります?!?
  2. 要求ごとにファイルを読み取りますか?

    確認するリクエスト: 1 と同じですが、リクエストされるたびに行います。(リクエストごとにファイルを読み取り、比較します)

    • 恋人のメモリ使用量ですが、間違っていなければ遅くなります。

Microsoft SQL Serverは避けたいです。

より良い方法はありますか?

4

2 に答える 2

1

ファイルに何が含まれているか、またはその大きさは正確にはわかりませんが、あなたの説明から、ファイルにデータの論理的な分割があると仮定すると、この問題に対処する方法は次のとおりです。

起動時に、ファイル内のデータの論理分割に基づいてファイルをいくつかの小さなファイルに分割し、実行する必要がある検索に関連付けられる方法で名前を付けます。

ファイルを分割した後、たとえば 10 個の小さなファイルをメモリに保持するローリング キャッシュ メカニズムを実装できます。キャッシュされていない情報が必要な場合は、使用頻度の低いファイルを削除して新しいファイルをロードします。

このようにして、メモリ使用量とパフォーマンスのバランスを取ることができます。

于 2012-10-27T00:54:55.157 に答える
0

少なくとも試してみるために、NoSQL Databaseをお勧めします。

あなたの質問について疑問に思っていますが、NoSQL データベースは、データをディスクに記録し続けることと、パフォーマンス (キャッシュ) とスケーラビリティを維持することの両方を最大限に活用できると思います。

MongoDBは、試してみることができるオンライン シェルなど、始めるのに適した製品です。

于 2012-10-27T00:54:12.490 に答える