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)有何不同?的主要内容,如果未能解决你的问题,请参考以下文章
云中的 UserDefaults 与云中的 Core Data
具有区块链存储的普通 Android/Windows 应用程序