什么让数据目录真正开放?Unity Catalog 推动开放湖仓发展

什么让数据目录真正开放?Unity Catalog 推动开放湖仓发展

💡 原文英文,约1200词,阅读约需5分钟。
📝

内容提要

开放数据目录的核心在于数据可移植性。Unity Catalog将托管表存储在用户自有云存储中,由目录负责优化维护,并支持Iceberg REST规范的REGISTER与UNREGISTER,使表可在目录间迁移而无需复制数据。相比之下,许多平台将表锁定在自有存储和专有格式中,迁移需导出重写。Unity Catalog托管表保留完整功能且无锁定,未来还将支持原地转换外部表。

🔎

延伸解读

“开放格式”不等于“开放目录”

文章指出,许多平台虽支持Iceberg等开放格式,但若表存储在提供商控制的桶中,格式开放只是名义上的。用户无法在自己的云账户中查看文件,存储费用通过提供商结算,迁移时仍需复制所有表。真正的开放目录需满足三个条件:数据存储在用户自有存储中、在该存储上提供完整功能、支持无数据复制的可移植性。Unity Catalog声称同时满足这三点。

托管表的所有权与维护权分离

在Databricks中,“托管”描述的是谁维护表,而非谁拥有存储。Unity Catalog托管表由目录负责优化、维护和升级,但文件存放在用户自有的云存储账户中。文章称99%的UC托管表位于客户自有存储。相比之下,一些平台的“托管存储”指提供商拥有并控制的存储,表默认锁定在专有格式中,迁移需导出重写。这种所有权差异直接影响退出成本。

REGISTER与UNREGISTER实现无复制迁移

Unity Catalog是首个同时支持Iceberg REST目录规范中REGISTER和UNREGISTER的目录。UNREGISTER由Databricks贡献给该规范,成为开放标准。两者配合,可将现有Iceberg表移入或移出Unity Catalog,无需移动数据文件。文章强调,UNREGISTER无法在提供商控制的存储上实现,因为退出API无法交出用户带不走的文件指针。目前该功能处于Private Preview阶段。

功能完整性是开放性的隐性门槛

文章提醒,仅提供客户自有存储选项还不够。一些平台将最佳能力保留给提供商控制的托管存储,客户自有存储路径功能受限,形成“开放假象”。Unity Catalog则声称在客户自有存储路径上支持完整功能,包括自动优化和预测性优化。文中引用Zepto案例称,自动优化每年节省超100万美元存储成本。读者需注意,功能完整性是评估目录开放性的关键维度。

❓

Q&A

什么样的数据目录才算真正开放?

真正开放的数据目录需要满足三个要求:数据存储在用户自己拥有的云存储中;在该存储上提供完整功能;支持数据可移植性,即表可以在不同目录间迁移而无需复制数据。

Unity Catalog 的托管表存储在谁拥有的存储中?

Unity Catalog 的托管表存储在用户自己拥有的云存储账户中,而不是平台控制的存储。在 Databricks 中,99% 的 UC 托管表位于客户拥有的存储里。

如何在不复制数据的情况下将 Iceberg 表移出 Unity Catalog?

使用 UNREGISTER 操作。Unity Catalog 是首个同时支持 Iceberg REST 规范中 REGISTER 和 UNREGISTER 的目录,UNREGISTER 可以将表从 Unity Catalog 中移除,之后可在另一个 Iceberg REST 目录中注册,无需移动任何数据文件。

为什么有些平台即使支持 Iceberg 格式仍然存在锁定?

因为这些平台将表存储在提供商控制的存储桶中,并使用专有格式。虽然格式是开放的,但数据文件不在用户自己的云账户中,用户无法直接查看文件,存储费用通过提供商结算,离开时需要先复制所有表,因此格式开放只是名义上的。

Unity Catalog 中的“托管”是什么意思?

在 Unity Catalog 中,“托管”描述的是谁负责维护表,而不是谁拥有存储。目录负责优化、维护和升级表,但文件存储在用户拥有的云存储账户中。这与一些其他平台将“托管存储”定义为提供商拥有和控制的存储不同。

外部 Iceberg 表在 Databricks 中为什么是只读的?

因为外部 Iceberg 表由另一个目录拥有其提交权,为了防止两个目录同时写入同一张表,所以 Databricks 将其设为只读。若要让 Unity Catalog 管理该表,可以使用 REGISTER 将其注册到 Unity Catalog 中,数据仍留在客户拥有的存储里。

🏷️

标签

➡️

继续阅读