2012-04-12 11 views
1

私はビデオサイトで作業しています。交通量に関してはかなり重いです。私はビデオが見られる回数でビデオを順位付けしようとしています。私。ビデオAは5.2Kのビューを取得し、Bは5Kのビューを取得するので、AはBを上回ります。ただし、各ビデオが1週間(または必要に応じて1ヶ月)に取得されたビューを計算し、ビューカウントでランク付けします。"Weekly Top 10"データベースデザインの問題

初めてビューを含むテーブルを作成しました。すなわち、ビデオが視聴されるたびに、行がタイムスタンプおよびビデオIDと共にテーブルに挿入される。それは恐ろしい決断だった。トラフィックが重かったので、テーブルが大きくなり、パフォーマンスに影響を与えました。これを行うより良い方法がありますか?

答えて

4

私は、特定のビデオの総視聴回数を週数と比較して格納するテーブルを持っています。必要に応じて作成/増分するだけです。

つまり、フィールドvideo_id、week_number、およびtotal_viewsを持つ。

トップ10が簡単に抽出できるように、良い指標(week_number、total_views)をお持ちください。

古いデータを削除(またはアーカイブ)するジョブもあります(cron)。テーブルのサイズを管理しやすくする必要があります。

+0

統計情報の要約ftw。 –

+0

ありがとう!それは良い方法です。パフォーマンスには影響しません。非常にスケーラブル。しかし、私はどのように私はcronjobを設定するつもりですか。どんな助け? – abhisek

+0

* nixを使用している場合は、 'man crontab'を実行してください。説明します。ウィンドウを使用している場合は、コントロールパネルを使用してスケジューラを参照してください –

1

@Edヒールの答えにピギーバックするには、要約が間違いなくあなたが探しているものです。ただし、1日の週または日に増分する表を設計すると、間隔が変わるときに問題が発生します。のように、間隔の冒頭で、皆は0から始まります。あなたがあなたのインターバルの始めにいるようになったら、物事は奇妙に見えます。

これらの統計情報を保存する最も効果的な方法は、末尾の期間を使用することです。 (つまり、1週間は、過去7日間の動画の視聴回数をカウントします)。これは、サイトのコンテンツがトレンドになっている様子をはっきりと示しています。これを行うには、cronジョブを定期的に実行して、必要な末尾の期間に各ビデオの統計を計算する必要があります。サマリーを保存し、それらを並べ替えます。

+0

あなたは正しいです。最初は上位10項目のチャートが奇妙に見えます。しかし、実際には先週のチャートを作るつもりです。しかし、助けてくれてありがとう! :-) – abhisek