Google bigquery 托管200GB数据并为JSON API提供聚合的解决方案?

Google bigquery 托管200GB数据并为JSON API提供聚合的解决方案?,google-bigquery,google-cloud-datastore,bigtable,Google Bigquery,Google Cloud Datastore,Bigtable,我正在寻找一个解决方案,它将承载一个几乎静态的200GB、结构化、干净的数据集,并在数据上提供一个JSON API,以便在web应用程序中进行查询 我的每一行数据都是这样的,我有大约7亿行: parent_org,org,spend,count,product_code,product_name,date A31,A81001,1003223.2,14,QX0081,Rosiflora,2014-01-01 数据几乎完全是静态的,每月更新一次。我希望支持简单的聚合查询,如: 从QX开始,按月

我正在寻找一个解决方案,它将承载一个几乎静态的200GB、结构化、干净的数据集,并在数据上提供一个JSON API,以便在web应用程序中进行查询

我的每一行数据都是这样的,我有大约7亿行:

parent_org,org,spend,count,product_code,product_name,date
A31,A81001,1003223.2,14,QX0081,Rosiflora,2014-01-01
数据几乎完全是静态的,每月更新一次。我希望支持简单的聚合查询,如:

  • 从QX开始,按月按组织获取产品代码的总支出
  • 按上级组织A31按月获取总支出
我希望这些查询能够通过RESTful JSON API提供,这样我就可以在web应用程序中使用这些数据

我不需要做连接,我只有一个表

我调查过的解决方案:

  • 到目前为止,我一直在使用Postgres(通过一个web应用程序来提供API),但我已经开始在索引和物化视图方面达到极限,没有专用硬件+比我更多的技能
  • Google Cloud Datastore:适用于这种大小的结构化数据,并且有一个内置的JSON API,但不进行聚合(因此我无法支持上面的“总支出”查询)
  • GoogleBigtable:绝对可以做这种大小的数据,可以做聚合,可以使用AppEngine构建我自己的API吗?可能需要将数据转换为hbase才能导入
  • GoogleBigQuery:聚合速度快,需要像BigTable一样使用我自己的API,便于导入数据
我想知道是否有一个通用的解决方案来满足我的上述需求。如果没有,我也将非常感谢您对托管此数据和提供JSON API的最佳设置的任何建议


更新:似乎BigQuery和Cloud SQL支持类似SQL的查询,但Cloud SQL可能不够大(请参阅评论),而且BigQuery很快就会变得昂贵,因为您是按查询付费的,因此不适合作为公共web应用。数据存储很有价值,但不进行聚合,所以我必须预先聚合并拥有多个表

看一看。它是JSON、REST、云、分布式、快速聚合查询等等。它可能是你想要的,也可能不是你想要的。

看看。它是JSON、REST、云、分布式、快速聚合查询等等。它可能是您想要的,也可能不是您想要的。

云SQL可能足以满足您的需求。它当然能够处理200GB,特别是如果您使用第二代云SQL

它们唯一的原因是,如果您的查询非常复杂且没有索引,那么像MySQL(SQL使用的数据库云)这样的传统数据库可能不够用。我建议您尝试云SQL,如果性能不够,请尝试确保有足够的索引(提示:使用查看查询是如何执行的)


如果您的查询无法以有用的方式编制索引,或者您的查询占用大量cpu,无论如何编制索引,查询速度都很慢,那么您可能希望升级到BigQuery。BigQuery是并行的,因此它可以处理几乎与您扔给它的数据一样多的数据,但是它没有针对实时使用进行优化,也没有云SQL的“盒子中的MySQL”方便。云SQL可能足以满足您的需要。它当然能够处理200GB,特别是如果您使用第二代云SQL

它们唯一的原因是,如果您的查询非常复杂且没有索引,那么像MySQL(SQL使用的数据库云)这样的传统数据库可能不够用。我建议您尝试云SQL,如果性能不够,请尝试确保有足够的索引(提示:使用查看查询是如何执行的)


如果您的查询无法以有用的方式编制索引,或者您的查询占用大量cpu,无论如何编制索引,查询速度都很慢,那么您可能希望升级到BigQuery。BigQuery是并行的,因此它可以处理几乎与您扔给它的数据一样多的数据,但是它没有针对实时使用进行优化,也没有云SQL的“盒子中的MySQL”那么方便。

云SQL是一个选项吗?尺码常见问题-@SolomonDuskis谢谢。它看起来确实足够大:)它可能在这样大的数据集上运行吗?或者答案是“除非你尝试真实的数据,否则你不会知道”,我不知道。我自己更像一个云端大桌子的家伙。让我看看是否可以让云SQL的人加入进来。事实上,我不完全确定云SQL是否足够大-云SQL文档建议您的数据集适合RAM,并且可用的最大机器有104 GB RAM。关于性能,它取决于工作负载。正如您前面提到的,您需要使用真实数据进行尝试。MySQL 5.7现在也支持原生JSON;在这种情况下,这可能很有用。这里有云SQL选项吗?尺码常见问题-@SolomonDuskis谢谢。它看起来确实足够大:)它可能在这样大的数据集上运行吗?或者答案是“除非你尝试真实的数据,否则你不会知道”,我不知道。我自己更像一个云端大桌子的家伙。让我看看是否可以让云SQL的人加入进来。事实上,我不完全确定云SQL是否足够大-云SQL文档建议您的数据集适合RAM,并且可用的最大机器有104 GB RAM。关于性能,它取决于工作负载。正如您前面提到的,您需要使用真实数据进行尝试。MySQL 5.7现在也支持原生JSON;这在这种情况下可能有用。谢谢!它可以处理这么多的数据吗?它被设计成在云中运行(弹性集群)。它可以通过生成更多节点来动态扩展。显然,这需要知道如何实现这种服务的架构师(比如,在AWS上)。我在一个小项目中使用过它,但我必须研究集群方面。我不为他们工作,所以我只能说我不知道有什么上限。这取决于多少钱/节点