BigQuery是否足够快以处理实时现场请求?

8
我正在研究使用BigQuery及其API根据我们的访问者查看的内容进行现场查询的可能性。因此,响应时间非常重要。我已经加载了一个非常简单的结构化数据集,包含10,000行(4列),并运行了一个非常简单的查询,需要1到2秒钟的时间。我的问题希望很简单,通过优化数据方式,我是否能够获得BQ API的小于1秒的响应时间?谢谢您的帮助!祝好,阿尔金。
3个回答

14

BigQuery不是在线事务处理(OLTP)数据库,而是一种交互式分析数据库,可以在几秒钟内扫描数千兆字节的数据。虽然查询时间相当稳定,但由于它是共享服务,因此查询时间不能保证,即在不同时间段运行2秒的查询可能会运行1.5秒或3秒。由于BigQuery的性质和内部结构,今天的查询时间小于1秒是不现实的。

其中一个流行的设计模式是让BigQuery完成对数据的复杂分析,并将结果存储在OLTP(如MySQL)或甚至内存中(如Redis)数据库中,并从那里向客户端提供结果。您可以通过后台运行查询来定期更新数据。


谢谢您的回答!那么,您认为使用Google Cloud SQL与Google App Engine相结合会更适合吗? - Arjen
@Arjen - 这将取决于您的数据量。对于具有4列的10k行,我肯定会选择CloudSQL Gen1或Gen2,并使用AppEngine来提供结果。只需确保您拥有正确的索引,以便您的查询将从索引中提供而不是完全扫描。 - DoiT International
如果只是为了测试目的,那么CloudSql仍然是一个合理的选择吗?假设有1000k行和25列。 - Arjen
@Arjen - 我认为是这样的。只要您事先知道要运行哪些查询并相应地构建索引,使用CloudSQL就可以了。 - DoiT International
@Arjen - 如果您对我的答案感到满意,请将其标记为“已接受”。这是为什么重要的原因。谢谢! - DoiT International

5

BigQuery专门用于交互式分析海量大数据集。
预计处理时间在几秒内完成。
同时,期望针对较小数据集运行查询可使运行时间少于一秒-这种期望不现实,因为BigQuery不是以这种方式设计的。
无论您有多少数据大小-您仍将“支付”所有费用,就像处理大型数据集一样。

因此,简短的答案不幸的是:
今天-不行!明天-不行!后天-你永远不知道,但我认为不会,除非BigQuery演变成其他形式。


这个描述看起来相当准确 - 你可以删除答案中的“谷歌员工很敏感”的部分 :) - Mosha Pasumansky

0

虽然其他人已经说了答案是否定的,但你可以看一下BigQuery Storage API。它允许你直接在云存储上(这是BigQuery数据实际存储的地方)对常规表运行简单的SELECT-WHERE查询。它应该比常规的BigQuery API更快,但可能不能可靠地在1秒内响应(尽管我还没有自己尝试过,但一旦尝试过后我会更新我的答案)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接