【发布时间】:2016-06-03 14:33:45
【问题描述】:
我有一张记录我们网站上发生的事件的大表。它有数千万行。
我已经尝试过添加索引和其他优化。
但是,这对我们的服务器来说仍然非常繁重(尽管我们有一个非常强大的服务器),并且在一些大型图形/图表查询上需要 20 秒。事实上,我们的守护进程经常干预以终止查询。
目前我们在前端有一个 Google Compute 实例,在后端有一个 Google SQL 实例。
所以我的问题是 - 有没有更好的方法来使用 Google Cloud 存储查询时间序列数据?
我的意思是,他们有专门的服务器或存储引擎吗?
我需要一些可以连接到我的 php 应用程序的东西。
【问题讨论】:
-
看看 Cloud Bigtable:cloud.google.com/bigtable/docs/schema-design-time-series
-
啊,我明白了,如果我不能使用 mysql,我对如何查询它有点困惑——它在哪里说如何从 php 应用程序连接到它? :)
-
它支持 HBase API,但看起来不像有原生的 PHP 客户端。从 mysql 迁移到像 Bigtable 这样的商店可能需要一笔不小的投资。如果你真的要最大化你的 mysql 实例,你可以考虑跨多个实例分片数据(在每个实例上存储数据的子集),但这也需要不小的投资并且有自己的权衡。网上有很多关于mysql sharding的文章。
-
您可以运行 HBase REST 服务器 (hbase.apache.org/book.html#_rest) 以通过 REST API 与 Cloud Bigtable 交互,该 API 应该适用于任何语言,但性能不如原生 API,因为它必须经过一个额外的跃点(并不是说它会很慢,但相对于本机客户端它会更慢)。 Cloud Bigtable 非常强大,但它也比关系数据库“低级”得多。您需要进行一些分析以确定它是否适合您的用例。
-
是的,这是评估的另一种选择,但如果您打算编写大量数据,请记住这篇文章 (cloud.google.com/appengine/articles/scaling/contention)。您可能必须以这样一种方式设计您的架构,即使用 Datastore 相对于 Bigtable 没有太多优势。顺便问一下,您是出于分析目的还是出于其他目的查询这些数据?如果大型查询仅用于分析,您还可以考虑将数据导出到 BigQuery (cloud.google.com/bigquery) 进行分析。
标签: mysql google-app-engine google-cloud-platform google-cloud-sql google-app-engine-php