【问题标题】:BigQuery performance and Running concurrent jobsBigQuery 性能和运行并发作业
【发布时间】:2014-09-18 22:22:13
【问题描述】:

我们正在与 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 文档中已经提到,我们可以运行并发作业。有没有可用的示例代码?

等待您的宝贵回复。

【问题讨论】:

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


    【解决方案1】:
    1. 如果您可以独立运行查询,则查询缓存结果会快得多。以下查询将运行得更快。
    2. 检查瓶颈是否与网络\分页\页面渲染\等无关。您可以尝试仅执行第二步。
    3. 并行作业可能会根据其当前负载在 BQ 端排队。

    我的建议是将查询与演示分开。运行 BQ 查询,将“小尺寸”数据检索到快速访问数据存储(平面文件、缓存、云 SQL 等)并从那里呈现。 正如 Pentium10 所说,BQ 非常适合处理海量数据(并且比任何其他可比较的解决方案更快、更便宜地返回结果)。如果您正在寻找一个快速报告可视化工具的后端,恐怕 BQ 可能不是您的解决方案。

    【讨论】:

    • N.N.,我们可以尝试您对即兴现有应用程序的建议。但是,太适合我们的要求,我们可能需要考虑 Pentium10 提到的替代方案。
    【解决方案2】:

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

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

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

    3) 在这种规模下,您最好使用更传统的数据存储解决方案,例如 Cloud SQL 或 App Engine Datastore。如果你想保留 SQL 能力,Cloud SQL 是最好的猜测。

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

    4) 性能肯定不同于专用环境。每月 20,000 美元即可获得专用环境。

    【讨论】:

    • Pentium10,可能你在写。我们可能需要根据我们的要求考虑其他替代方案。
    猜你喜欢
    • 1970-01-01
    • 2018-05-13
    • 2014-01-25
    • 2023-03-29
    • 2015-05-21
    • 1970-01-01
    • 2018-10-20
    • 2021-03-20
    • 1970-01-01
    相关资源
    最近更新 更多