在mysql数据库中存储可变数量的文件下载统计信息

时间:2012-01-26 17:46:59

标签: mysql statistics

我的网站上有很多私密的文件,并通过php推送。我使用mysql数据库跟踪下载。目前我只为每个文件使用一列,并为每天插入一个新行,这很好,因为我没有很多文件。

但是,我将开始经常添加和删除文件,并且文件的数量将变得非常大。在我看来,我有两个选择:

第一种是在添加和删除每个文件时添加和删除列。这很快会导致表格中包含很多列。我是自学成才,所以我不确定,但我认为这可能是一件非常糟糕的事情。一旦有很多行,添加和删除列听起来就像是非常昂贵的操作。

我还可以创建一个带有通用'fileID'字段的新数据库,然后每天为每个文件添加一个新行,但这会导致很多行。此外,还有很多行插入操作可以在第二天创建跟踪。

哪个更好?或者我有第三种解决方案吗?我应该使用mysql以外的东西吗?我想要一些可以查询的内容,这样我就可以在网站上显示统计数据。

非常感谢你的帮助,并且花时间阅读。

1 个答案:

答案 0 :(得分:1)

  

我还可以创建一个带有通用'fileID'字段的新数据库,然后每天为每个文件添加一个新行,但这会导致很多行。

是的,这是你需要做的 - 但你的意思是“一个新的”,而不是“一个新的数据库”。

基本上你需要一个file表,它可能如下所示:

 id | name      | created_date | [other fields ...]
----+-----------+--------------+--------------------
  1 | foo.txt   | 2012-01-26   | ...
  2 | bar.txt   | 2012-01-27   | ...

并且您的downloads_by_day表将引用它:

 id | file_id | `date`     | download_count
----+---------+------------+----------------
  1 |       1 | 2012-01-27 |             17
  2 |       2 | 2012-01-27 |             23
  3 |       1 | 2012-01-28 |              6
  4 |       2 | 2012-01-28 |            195