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

时间:2010-11-25 16:51:33

标签: database logging nosql

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

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

更新:已经存在一些问题:Database suggestion for processing/reporting on large amount of log file type dataWhat are good NoSQL and non-relational database solutions for audit/logging database。但是,我很好奇哪些数据库满足了哪些要求。

3 个答案:

答案 0 :(得分:5)

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

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

Riak + Riak轻松搜索(非常!)并允许您对数据进行免费表单查询。您还可以轻松地混合数据模式,甚至可以将数据压缩为innostore作为后端。

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

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

如果您已经知道要查看的查询,那么CouchDB很不错,他们基于增量地图/缩小的视图是一个很好的系统。

答案 1 :(得分:3)

您可以查看很多不同的选项。您可以使用Hive进行分析,使用Flume来使用和加载日志文件。 MongoDB也可能是一个很好的选择,请看log analytics with MongoDB, Ruby, and Google Charts

上的这篇文章

答案 2 :(得分:1)

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