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

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

我的问题是:什么是最好的存储方式?

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

  • 有什么建议吗?

    最佳答案

    我会选择第一个解决方案。

    我不明白您为什么根本需要DB。似乎您只需要浏览数据即可。将日志保持在最“原始”状态,然后对其进行处理,然后每天创建一个tarball。

    聚合的唯一原因是减少文件数量。在某些文件系统上,如果在目录中放置N个以上的文件,则性能会迅速下降。检查您的文件系统,如果是这种情况,则组织一个简单的2级层次结构,例如,使用生产者ID的前2位数字作为第一级目录名称。

    10-08 08:31
    查看更多