【发布时间】:2020-12-22 01:44:58
【问题描述】:
在过去的八个月里,我和我的团队每天都在使用 Snowflake 来转换/丰富我们的数据(使用 DBT)并使其在其他工具中可用。 虽然该平台似乎非常适合大型数据集上的繁重/长时间运行的查询以及为 Metabase 和 Mode 等分析工具提供动力,但在我们需要运行非常小的查询的情况下,它似乎表现不佳(抓住我表 A 的一行)在高需求 API 背后,我的意思是,SF 有时在 XLARGE-2XLARGE 仓库上需要 100 毫秒甚至 300 毫秒才能在一个相当小的表(200k 计算记录/聚合)中获取一行,加起来就是当我们想将网络延迟用作支持高需求分析 API 的后端时,网络延迟会导致设置非常糟糕。
我们已经使用 Nodejs + Fastify 以及 Python + Fastapi 测试了多个设置,有连接池 (10-20-50-100)/没有连接池(每个请求一个连接,一点也不理想),已部署在与我们的 SF 部署相同的 AWS 区域中,但我们无法以 1 秒的延迟(可接受)维持接近 50-100 个请求/秒的速度(可以接受),而是我们只能获得 10-20 个请求/秒,高达 15 -30 秒延迟。两种语言/框架本身都表现良好,或者即使只是获取/释放连接,实际上耗时最长且需要大量 IO 的是查询的实际运行和等待响应。我们还没有尝试过 Golang 设置,但这一切似乎都归结为 Snowflake 能够以多快的速度返回此类查询的结果。
我们真的很想使用 Snowflake 作为数据库来为只读 REST API 提供支持,该 API 预计每秒有 300 个请求,同时尝试将响应时间控制在 1 秒以内。 (但也准备好接受它不是为此而生的)
有人在类似的设置中使用 Snowflake 吗?在这种情况下充分利用 Snowflake 的最佳工具/配置是什么?我们是否应该启动许多服务器并希望我们能获得不错的请求率?还是我们应该将转换后的数据复制到 Postgres 之类的东西上,以便能够获得更好的响应时间?
【问题讨论】:
-
嗨 Lucas,您能否获取查询 ID,转到查询配置文件并发送查询配置文件的快照。
-
你能用 Snowflake 解决这个问题吗?
标签: snowflake-cloud-data-platform