我可以将Snowflake用作关系数据库吗?

时间:2019-06-20 11:00:33

标签: mysql snowflake-datawarehouse snowflake

我们正在使用的SaaS工具之一是将MySQL数据库用作其主要数据库。除了与用户相关的数据外,它还接收一些点击流和各种其他信息。

关于该数据库:

  • 表格:11
  • 最大表中的行:7,000,000
  • 总大小:17GB
  • 每天写:50,000个
  • 每日阅读:1,000次

Snowflake可以取代该MySQL数据库吗?我们可以期望什么样的性能提升?

2 个答案:

答案 0 :(得分:1)

由于以下原因,我建议避免使用面向写的规范化关系数据库进行报告(即使它是雪花式架构)。该数据库似乎更面向写,并且可能发生许多事务。

  1. 该数据库不适用于报告。您仍然需要进行大量联接才能得出结果,否则可能需要进行非规范化。

  2. 读者阻止作家。当您尝试出于报告目的读取数据时,由于读取了大量数据,因此表上可能发生锁升级,这可能会使表级锁定。由于此锁定,编写者将被阻止,并可能导致事务超时。

  3. 对标准化数据库进行大量报告,可能会对服务器造成额外的负担,并可能影响服务器性能。

我建议您使用复制,ETL等创建副本数据库,并将其用于报告目的。

答案 1 :(得分:0)

正如所问,答案是“是”。

大警告,Snowflake 不强制执行 PK 或 FK 约束! (只有空/非空。)因此,您的应用程序将需要管理它。正因为如此,我认为 Snowflake 不是一个完整的 RDBMS(关系数据库管理系统),因为该定义意味着由系统处理的关系管理。

我也同意@venkataraman-r 的观点,Snowflake 在直接处理 OLTP 行为时表现不佳。因此,您需要谨慎管理这种行为。