BigQuery性能和运行并发作业

时间:2014-09-18 11:52:21

标签: java google-app-engine google-bigquery

我们正在使用Google BigQuery(使用Java)来实现我们的云解决方案之一,并在开发过程中遇到很多问题。我们的观察和问题如下 -

  1. 我们首先使用查询作业(例如:jobs()。insert()/ jobs()。query()方法,然后使用tablesdata()。list()进行数据检索)。作业执行需要2-3秒(我们现在只有MB的数据)。我们查看了code.google.com和github.com上的示例代码,并尝试实现它们。但是,我们无法实现快速执行而不是2-3秒。从BigQuery表中检索数据的快速方法是什么?有没有办法即兴创作工作执行速度?如果是,您能提供示例代码的链接吗?
  2. 在我们的屏幕中,我们需要从不同的表(不同的查询)中获取数据并显示它们。因此,我们插入了多个查询作业和总执行时间得到总结(例如:如果我们有两个作业(即两个查询),则需要6-7秒)。在Google文档中已经提到过,我们可以运行并发作业。有没有可用的示例代码?
  3. 等待您的宝贵回复。

2 个答案:

答案 0 :(得分:2)

  1. 如果您可以独立运行查询,则可以更快地查询缓存结果。以下查询将运行得更快。
  2. 检查瓶颈是否与网络\分页\页面渲染\等无关。您可以尝试仅执行第2步。
  3. 并行作业可能会根据当前负载在BQ端排队。
  4. 我的建议是将查询与演示文稿分开。运行BQ查询,将“小尺寸”数据检索到快速访问数据存储(平面文件,缓存,云SQL等)并从那里显示它。 正如Pentium10所说,BQ非常适合大型数据(并且返回结果比任何其他类似解决方案更快,更便宜)。如果您正在寻找快速报告可视化工具的后端,我担心BQ可能不是您的解决方案。

答案 1 :(得分:1)

1) Big Query是一个高度可扩展的数据库,在成为“超快”数据库之前。它旨在使用名为Dremel的技术处理大量数据,在几台不同的机器之间分配处理。因为它被设计为使用多台机器和并行处理,所以你应该期望具有超级可扩展性和良好的性能。

2)当您想要分析数十亿行时,BigQuery是一种资产。

例如:在5-10秒内分析所有维基百科的修订版本并不错,是吗?但即使是一个小得多的表也需要大约相同的时间,即使有10k行。

3)在此规模下,您最好使用更传统的数据存储解决方案,例如Cloud SQL或App Engine数据存储。如果您想保持SQL功能,那么Cloud SQL就是最佳猜测。

Sybase IQ通常安装在单个数据库中,并且不使用Dremel。也就是说,在许多情况下,它会比Big Query更快......按照设计。

4)当然,性能与专用环境不同。您可以获得每月20K美元的专属环境。