您将使用什么数据库进行日志记录(即als logfile replacement)

Han*_*örr 6 database logging nosql

在用grep等分析了几千兆字节的日志文件之后,我想知道如何通过使用数据库来记录这些内容,从而使这更容易.什么数据库适合这个purpuse?当然,vanillia SQL数据库可以工作,但提供了许多事务保证等,这些都是您不需要的,如果您使用数GB的数据和非常快的插入速率,这可能会使速度变慢.所以NoSQL数据库可能是正确的答案(比较一些建议的答案).数据库的一些要求是:

  • 能够应对千兆字节甚至数TB的数据
  • 快速插入
  • 每个条目都应该有多个indizes(例如时间,会话ID,URL等)
  • 如果可能,它以压缩形式存储数据,因为日志文件通常非常重复.

更新:已经存在一些SO问题:数据库建议用于处理/报告大量日志文件类型数据以及什么是用于审计/日志记录数据库的良好NoSQL和非关系数据库解决方案.但是,我很好奇哪些数据库满足哪些要求.

Mar*_*ger 5

在尝试了很多nosql解决方案后,我最好的赌注是:

  • riak + riak寻求出色的可扩展性
  • mysql/postgresql中的非标准化数据
  • mongoDB,如果你不介意等待
  • couchdb,如果你知道你在寻找什么

Riak + Riak可以轻松搜索(真的!)并允许您对数据进行自由查询.您还可以轻松地混合数据模式,甚至可以使用innostore作为后端压缩数据.

如果您真的想要使用索引而不是放慢速度爬行,那么MongoDB很难扩展到几千兆字节的数据.考虑单节点性能并提供索引创建,它确实很快.一旦您的工作数据集不再适合内存,就会出现问题......

mysql/postgresql仍然非常快,并且由于通常的b +树索引而允许自由格式查询.如果某些字段未显示在每条记录中,请查看部分索引的 postgres .它们还提供压缩表,并且由于模式已修复,因此不会反复保存行名(这是许多nosql解决方案通常会发生的情况)

如果您已经知道要查看的查询,那么CouchDB很不错,它们基于增量映射/缩减的视图是一个很好的系统.


spe*_*hak 2

根据您的需求,Splunk可能是一个不错的选择。它不仅仅是一个数据库,而且您还可以获得各种报告。另外,它被设计为日志文件替代品,因此他们已经解决了扩展问题。