雪花可以用作操作数据存储,我可以针对它编写其他 API

Posted

技术标签:

【中文标题】雪花可以用作操作数据存储,我可以针对它编写其他 API【英文标题】:Can snowflake work as an operational data store against which I can write rest APIs 【发布时间】:2020-07-14 10:11:52 【问题描述】:

我正在研究雪花数据库并有一个数据聚合用例,我需要通过 Rest API 公开聚合数据。虽然数据摄取和聚合似乎定义明确,但雪花系统是否可以用作服务高吞吐量 api 的操作数据存储? 或者这是这个系统的反模式

【问题讨论】:

您是想通过 Rest API 向 Snowflake 读写事务,还是只在 Snowflake 中运行聚合查询? 运行聚合查询读出结果集 我在雪花上做了同样的事情并取得了巨大的成功。我最初使用的是 aws RDS,但由于数据量大,它根本无法正常工作,而使用雪花时它非常快。还要记住它的柱状数据库设计。所以如果你有更少的聚合列更好。另一个需要考虑的重要部分是仓库类型,具体取决于您的数量。 Snowflake 非常适合这个用例,因为它具有弹性和近乎无限的并发性。 谢谢,有什么查询计时结果可以分享一下吗? 【参考方案1】:

根据您最近的评论进行更新。

这是我在生产中的大型表上进行的一些快速测试结果。 *更改了显示的表名。

vLookupView 记录 = 175,760,316

vMainView 记录 = 179,035,026

SELECT 
    LP.REGIONCODE
    , SUM(L.VALUE)    
FROM DBO.vLookupView AS LP
INNER JOIN DBO.vMainView AS M
    ON LP.PK = M.PK
GROUP BY LP.REGIONCODE;

结果:

SQL SERVER 
Production box - 2:04 minutes
**Snowflake:**
By Warehouse (compute) size
XS - 17.1 seconds
Small - 9.9 seconds
Medium - 7.1s seconds
Large - 5.4 seconds
Extra Large - 5.4 seconds

当我添加 WHERE 条件时

WHERE L.ENTEREDDATE BETWEEN '1/1/2018' AND '6/1/2018'

结果是:

SQL SERVER 
Production box - 5 seconds
**Snowflake:**
By Warehouse (compute) size
XS - 12.1 seconds
Small - 3.9 seconds
Medium - 3.1s seconds
Large - 3.1 seconds
Extra Large - 3.1 seconds

【讨论】:

我更多地关注数据读取类型的场景与数据加载/摄取。如果我在仓库中的多个表中有数据并且我正在通过视图进行连接,那么它的性能是否足以对连接的数据进行点查找?如果您有任何计时结果,您可以分享那将是很棒的 @vmurthy 添加了一些我可以分享的快速测试结果。如果有帮助,请考虑标记为答案,否则如果您有更具体的内容,我可以分享其他一些测试结果。 这很棒。非常感谢您提供这些数据。例如,您是否有任何结果表明随着连接数量的增加,性能会是什么样子

以上是关于雪花可以用作操作数据存储,我可以针对它编写其他 API的主要内容,如果未能解决你的问题,请参考以下文章

雪花:SQL 访问控制错误:权限不足,无法对架构进行操作

将雪花中的数据卸载到 Postgres 中?

雪花任务导致查询中的时区错误

使用存储过程

如何使用雪花存储过程将变量数据传递到雪花表中

计算雪花中数据库的数据存储