Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery 从BigQuery结果中获得类似OLTP的性能_Google Bigquery - Fatal编程技术网

Google bigquery 从BigQuery结果中获得类似OLTP的性能

Google bigquery 从BigQuery结果中获得类似OLTP的性能,google-bigquery,Google Bigquery,我正在从事一个项目,我们需要在web应用程序中的表中显示BigQuery结果 我们通过直接在BigQuery中分页、排序和搜索构建了该功能,但性能并不是现代web应用程序所期望的。应用搜索词或更改页面需要几秒钟的时间 我不能分享太多的代码,但这是一个应用BigQuery中生成的任何大型结果集的一般问题 为了一点背景。我们通过将产品目录连接到订单,在BigQuery中创建一个视图 WITH Catalog AS ( SELECT productId, FROM `CatalogT

我正在从事一个项目,我们需要在web应用程序中的表中显示BigQuery结果

我们通过直接在BigQuery中分页、排序和搜索构建了该功能,但性能并不是现代web应用程序所期望的。应用搜索词或更改页面需要几秒钟的时间

我不能分享太多的代码,但这是一个应用BigQuery中生成的任何大型结果集的一般问题

为了一点背景。我们通过将产品目录连接到订单,在BigQuery中创建一个视图

WITH Catalog AS
(
  SELECT 
    productId,
  FROM `CatalogTable`
),
Orders AS (
  SELECT 
    p.productId,
    SUM(p.qty) AS qty 
  FROM `OrdersView` as o, o.products AS p 
  GROUP BY p.productId
)
SELECT
  c.productId,
  IF(o.qty IS NULL, 0, o.qty) AS qty,
  ROW_NUMBER() OVER(ORDER BY qty DESC) as salesRank 
FROM Catalog AS c
LEFT JOIN
 Orders AS o
 ON CONCAT(c.name, c.sku) = CONCAT(o.name, o.sku)
视图的查询方式如下:

SELECT ...
FROM   `catalog` c
LEFT JOIN `catalogView` cv
WHERE  c.name LIKE '%searchTerm%'
LIMIT  10
OFFSET 0
如果此网格视图构建在传统SQL数据库上(或接近性能),那么有哪些选项可以使其执行相同的操作

我考虑过集群,但我不认为这是一个选项,因为我没有对表进行分区:

注意事项:

如果将结果流式传输到另一个数据库是一种选择,那么结果稍微延迟是可以接受的

查询通过WebApi端点调用,并显示在角度栅格视图中

新订单每15分钟导入一次,因此此查询的结果不会完全是静态的,它们可以定期更改


数据网格必须支持分页、排序和搜索,网格可以包含10000多个结果。

BigQuery
如果您期望OLTP行为或性能,则不应使用。 在您的情况下,如果您希望将您的项目保持在
GCP
上,并使您的数据模型尽可能与您已有的模型相似,我建议您查看并修改

两者都是完全管理的关系数据库。主要区别在于
Cloud-panner
是水平可伸缩的,而
Cloud-SQL
不是,即如果您只需要一个节点,请使用
Cloud-SQL
。如果您需要扩展集群,请使用
云扳手

此外,它们都有各自的Web API。您可以找到Cloud Paner Web API参考。对于云SQL,引用取决于您选择的DBMS:,或


我希望这会有所帮助

您能更好地说明您的数据如何、执行何种查询以及您的体系结构如何?我同意rmesteves的观点,我们需要更多关于您的问题的上下文,您能发送到目前为止您尝试过的查询和虚拟/示例代码吗?谢谢,我添加了更多细节,但我认为这回答了我的问题:也许还有其他选择?事实上,如果您期望OLTP行为,就不应该使用BigQuery。如果你想使用GCP,我建议你看看cloudsql和Cloud扳手,你可以在这里看到,也许还有其他的选择?网络客户端的计算能力如何?例如,网络客户主要是现代笔记本电脑还是智能手机/旧平板电脑?如果是前者,那么有一种方法可以避免添加另一个数据库作为缓存层。