2014-01-15 57 views
2

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

在数据收集高峰负荷方面,我预计会有大约5K个客户,每个客户每天产生大约50-100行,我希望我正在处理的解决方案能够处理这种数据。如果你做数学,那就是每月100万行以上。

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

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

回答

0

对于我的经验,您将需要一个搜索引擎做的诊断和分析,当你有很多的日志,而不是使用数据库。 (搜索引擎将比数据库更快)

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

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

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

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

享受它。

0

如果你正在寻找一个数据库解决方案这将随请求增长,那么我会建议超越Postgres。

Cassandra非常适合时间序列数据,但键值存储不适用于临时分析。一个想法可能是将日志存储在Cassandra中,然后在日后将它们转换为其他系统。

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

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

enter image description here