什么是表和视图?
表和视图是 Databricks 中用于组织和访问数据的基础概念。
表是存储在特定位置的结构化数据集,通常采用 Delta Lake 格式。 表将实际数据储存在存储上,可以使用 SQL 命令或 DataFrame API 查询和操作,支持插入、更新、删除和合并等操作。 请参阅什么是表?。
视图是 SQL 查询定义的虚拟表。 视图本身不存储数据。 相反,视图提供一种以特定格式或抽象形式呈现来自一个或多个表的数据的方法。 视图可用于简化复杂的查询、封装业务逻辑,以及为底层数据提供一致的接口,而无需复制存储。 请参阅什么是视图?。
表和视图使用 Unity Catalog 进行管理。 在 Unity Catalog 中,表和视图位于三级命名空间 (catalog.schema.table) 的第三级别,如下面的图表所示。
下表回答了有关 Delta 表、流式处理表和具体化视图之间的差异的常见问题。
问题 | Delta 表 | ST | MV |
---|---|---|---|
它是什么? | 以 Delta Lake 格式存储的标准表,支持 ACID 事务、架构强制措施和其他 Delta Lake 功能。 | 已针对流式处理和增量处理用例进行了扩展的常规 Delta 表。 | 其结果始终是预先计算和正确的查询的结果。 |
建议将其用于哪些用例? | 执行以下操作的过程代码: - 引入 - 转换 |
执行以下操作的声明性代码: - 从仅追加源引入 - 低延迟转换 |
执行以下操作的声明性代码: - 增量转换 - 批处理转换 |
它是如何填充的? | 过程代码(INSERT 、UPDATE 、MERGE 、使用 replaceWhere 的分区覆盖) |
声明性代码,包括: - 追加流 - 应用更改流 - 一次流 |
声明性查询 |
Unity Catalog 中的对象类型是什么? | 表 | 表 | 视图 |
谁可以进行更新? | 任何可以更新 Delta 表的写入者。 | 只有定义流式处理表的管道才能更新它。 | 只有定义具体化视图的管道才能更新它。 |
它与哪些 Delta Lake 功能兼容? | 支持所有的 Delta Lake 功能。 | 不支持: - 液体分区 - 预测优化 |
不支持: - 液体分区 - 预测优化 |