用于处理/报告大量日志文件类型数据的数据库建议

时间:2010-10-28 01:45:56

标签: mysql database nosql

我们有一个应用程序可以创建请求的文本日志文件。日志文件中非常典型的东西,它是空格分隔的(日期,时间,网址,http代码,IP,用户代理等)。

目前,我们每天在文本日志文件中生成大约500,000个条目。

我们目前正在通过文本文件的sed / awk / grep进行大量分析。但是,这并没有真正扩展,特别是因为我们希望在多天内开始报告:

e.g。 - 此IP地址在过去5天内达到此URL的次数 - 特定网址

的请求百分比是多少

定期导入mysql数据库并使用select / group-bys提取此类数据非常容易。但是,即使有几十万行,查询也相对较慢。

当谈到一些新的无sql dbs(Casandra,Dynamo,BigTable)时,我是一个n00b,但是它们中的任何一个都适合这个吗?我正在继续阅读他们,但也许这些工作人员有一些建议。

谢谢!

2 个答案:

答案 0 :(得分:2)

我们在工作中遇到了类似的问题,并设法通过将数据转储到基于列的数据库来解决它。这类数据库在您所描述的那种分析查询方面要好得多。有几种选择:

http://en.wikipedia.org/wiki/Column-oriented_DBMS

我们对InfiniDB有很好的经验:

http://infinidb.org/

使用这种方法,我们设法加速查询大约。 10倍,但不是银弹,最终你会遇到同样的问题。

您可能还希望查看对数据进行分区以提高性能。

答案 1 :(得分:0)

有几个原因导致我无法立即查看NoSQL解决方案:

  • 你的是一个已知的架构,听起来不会改变。

  • 你似乎没有很多非正规化的潜力,因为你几乎有一个平台结构。

  • 您尚未提及应用程序可伸缩性(用户数),只是查询的大小。

据我所知,这些是NoSQL的三大'胜利'。

话虽如此,我不是专家,我不确定它会不会更快读取,所​​以它绝对值得一试!