混合表¶
混合表是一种 Snowflake 表类型,针对混合事务和操作工作负载进行了优化,这些工作负载需要低延迟和高吞吐量的小随机点读取和写入。混合表支持独特的参考完整性约束强制执行,这对于交易工作负载至关重要。您可以使用混合表以及其他 Snowflake 表和功能来支持 Unistore 工作负载,将交易和分析数据整合到一个平台中。
可能受益于混合表的用例包括:
通过交互式用户界面为有针对性的营销活动建立群组。
维护一个中心化的工作流程状态,以协调大型并行数据转换管道。
为访问您的网站或移动应用程序的用户提供预先计算的促销方案。
架构¶
混合表无缝集成到现有的 Snowflake 架构中。客户连接到相同的 Snowflake 数据库服务。查询在云服务层中进行编译和优化,并在虚拟仓库的同一个查询引擎中执行。这一架构有几个主要优点:
Snowflake 平台功能开箱即可支持与混合表搭配使用,例如数据治理。
您可以运行混合操作和分析查询的混合工作负载。
您可以将混合表与其他 Snowflake 表联接,查询将在同一个查询引擎中以原生和高效方式执行。不需要联合。
您可以跨混合表和其他 Snowflake 表执行原子事务。无需自行编排两阶段提交。
混合表利用行存储作为主要数据存储来提供出色的操作查询性能。当您写入混合表时,数据将直接写入行存储。数据被异步复制到对象存储中,以便在不影响持续运行工作负载的情况下为大型扫描提供更好的性能和工作负载隔离。为了提供更好的分析查询性能,一些数据也可能以列式格式缓存在您的仓库中。您只需对逻辑混合表执行 SQL 语句,Snowflake 查询优化器就会决定从哪里读取数据,以便提供最佳性能。您可以获得一致的数据视图,无需担心底层基础设施。
功能¶
混合表提供了一些其他 Snowflake 表类型不支持的附加功能。
功能 |
混合表 |
标准表 |
---|---|---|
主数据布局 |
以行为导向,带有次级列式存储 |
列式 微分区 |
锁定 |
行级锁定 |
分区或表锁定 |
PRIMARY KEY 约束 |
必需,已强制执行 |
可选,未强制执行 |
FOREIGN KEY 约束 |
可选、已强制执行(参照完整性) |
可选,未强制执行 |
UNIQUE 约束 |
可选,已强制执行 |
可选,未强制执行 |
NOT NULL 约束 |
可选,已强制执行 |
可选,已强制执行 |
索引 |
支持高性能;写入时同步更新 |
搜索优化服务对列进行索引,以提高点查找性能;已异步批量更新/维护 |
确定何时使用混合表¶
虽然您应该期待 Snowflake 标准表在大型分析查询中提供更好的性能,但混合表可以在短期运行的操作查询上更快地提供结果。以下类型的查询最有可能受益于混合表:
高并发随机点读取与大范围读取。
高并发随机写入与大型顺序写入(例如,批量加载)。
检索少量完整记录(例如,客户对象)与使用分析函数(例如聚合或 GROUP BY 查询)进行狭义预测。
如果您的查询适合其中一种模型,则混合表可能是存储数据的首选。