【问题标题】:Can I use Snowflake as a relational database?我可以将 Snowflake 用作关系数据库吗?
【发布时间】:2019-06-20 11:00:33
【问题描述】:

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

关于那个数据库:

  • 表:11
  • 最大表中的行数:7,000,000
  • 总大小:17GB
  • 每日写入:50,000
  • 每日阅读量:1,000

Snowflake 能否取代那个 MySQL 数据库,我们可能期望什么样的性能提升?

【问题讨论】:

    标签: mysql snowflake-cloud-data-platform


    【解决方案1】:

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

    1. 数据库不是为报告而设计的。您仍然需要进行大量连接才能获得结果,否则您可能需要非规范化。

    2. 读取器阻止写入器。当您出于报告目的而尝试读取时,由于正在读取大量数据,表上可能会发生锁定升级,并且可能会放置表级锁定。由于这个锁,作者将被阻止,并可能导致事务超时。

    3. 对规范化数据库进行大量报告,可能会给服务器带来额外的负载,并可能影响服务器性能。

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

    【讨论】:

      【解决方案2】:

      如被问及,答案是“是”。

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

      我也同意@venkataraman-r 的观点,Snowflake 在 OLTP 行为方面表现不佳。所以你需要小心管理这种行为。

      【讨论】:

        猜你喜欢
        • 2011-12-29
        • 1970-01-01
        • 2016-01-04
        • 2021-06-14
        • 1970-01-01
        • 2021-06-05
        • 2015-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多