0

DBに大量のデータを保存し、同じものをキャッシュする必要があるアプリケーションを作成しています。クライアントのリクエストが来るたびに、サーバーはキャッシュからデータを取得して同じものを返す必要があります。

(オフライン プロセス) 1. json ファイル (サイズが約 6MB) を取得するスプリング バッチ アプリケーションがあります。2. 各オブジェクトを読み取り、DB に格納します。3. 約 17K のレコードが DB に格納されています。

(オンライン プロセス) 4. サーバー (Web アプリ - Spring Web MVC) にリクエストが来るたびに、アプリは DB からデータを取得し、レスポンスを返します。

ここでは DB ストレージを避ける予定です。DB を使用する代わりに、ファイル サーバーにファイルを追加し、サーバーが起動するたびにファイルに存在するデータをキャッシュすることはできますか?

既存の方法論があれば教えてください。

4

1 に答える 1

0

キャッシングは永続性の代わりにはなりません。データベースの代わりにファイルシステムにデータを保存できますが、そもそもデータベースを持つことの全体的なポイントは、データの構造化とインデックス作成が優れているため、通常のファイルシステムよりもデータの保存と検索がはるかに高速であることです。 (データを取得するためのクエリが簡単であるという大きな利点とともに)。巨大なファイル形式でデータベースにデータをいつでもダンプできます(お勧めしません)

キャッシングには、memcached または redis を使用できます。キャッシュは 100% 信頼できるわけではないことに注意してください。キャッシュをクリアするまでの時間を指定するようにキャッシュを構成できます。データベースでデータを作成/更新するたびに、キャッシュデータを更新し続ける必要もあります。キャッシュがいっぱいになると、通常は使用頻度の低いリソースが最初にキャッシュからクリアされ、新しいデータが格納されます。

理想的な解決策は、memcache のようなキャッシュ レイヤーを備えたスケーラブルな (非リレーショナル読み取り) データベースを使用することです。ちなみに、Spring で memcache を使用するのは非常に簡単です (まだアプリケーションで redis を使用していません)。json データ形式について言及しているため、永続性についてはmongodbをご覧ください。

于 2013-07-22T02:12:26.310 に答える