2016-11-01 7 views
0

私は、潜在的に数千から数千のメッセージ(おそらく何百万)を取得する可能性のあるアプリケーションを開発しています。そして、私は各メッセージがIDを持っているので、簡単な検索のためにこれらのメッセージをハッシュテーブルに保存したいと思います。これは良いアイデアですか?そうでない場合は、これについて最善のデータ構造や方法がありますか?ありがとうございました。Hashtableに保存

+1

インメモリキャッシュの実装を調べましたか?既に利用可能なAPIがある場合、なぜホイールを再発明するのですか? – kosa

+5

データベースがうまくいく - もっときれいにスケールアップするもの? –

+0

Eelsのように、データベースははるかに良いアイデアのように聞こえます。また、IDで行く能力だけでなく、ユーザーID、メッセージの内容などを調べるためのより良い方法を提供するのに役立ちます。 – user123

答えて

1

これは良い考えですか?

インメモリデータ構造内のデータの無制限量を維持することは悪い考えです。最終的にメモリが足りなくなり、アプリケーションがクラッシュします。

古い「メッセージ」を破棄して、アプリケーションが必要とするメモリの量を適切に設定できる場合は、これが実行可能なソリューションになる可能性があります。コメントは指摘するよう

はしかし、それはそこにもあるとどのくらいの速アクセス本当にどのくらいのデータに応じて、より良いかもしれない(エトセトラ分散形メモリキャッシュ、SQLデータベース、NoSQLのデータベース、)他のソリューションがあります必要があります。

0

マップの使用(データはメインメモリに格納されます)はシンプルですが、データの有効期限、クラスタリングなどのロジックを実装し、再構築する必要があるため、最も好ましくなく非現実的なオプションにする必要があります。 。

キャッシングフレームワークを使用すると(データはメインメモリに保存されます)、これは、データのサイズの大きさとデータがキャッシュに存在する必要がある時間の長さ(つまり、データこのオプションはデータサイズをJVMヒープスペースの最大サイズに制限します。

データベースを使用すると(ディスクスペースにデータが保存されます)、これは数百万のデータを保持するのに理想的なオプションですが、メモリ操作に比べてディスク操作に時間がかかります。