删除 Unity 目录 安全对象 (通过目录资源管理器、SQL DROP等),会发生什么情况取决于对象类型和存储类型。 本页介绍删除后的数据文件生命周期、存储计费和恢复选项。
存储类型决定数据文件会如何处理
对于表和卷,底层数据文件将如何处理,取决于该对象是托管对象还是外部对象。 有关此区别的详细信息,请参阅 Unity 目录中的托管资产与外部资产。
托管表和卷:Unity Catalog 管理存储位置和数据文件生命周期。 数据文件位于元存储、目录或架构级别定义的托管存储位置中。 当您删除托管表或卷时,Unity Catalog 会按照多阶段生命周期删除底层数据文件。 托管存储位置分为两种类型:
- Azure Databricks默认存储:Azure Databricks Azure Databricks帐户中预配和管理的对象存储。
- 客户提供的托管存储:是指您云账户中的一个云存储位置,在元存储、目录或架构级别进行配置,Azure Databricks 会向其中写入和管理数据。
两种风格共享相同的数据文件生命周期,但计费和删除后文件保留不同。 请参阅Azure Databricks 默认存储与客户提供的存储中的托管对象。
外部表和卷:您可以控制存储位置和生命周期。 删除外部表或卷后,Unity Catalog 会从元存储中移除元数据,但数据文件仍会保留在您的云存储位置中。
外部目录和联合目录:数据位于另一个数据源中(例如,通过 Lakehouse Federation 访问的联合数据库,或通过 Hive metastore federation 访问的 Hive 元存储)。 Unity 目录仅保存连接元数据。 删除外部目录时,Unity 目录会删除连接元数据。 源系统中的数据不受影响。
对于其他安全对象(目录、架构、视图、函数、模型),删除仅删除元数据 - 没有可供 Unity 目录管理的关联数据文件。 使用 CASCADE 删除目录或架构时,会删除其中包含的表和卷,每个对象都会根据上文所述其自身属于托管还是外部类型而按相应方式处理。
恢复已删除的对象
恢复已删除的对象的方式取决于对象类型。
| 对象类型 | Recovery |
|---|---|
| 表、物化视图、流式表 | 在删除后的 7 天内使用 UNDROP 。 实体化视图和流式表必须是从 ETL 管道创建的,并且该管道必须仍然存在。 |
| 目录、架构、卷、视图、函数、模型 | 删除后无法恢复。 |
Warning
恢复仅在限定时间内提供,且仅按“尽力而为”原则进行。 仅在确认不再需要数据后删除对象。 在 RESTRICT 和 DROP CATALOG 上使用 DROP SCHEMA 选项(默认选项),以防止意外递归删除非空对象。
删除后的托管数据的生命周期
删除托管表或卷不会立即从云存储中删除数据文件。 数据文件会在恢复时段内保留,之后会永久删除。
阶段 1:恢复窗口
删除后的 7 天内,Unity 目录保留软删除的数据,以便你可以恢复对象。 在此窗口中:
- 使用 UNDROP SQL 命令恢复表、物化视图和流表。
- Unity 目录会保留已删除的对象的元数据,并且存储计费仍在继续。
阶段 2:清除
当 7 天恢复窗口结束时,无法再恢复对象。 Unity 目录在 48 小时内永久删除数据文件。 有关每个阶段的存储计费详细信息,请参阅 删除后的存储计费。
Azure Databricks 默认存储与客户提供的存储中的托管对象
托管对象可以使用两种类型的托管存储。 数据生命周期和 Unity 目录清除行为相同,但计费和清除后文件保留不同。
| 存储类型 | 文件清除 |
|---|---|
| Azure Databricks默认存储(由Azure Databricks代表你管理) | Unity 目录在恢复时段结束后的 48 小时内永久删除数据文件。 |
| 客户提供的托管存储 (在元存储、目录或架构上配置的云存储位置) | Unity 目录在恢复时段结束后的 48 小时内永久删除数据文件。 您的云存储策略(对象版本控制、软删除、生命周期规则)可能会在此时间点之后继续保留文件。 云提供商根据这些策略向你收取存储费用。 |
若要配置客户提供的托管存储,请参阅 Unity 目录中的“指定托管存储位置”。
外部表和卷
删除外部表或外部卷时,Unity Catalog 会从元存储中移除相应的元数据。 不会删除云存储中的数据文件。 云提供商将按照你的存储桶策略继续就存储向你计费。
若要删除文件,请直接从云存储中删除这些文件。
外部目录和联合目录
外部目录包含引用外部数据源的元数据。 删除外部目录时,Unity 目录会删除连接元数据。 源系统中的数据不受影响。 Azure Databricks不会向你收取源系统中存储费用;源系统的计费适用。
删除后的存储费用
下表总结了Azure Databricks和云提供商在每个阶段如何计费存储。 Azure Databricks仅对Azure Databricks默认存储上的存储计费,并且仅在恢复时段期间计费 — 存储计费在 7 天恢复时段通过后停止。 对于客户提供的托管存储和外部存储,云提供商会直接向你收费。
| 存储类型 | 恢复窗口 | 阶段 2 清除 | 清除后 |
|---|---|---|---|
| 在Azure Databricks默认存储上进行管理 | 已计费Azure Databricks | 不按客户计费(恢复时段通过后计费停止) | 不適用 |
| 在客户提供的存储上进行管理 | 云提供商计费 | 云提供商计费 | 由云服务提供商计费(由您的存储桶策略决定) |
| 外部表和卷 | 云提供商计费(文件未删除) | 云提供商计费 | 云提供商计费 |
| 外部目录和联合目录 | 不適用 | 不適用 | 不適用 |
在客户提供的存储上删除托管对象后,可能仍会看到云提供商的存储费用。 若要降低这些费用,请检查存储桶的对象版本控制、软删除和生命周期策略。
从目录资源管理器中删除对象
可以从工作区 UI 中的目录资源管理器中删除 Unity 目录对象。 无论您是从目录资源管理器中删除对象,还是运行 SQL DROP 语句,本文所述的数据生命周期都适用。
删除工作区时会发生什么情况
默认情况下,删除工作区不会自动删除工作区的默认 Unity 目录。 如果目录被保留,其托管表和卷仍会保留,并且存储计费将持续,直到该目录被删除。
Azure Databricks提供强制删除选项,用于在删除工作区时删除工作区目录及其数据。 请参阅 强制删除工作区目录。 如果未强制删除工作区目录,则会在删除工作区后保留该目录,并且必须手动删除。
有关工作区删除的详细信息,请参阅 “删除工作区”。