要存储的数据库&处理客户端有效记录

时间:2014-01-15 01:28:30

标签: ruby-on-rails database logging relational-database

所以上下文是我有一个生成日志的客户端应用程序,我想偶尔将这些数据上传到后端。后端将充当分析服务器,存储,处理和显示这些数据 - 因此您可以想象会涉及一些查询。

在数据收集峰值负载方面,我预计会有大约5k个客户端,每个客户端每天产生大约50-100个线路,我希望我能够处理的解决方案能够处理一种数据。如果你做数学计算,那就是每月超过100万条记录行。

在数据分析负载方面,它会相当低 - 我希望我们几个(管理员)运行查询,每周从所有日志中收集一些信息。

我的应用程序目前正在运行RoR + Postgres,但如果它能更好地映射到我的需求,我可以使用不同的dB。我目前的竞争者是MongoDB& Cassandra,但如果可以扩展以完成工作,我真的不想离开Postgres。

3 个答案:

答案 0 :(得分:1)

我建议使用专用工具,例如logstash

http://logstash.net/

另一种选择是Apache Flume:

http://flume.apache.org/

答案 1 :(得分:0)

如果您正在寻找随着请求而增长的数据库解决方案,那么我建议您超越Postgres。

Cassandra非常适合时间序列数据,但键值存储不适合ad-hoc分析。一个想法可能是将您的日志存储在Cassandra中,然后将它们汇总到另一个系统中。

为了直接存储和显示数据,请查看Graphite,一个实时图表项目。

您可以使用Graphite创建自己的自定义图表,并将其另存为仪表板。

enter image description here

答案 2 :(得分:0)

根据我的经验,当您拥有大量日志而不是使用数据库时,您将需要一个搜索引擎来进行故障排除和分析。 (搜索引擎将比数据库更快。)

目前,我正在使用logstash + Elasticsearch + Kibana整体解决方案来构建我的Log系统。

  • Logstash是一个可以解析日志并使其更具人性的工具 可读。
  • Elasticsearch是一个搜索引擎,可以进行索引编制 搜索你的日志。
  • Kibana是一个可以使用它的webUI 与您的Elasticsearch进行沟通。

这是一个Kibana演示网站。你可以访问它。 http://demo.kibana.org/。 它提供搜索界面和分析工具,如饼图,表格等。

在我的项目中,我的应用程序每天生成超过150万条日志。此Log系统可以处理所有这些日志。

享受它。