2

データベースにたくさんのデータがあり、それらから統計を作成したいと思います。大量のデータ=テーブル内の数千行。毎日、毎週、毎月(毎月)の統計を取得したい...詳細な統計だけ。

問題は、これらのデータの取得に時間がかかることです(少なからず)。

だから、私はそれを取得するための最も速く、最も明確で、そして最も効果的な方法は何だろうと思います...

私の最初のアイデア-ユーザーが私のアプリにアクセスしたときに、ApplicationControllerDB統計からフェッチするメソッドで、取得したオブジェクトをセッションの変数に保存してから、これらの変数をソースとして使用します。次に、アプリのどこかで統計を印刷する必要がある場合は、このロードされたデータを使用します。

問題は、これは良い考えですか?または、より良い方法がありますか?

4

2 に答える 2

3

DB統計をセッション変数に格納する代わりに。memcachedに保存できます

Railsにはキャッシュの優れた組み込みサポートがあります

http://memcached.org/

https://github.com/mperham/dalli

于 2012-04-17T11:19:12.437 に答える
0

別のアプローチ。この方法で、ユーザーごとにページの一部をキャッシュできます。

- cache [@user, :stat] do # or [@user, :stat, :daily] 
  statistic for the user @user

一部のユーザーの関連付けられたレコードがその統計に影響を与える場合は、次を使用します。

# SomeModel.rb
belongs_to :user, touch: true

このようupdated_atに、関連するモデルのオブジェクトが変更されたときにユーザーが更新され、ユーザーのキャッシュが自動的に古くなったものとして扱われ、内部のブロック- cache ... doが実行されます。このブロックの外側でdbヒットが発生しない(または最小になる)ことを確認してください(たとえば、コントローラーでModel1.where(conditions).allを使用しないください。この方法では、db-requestを作成せず、構築するだけです)。

開発モードでキャッシュを有効にするには、に移動してパラメータconfig/environments/development.rbに変更し、アプリを再起動します。trueconfig.action_controller.perform_caching

于 2012-04-17T11:21:39.003 に答える