我们有一个应用程序可以创建请求的文本日志文件。日志文件中非常典型的东西,它是空格分隔的(日期,时间,网址,http代码,IP,用户代理等)。
目前,我们每天在文本日志文件中生成大约500,000个条目。
我们目前正在通过文本文件的sed / awk / grep进行大量分析。但是,这并没有真正扩展,特别是因为我们希望在多天内开始报告:
e.g。 - 此IP地址在过去5天内达到此URL的次数 - 特定网址
的请求百分比是多少定期导入mysql数据库并使用select / group-bys提取此类数据非常容易。但是,即使有几十万行,查询也相对较慢。
当谈到一些新的无sql dbs(Casandra,Dynamo,BigTable)时,我是一个n00b,但是它们中的任何一个都适合这个吗?我正在继续阅读他们,但也许这些工作人员有一些建议。
谢谢!
答案 0 :(得分:2)
我们在工作中遇到了类似的问题,并设法通过将数据转储到基于列的数据库来解决它。这类数据库在您所描述的那种分析查询方面要好得多。有几种选择:
http://en.wikipedia.org/wiki/Column-oriented_DBMS
我们对InfiniDB有很好的经验:
使用这种方法,我们设法加速查询大约。 10倍,但不是银弹,最终你会遇到同样的问题。
您可能还希望查看对数据进行分区以提高性能。
答案 1 :(得分:0)
有几个原因导致我无法立即查看NoSQL解决方案:
你的是一个已知的架构,听起来不会改变。
你似乎没有很多非正规化的潜力,因为你几乎有一个平台结构。
您尚未提及应用程序可伸缩性(用户数),只是查询的大小。
据我所知,这些是NoSQL的三大'胜利'。
话虽如此,我不是专家,我不确定它会不会更快读取,所以它绝对值得一试!