Snowflake 的存储与云中的普通关系数据库(如 Azure 上的 SQL Server)有何不同?

Posted

技术标签:

【中文标题】Snowflake 的存储与云中的普通关系数据库(如 Azure 上的 SQL Server)有何不同?【英文标题】:How does Snowflake's storage work differently from normal relational database in the cloud, like SQL Server on Azure? 【发布时间】:2020-02-07 15:41:44 【问题描述】:

此外,Snowflake 如何“列”所有数据?

我读过的任何东西都没有很好地解释它

【问题讨论】:

【参考方案1】:

Snowflake 的存储层与计算分离。因此,您可以立即分别扩展和缩减您的计算和存储(对于较大的实例在几秒钟内)。 Snowflake 使用称为micro-partitions 的专有存储格式。您还可以在SIGMOD paper 中阅读有关 Snowflake 存储架构的更多信息。

云中的普通关系数据库 - 假设它只是一个安装了关系数据库的虚拟机 - 与您习惯于在本地托管的关系数据库相同,但实际上它已被“提升和转移” “上云。所以这样做的缺点是计算和存储是紧密耦合的。痛苦在于您需要提前计划更多关于您计划在最高使用天数使用多少;即使不使用系统也在收费;并且迁移到更强大的计算或存储更加复杂、风险和耗时。

【讨论】:

【参考方案2】:

Snowflake 中的数据被划分并存储为微分区,它们是连续的存储单元。

每个微分区包含 50 MB 到 500 MB 之间的未压缩数据。

行的分组是在一个表上执行的,并映射到单独的微分区中,以列的方式组织。

https://docs.snowflake.net/manuals/user-guide/tables-clustering-micropartitions.html#what-are-micro-partitions

【讨论】:

以上是关于Snowflake 的存储与云中的普通关系数据库(如 Azure 上的 SQL Server)有何不同?的主要内容,如果未能解决你的问题,请参考以下文章

微软结合Veritas,使用Azure云中的混合存储

应用程序能否识别它是在云中运行还是在普通服务器上运行?

云中的 UserDefaults 与云中的 Core Data

具有区块链存储的普通 Android/Windows 应用程序

通过Petnatho通过JDBC进行数据集成到Snowflake的大容量加载速度很慢

Flyway 与 Git 集成并连接到 Snowflake