【问题标题】:Database suggestion for processing/reporting on large amount of log file type data用于处理/报告大量日志文件类型数据的数据库建议
【发布时间】:2010-10-28 01:45:56
【问题描述】:

我们有一个应用程序可以为它创建请求的文本日志文件。日志文件中非常典型的内容,以空格分隔(日期、时间、url、http 代码、ip、用户代理等)。

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

我们目前正在通过 sed/awk/grep 对文本文件进行大量分析。但是,这并不能真正扩大规模,尤其是当我们希望开始跨多天报告时:

例如 - 该 IP 地址在过去 5 天内点击该 URL 的次数 - 有多少百分比的请求导致特定 URL 达到 500 次

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

对于一些新的 no-sql 数据库(Casandra、Dynamo、BigTable),我是一个 n00b,但它们中的任何一个都非常适合这个吗?我正在继续阅读它们,但也许这个工作人员有一些建议。

谢谢!

【问题讨论】:

    标签: mysql database nosql


    【解决方案1】:

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

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

    我们在 InfiniDB 方面有很好的经验:

    http://infinidb.org/

    使用这种方法,我们设法将查询速度提高了大约。然而,10 倍并不是灵丹妙药,最终您会再次遇到同样的问题。

    您可能还想考虑对数据进行分区以提高性能。

    【讨论】:

      【解决方案2】:

      我不一定会立即寻求 NoSQL 解决方案的原因有两个:

      • 你的是一个已知的模式,听起来它不会改变。

      • 您似乎没有太多的非规范化潜力,因为您几乎只有一个平面表结构。

      • 您没有提及应用程序的可扩展性(用户数),只是查询的大小。

      据我所知,这就是 NoSQL 的三大“胜利”。

      话虽如此,我不是专家,而且我不确定它不会加快阅读速度,所以绝对值得一试!

      【讨论】:

      • 很好的分析和分解。谢谢!我会给@srkiNZ84 的infinidb 建议试一试,看看我们能做什么。
      猜你喜欢
      • 2012-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多