我正在研究使用BigQuery及其API根据我们的访问者查看的内容进行现场查询的可能性。因此,响应时间非常重要。我已经加载了一个非常简单的结构化数据集,包含10,000行(4列),并运行了一个非常简单的查询,需要1到2秒钟的时间。我的问题希望很简单,通过优化数据方式,我是否能够获得BQ API的小于1秒的响应时间?谢谢您的帮助!祝好,阿尔金。
BigQuery不是在线事务处理(OLTP)数据库,而是一种交互式分析数据库,可以在几秒钟内扫描数千兆字节的数据。虽然查询时间相当稳定,但由于它是共享服务,因此查询时间不能保证,即在不同时间段运行2秒的查询可能会运行1.5秒或3秒。由于BigQuery的性质和内部结构,今天的查询时间小于1秒是不现实的。
其中一个流行的设计模式是让BigQuery完成对数据的复杂分析,并将结果存储在OLTP(如MySQL)或甚至内存中(如Redis)数据库中,并从那里向客户端提供结果。您可以通过后台运行查询来定期更新数据。
BigQuery专门用于交互式分析海量大数据集。
预计处理时间在几秒内完成。
同时,期望针对较小数据集运行查询可使运行时间少于一秒-这种期望不现实,因为BigQuery不是以这种方式设计的。
无论您有多少数据大小-您仍将“支付”所有费用,就像处理大型数据集一样。
因此,简短的答案不幸的是:
今天-不行!明天-不行!后天-你永远不知道,但我认为不会,除非BigQuery演变成其他形式。
虽然其他人已经说了答案是否定的,但你可以看一下BigQuery Storage API。它允许你直接在云存储上(这是BigQuery数据实际存储的地方)对常规表运行简单的SELECT
-WHERE
查询。它应该比常规的BigQuery API更快,但可能不能可靠地在1秒内响应(尽管我还没有自己尝试过,但一旦尝试过后我会更新我的答案)。