3

我有一个待办事项列表应用程序(使用 Django 1.5 和 MySQL),其中一个任务可以与另一个用户共享。因此,用户可以拥有个人任务和共享任务。共享任务将只是一小部分(我猜大约占用户总任务的 30%)

对于共享任务,我想保留一个日志,以便连接到该任务的用户可以知道谁做了哪些更改。为此,我正在考虑为每个共享任务保留一个日志文件。每当任何用户进行更改时,都会将其附加到该文件中。

我的问题是 - 我应该通过文件存储来完成,还是应该将它保存在数据库中?

请注意这几点——

  • 日志不会被频繁访问(一个文件的日志在一个小时内最多可以读取5-10次。)
  • 一个小时内,总共可能有 >500 次写入(但对于不同的文件。所以对于一个文件,一个小时内最多可能有 10-50 次写入。因此,并发性不是主要问题。)
  • 阅读数据后,我无论如何都不需要搜索或修改数据。

提前致谢 !

4

2 回答 2

2

以便连接到任务的用户可以知道谁做了哪些更改

这会将有问题的数据从系统级日志记录更改为应用程序可见的数据。因此,它可能属于应用程序的数据库。这也将使过滤日志数据以进行显示变得更加容易。例如,如果要显示 Item X 的所有历史事件,则可以轻松查询与 Items 表具有外键关系的数据库表。从文件中读取该数据并手动过滤它会变得非常困难。

旁注:“审计数据”或“历史数据”可能是一个更好的术语,以将其与系统日志记录(例如错误日志)区分开来。

于 2013-07-20T15:19:20.113 回答
0

文件系统也可以被认为是数据库,但这里主要是比较文件系统与关系数据库 MySQL。我会在关系数据库中这样做有几个原因:

  • 第一个原因是为了简单。您已经在使用数据库。我也不会介绍使用文件的额外复杂性。只需添加一个新表并完成它。
  • 数据库权限和文件系统权限通常不同,您需要同时担心两者。
  • 这使得迁移应用程序变得容易,因为您不需要移动文件数据库。
  • 您还没有预见到任何过滤,但您的客户很可能会在将来请求它。
  • 在数据库中,您可以更好地控制性能。您不能真正索引文件系统。大多数文件系统将文件列表存储在每次都必须扫描的文件中。
  • 数据库中的分片比文件系统中的更透明。在不改变访问方式的情况下,很难将文件分散到多个存储位置。

如果您已经设置了关系数据库,我认为存储在文件系统上没有任何好处。

于 2013-07-20T17:06:16.880 回答