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

标签 mysql statistics

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

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

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

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

哪个会更好?或者我缺少第三种解决方案?我应该使用 mysql 以外的东西吗?我想要一些可以查询的东西,以便我可以在网站上以图表形式显示统计信息。

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

最佳答案

I could also create a new database with a generic 'fileID' feild, and then can add a new row every day for each file, but this would lead to a lot of rows.

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

基本上,您需要一个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

关于mysql - 在mysql数据库中存储可变数量的文件下载统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9022762/

相关文章:

statistics - 如果两个分类器用于不一致的数据,如何以适当的方式合并它们

sql - Sql Server 的@@Identity 和@@error 的mysql 等价物是什么以及如何在mysql 中使用try catch

mysql - 对于具有相同数据属性的三个独立对象,一张表还是三张表?

python - 使用 RPCA 的异常值

statistics - 以编程方式创建生存曲线

linux - 显示来自远程 linux 服务器的统计信息

java - 当表包含使用连接的空值时,如何将数据从数据库添加到 Java Swing 中的 jTable?

python - MySQLdb 连接问题

java - 将 BLOB 加载到图库 android

python - python 中的 Johansen 协整检验