特定の日、月、年の製品ごとのビュー数を格納する MySQL データベースにカウンターを作成したいと考えています。
問題は、私が約2000の製品を持っていることです。次のスキーマを使用することを考えました。
id (BIGINT)
year (INT[4])
month (TINYINT)
day (TINYINT)
product_id (INT)
pageviews (BIGINT)
このソリューションの問題点は、最悪のシナリオで各製品が毎日表示される場合、データベースに毎日 2000 行が表示されることです。掛け算は 36 日で、毎月 72,000 になります。
これを実装するためのより良い方法があるかどうか知りたかったのです。私は、毎日のデータは、アプリケーション変数 (.NET で開発) および ArrayList としてメモリにのみ保持されると考えていました。その方向を選択した場合、行/データは少なくなり、毎月 2000 行になります。
私は本当に累積的な毎日のページビューを維持したい. ちなみに、プレビューは説明のためのもので、さまざまなデータを保存しますが、そのデータは非常に頻繁に更新されます。
日次列を使用すると、ほぼ 2 ~ 5 秒ごとに頻繁に更新されます。JavaScript から ASP.NET Web サービスを呼び出し、product_id を渡し、カウンターを +1 増やして、MySQL 非同期を更新するつもりです。これは、アプリケーションが更新の発生を待たないようにするためです。
見積もり表のサイズも知りたいです。私が正しくやっている場合:
BIGINT = 8 バイト
日時 = 10 バイト
INT - 4 バイト
^年/月/日の代わりに日時列を使用することにした場合
30 バイト * 2000 = 60,000 バイト
60KB (約) * 30 日 = 180KB 月
180KB 月 * 12 か月 = 2160KB / 年
私はそれを正しく理解しましたか?