database - 许多日志文件的存储

标签 database language-agnostic logging

我有一个系统通过 http 从不同的地方接收日志文件(>10k 生产者,每天 10 条日志,每条约 100 行文本)。

我想存储它们以便能够计算杂项。每晚对它们进行统计,导出它们(按到达日期或第一行内容排序)......

我的问题是:存储它们的最佳方式是什么?

  • 纯文本文件(适当锁定),每个上传文件一个文件,每天一个目录/生产者
  • 平面文本文件,所有生产者每天一个(大)文件(这里的问题将是索引和锁定)
  • 带文本的数据库表(出于内部原因,首选 MySQL)(带有 DB purge as delete 的 pb 可能很长!)
  • 每行文本一条记录的数据库表
  • 具有分片功能的数据库(每天一个表),允许简单的数据清除。 (这是分区。但是我可以访问(即内部支持)的mysql版本不支持它)
  • 基于文档的数据库 à la couchdb 或 mongodb(问题可能与索引/成熟度/摄取速度有关)

有什么建议吗?

最佳答案

(免责声明:我在 MongoDB 上工作。)

我认为 MongoDB 是日志记录的最佳解决方案。它非常快,因为它插入数据的速度可能比您发送数据的速度快。您可以对数据(例如,日期范围或日志级别)以及索引和字段或字段组合进行有趣的查询。这也很好,因为您可以随机向日志添加更多字段(“哎呀,我们想要其中一些字段的堆栈跟踪字段”)并且它不会导致问题(就像平面文本文件一样)。

就稳定性而言,很多人已经在生产中使用 MongoDB(参见 http://www.mongodb.org/display/DOCS/Production+Deployments)。在我们进入 1.0 之前,我们还想添加一些功能。

关于database - 许多日志文件的存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1037024/

相关文章:

PHP/MySQL 格式化 : An example of how this type of data is used?

php - while循环显示SELECT查询后的所有数据

c# - 连接到 Oracle 数据库

algorithm - 最长的简单路径

java - Logback 丢失日志消息,即使 discardingThreshold=0

java - 缺少 android.util.Log 类文件

logging - 将结果堆栈跟踪默认写入文件

python - mysql - 如何在 mysql 中存储 python 列表对象?

unit-testing - 你在编写单元测试时最常犯的错误是什么?

math - float 学有问题吗?