我想在 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 / 年
我做对了吗?