我可以将 Snowflake 用作关系数据库吗?
Can I use Snowflake as a relational database?
我们正在使用的 SaaS 工具之一是使用 MySQL 数据库作为其主要数据库。除了与用户相关的数据外,它还接收一些点击流和各种其他信息。
关于那个数据库:
- 表数:11
- 最大的行 table:7,000,000
- 总大小:17GB
- 每日写入:50,000
- 每日阅读量:1,000
Snowflake 可以取代那个 MySQL 数据库吗?我们可以期待什么样的性能提升?
由于以下原因,我建议避免编写面向报告的规范化关系数据库(即使它是雪花式模式)。数据库似乎更面向写入,可能会发生很多事务。
数据库不是为报告设计的。您仍然需要进行大量连接才能获得结果,否则您可能需要非规范化。
读者阻止作者。当您出于报告目的而尝试读取时,由于正在读取大量数据,table 上可能会发生锁升级,并且可能会放置 table 级别的锁。由于这个锁,写入者将被阻塞,并可能导致事务超时。
在规范化数据库上进行大量报告,可能会给服务器带来额外的负载,并且会影响服务器性能。
我建议您使用复制、ETL 等创建副本数据库,并将其用于报告目的。
如所问,答案是“是”。
大警告,Snowflake 不强制执行 PK 或 FK 约束! (只有 null/not null。)因此,您的应用程序将需要对此进行管理。因此,我认为 Snowflake 不是完整的 RDBMS(关系数据库管理系统),因为该定义暗示关系管理由系统处理。
我也同意@venkataraman-r 的观点,Snowflake 在直接处理 OLTP 行为时表现不佳。所以你需要小心管理这种行为。
我们正在使用的 SaaS 工具之一是使用 MySQL 数据库作为其主要数据库。除了与用户相关的数据外,它还接收一些点击流和各种其他信息。
关于那个数据库:
- 表数:11
- 最大的行 table:7,000,000
- 总大小:17GB
- 每日写入:50,000
- 每日阅读量:1,000
Snowflake 可以取代那个 MySQL 数据库吗?我们可以期待什么样的性能提升?
由于以下原因,我建议避免编写面向报告的规范化关系数据库(即使它是雪花式模式)。数据库似乎更面向写入,可能会发生很多事务。
数据库不是为报告设计的。您仍然需要进行大量连接才能获得结果,否则您可能需要非规范化。
读者阻止作者。当您出于报告目的而尝试读取时,由于正在读取大量数据,table 上可能会发生锁升级,并且可能会放置 table 级别的锁。由于这个锁,写入者将被阻塞,并可能导致事务超时。
在规范化数据库上进行大量报告,可能会给服务器带来额外的负载,并且会影响服务器性能。
我建议您使用复制、ETL 等创建副本数据库,并将其用于报告目的。
如所问,答案是“是”。
大警告,Snowflake 不强制执行 PK 或 FK 约束! (只有 null/not null。)因此,您的应用程序将需要对此进行管理。因此,我认为 Snowflake 不是完整的 RDBMS(关系数据库管理系统),因为该定义暗示关系管理由系统处理。
我也同意@venkataraman-r 的观点,Snowflake 在直接处理 OLTP 行为时表现不佳。所以你需要小心管理这种行为。