会社のブログログイン登録スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。1,152件3勉強のためrails+mysqlでブログを作っています。人気の記事一覧というものを表示したいのですが、設計についてアドバイスください。=単純にアクセスがあるたびに記録してしまうと、同じユーザがリロードするだけで人気記事になってしまうので、対策をとりたい。ログの保存の仕方ログ用のテーブルを作って、アクセスログとして記録。=どの程度の規模まで耐えられるか。1アクセスごとに1データ挿入されるので、肥大化した際の影響がきになる。上記のログを元に、指定した期間のログの中でもっともログの多かった記事を計算。=過去のランキングは再計算する必要がないので、計算結果を記録するべきか。その際に気をつけることはあるか。ログ用のテーブル設計idpost_idcreated_at以上です。未熟な部分があると思いますが、アドバイスいただけないでしょうか。(投稿順)2リレーショナルDB(mydql)は、ログ系のデータを管理するのは苦手です。経由でkibanaやmongodbなどに送って解析するというのが流行りです。言え、mysqlだけでも出来なくはないので、注意点を書いておきたいと思います。ログの取り方についてリロードによる再カウントを防ぐためには、ユーザごとにユニークなIDを生成してcookieに埋め込めば大丈夫です。アクセスログには、cookieのIDを記録します。同じIDのアクセスは、解析時に一つにまとめます。定期的に古いデータを削除するようにしないと、解析も遅くなりますし、容量も無駄に消費します。定期的に削除するとして、SQLのDELETEだと結構重くなるので、日付をキーにしてパーティションを区切るというようなことを行うことが多いです。パーティションの削除(DROP)は、高速に動作します。日毎・月毎の集計サマリーを別テーブルに作って保存すると良いと思います。サマリーの作成はバッチで行います。アクセスログを別のDB(mongodb)などに保存する場合でも、サマリーはmysqlで保存します。すべての記事の日別アクセス数を保存しておき、月別サマリーは日別サマリーを合計、年別サマリーは月別サマリーを合計すればよいでしょう。サマリーを計算後は、アクセスログを削除します。参考になりましたら、幸いです。|この質問に回答するには、ログインする必要があります。求めていた回答ではありませんか?ruby-on-railsのタグが付いた他の質問を参照する。arrows正式版として、2023年度のモデレーター選挙を行います!2023年コミュニティモデレーター選挙リンク集0出力したログから、必要な情報のみを抽出してDBに保存するバッチ処理を作成したいのですが、必要な情報を抽出し保存する部分の処理がわかりません。関連する質問1Json形式のAPIによる複数レコード作成2railsで「最近見た記事」という機能の実装についてアドバイスをお願いします。1集計結果(バッチ処理)を画面に表示させる方法での質問0子階層フォームの要素だけを子階層のsubmit時に送信し、それを同ビューにて表示したい0Railsで変数によるデータの取得0collection_selectについて0railsでいいね機能を付けたのですがうまくいいねが追加されません。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。従って情報を開示できることに同意したことになります。選択した項目のみ受け入れる。