1

我有一个巨大的表格来记录我们网站上发生的事件。它有数千万行。

我已经尝试添加索引和其他优化。

然而,它仍然对我们的服务器非常繁重(即使我们有一个非常强大的服务器),并且在一些大型图形/图表查询上需要 20 秒。事实上,我们的守护进程经常干预以终止查询。

目前我们在前端有一个 Google Compute 实例,在后端有一个 Google SQL 实例。

所以我的问题是——有没有更好的方法来使用谷歌云存储查询时间序列数据?

我的意思是,他们有一些专业的服务器或存储引擎吗?

我需要一些可以连接到我的 php 应用程序的东西。

4

2 回答 2

1

Elasticsearch 非常适合用于时间序列数据。

你可以在计算引擎上运行它,或者他们有一个托管版本。

它是通过 HTTP JSON API 访问的,并且有几个 PHP 客户端(尽管我倾向于直接进行 API 调用,因为我发现这样更好地理解他们的查询语言)。

https://www.elastic.co

他们还具有用于时间序列数据的自动图形界面。它被称为基巴纳。

享受!!

于 2016-02-23T08:21:36.707 回答
0

更新:我错过了问题的重要部分“使用谷歌云? ”我的回答没有使用任何专门的 GC 服务或基础设施。


我使用 ElasticSearch 来存储来自网站的事件和分析信息。我什至写了一个 statsd 后端在 elasticsearch 中存储统计信息。

在 elasticsearch 将 kibana 从 3 更改为 4 后,我发现界面非常不适合查看统计信息。每个查询只能绘制 1 个指标,因此如果要绘制时间、平均时间和 90% 的平均时间,则必须执行 3 次查询,而不是 1 次返回 3 个值。(同样的问题存在于 3 中,只是版本 4 看起来更丑陋,对我的用户来说更令人困惑)

我的建议是选择 graphana 支持的时间序列数据库 - 一个时间序列图表前端。OpenTSDB 以类似 hadoop 的格式存储信息,因此它能够大规模扩展。大多数其他存储事件类似于基于行的信息。

要捕获统计信息,您可以使用 statsd 或 reimann(或 reimann 然后 statsd)。Reimann 可以在事件发送到您的统计数据库之前添加警报和监控,statsd 只是整理、平均和刷新统计数据到数据库。

于 2016-03-17T14:20:57.030 回答