“雪花数据云”是云原生事务应用程序数据存储的好选择吗?

Posted

技术标签:

【中文标题】“雪花数据云”是云原生事务应用程序数据存储的好选择吗?【英文标题】:Is "Snowflake Data Cloud" a good choice for a cloud-native transactional application data-store? 【发布时间】:2021-06-09 18:53:40 【问题描述】:

目前,我在不同的数据存储上生成数据并复制到 Snowflake Staging,然后该数据通过 ELT 摄取移动到数据仓库数据库以用于分析目的。然而,这种方法本身可以被视为创建数据孤岛,因为我们已经拥有相同数据的 3 个副本:

    事务性数据存储数据库 复制的雪花阶段 雪花数据仓库数据库

从技术架构的角度来看,将 Snowflake 用作事务应用程序的直接数据存储 是否是个好主意? (执行许多 CRUD 操作的应用程序)。这可能有助于避免复制和摄取的成本。

我看到这种方法的主要问题是:Snowflake 不强制执行任何引用完整性(主键、外键),因此在 CRUD 应用程序中,我必须始终使用 MERGE 语句或以某种方式确保我不使用t 创建重复记录。

另一个问题是在云中,应用程序和雪花之间的距离(又名网络)决定了事务的性能,我希望我的 CRUD 操作具有良好、一致的性能。

非常感谢任何想法/建议。

【问题讨论】:

任何远程数据库由于延迟而遭受许多小交互,无论其他任何适用性因素如何:仅仅 20 毫秒的往返可能会削弱一些事务需求。仅此一项就可能使其不适用于 OTLP/事务性工作负载。 @user2864740,是的,延迟仍然是一个主要问题,我正在权衡不必将事务数据单独复制和摄取到雪花中的优势 【参考方案1】:

到目前为止,Snowflake 在单例更新和插入方面表现不佳,这是我们在事务数据库中看到的最常见的情况。我发现在针对 Snowflake 提交单例插入时性能会下降。

相反,它们针对非结构化数据和结构化数据的批量摄取进行了非常优化,并且专为 OLAP 仓库而设计。您仍然可以使用它,但您可能会看到同样的性能下降。此外,可以定义主键,但不强制执行。

在我看来,如果您面临这一挑战,您可以选择在云中使用 Postgre SQL DB(开源)作为您的事务数据库,它可以作为 Snowflake 作为 OLAP 数据库的一个很好的补充。

【讨论】:

【参考方案2】:

没有。由于您提到的原因,Snowflake 不适合用作事务/OLTP 数据库。此外,由于数据的结构方式(针对 OLAP 工作负载进行了优化),它在许多单独的 CRUD 操作中表现不佳。

【讨论】:

【参考方案3】:

只想指出创建单独的数据库有很多好处,因为您希望将事务数据库与分析数据库的数据库隔离开来,否则您可能会显着影响应用程序的性能。其次,事务数据库中的数据可能会发生变化,如果您出于某种原因必须重新处理数据,您可能无法这样做。还有很多,但我会在这里停下来:-)

【讨论】:

以上是关于“雪花数据云”是云原生事务应用程序数据存储的好选择吗?的主要内容,如果未能解决你的问题,请参考以下文章

容器附加存储(CAS)是云原生存储

什么是云原生?企业为什么需要云原生?

阿里云李飞飞:什么是云原生数据库

阿里云李飞飞:什么是云原生数据库

K8s+Cloud Native

为什么Spring仍然会是云原生时代最佳平台之一?