大量数据日志的架构,使用数据库还是文件存储?

4

我正在开发一款Python应用程序,希望能够扩展以容纳大约每秒150次写入。这些写入分布在大约50个不同的来源之间。

对于这种情况,Mongodb是一个好选择吗?我犹豫要么将数据写入数据库,要么为每个来源创建日志文件并单独解析它们。

还有没有其他关于记录大量数据的建议?

1个回答

6
我认为MongoDB非常适合日志收集,因为:
  1. MongoDB具有惊人的快速写入能力。
  2. 日志不是很重要,因此在服务器故障的情况下丢失一些日志是可以接受的。因此,您可以运行MongoDB而不使用journaling选项以避免写入开销。
  3. 此外,您还可以使用分片来增加写入速度,同时可以将最旧的日志移动到单独的集合或文件系统中。
  4. 您可以轻松地export将数据从数据库导出到json/csv格式。
  5. 一旦您将所有内容都存储在数据库中,您就可以查询数据以查找所需的日志。
因此,我的观点是MongoDB非常适合用于日志等事务。您不需要在文件系统中管理大量的日志文件。MongoDB会为您处理这些问题。

3
我认为第5条是最重要的理由:您真的希望能够分析日志。在较大的应用程序中,日志文件是无用的,因为除非您正在跟踪错误,否则无法阅读单个行。我建议不仅记录文本,还要记录一些有意义的数据(例如用户ID、服务器名称、模块ID等)。 - mnemosyn
1
@mnemosyn: 我同意,我正在记录所有内容:请求细节、用户信息、异常细节等等。:) 我正在开发的应用程序的管理面板默认显示今天的日志,并具有许多过滤字段、分页等功能。 - Andrew Orsich
@所有人 谢谢大家。我已经设置好了,而且非常顺利。我得检查一下日志记录功能。 - Coder1
@AndrewOrsich 你可能还想添加关于“有限集合”、它们的写入性能和循环队列行为的要点。 - DhruvPathak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接