共用方式為


什麼是 Unity Catalog?

Unity Catalog 是一個統一的資料與 AI 治理解決方案,直接內建於 Azure Databricks 平台中。 這是 Unity Catalog 中關鍵概念的概述,以及如何使用 Unity Catalog 來管理資料。

Unity 目錄的主要支柱包括以下幾點:

  • 統一存取控制: Unity Catalog 提供一個單一平台,從單一介面管理資料表、檔案、模型及其他物件的權限。
  • 資料發現: Unity 目錄透過可搜尋的介面,豐富了標籤、描述與元資料,讓使用者能夠尋找並理解資料資產。
  • 自動血統追蹤: 自動追蹤資料的流動,以及從來源到最終檢視和儀表板的轉換過程。
  • 審核: 維護所有資料存取與系統活動的完整紀錄,以符合安全要求及法規遵循。
  • 資料品質監控: 主動追蹤您的資料資產狀態,內建分析和警示功能,可在異常情況抵達下游使用者之前偵測並捕捉。
  • 安全資料共享: 使用開放的 Delta 共享協定,安全地在組織與雲端間交換即時資料,消除複雜的 ETL 或資料複製需求。

Unity 目錄也可作為開放原始碼實作使用。 請參閱 公告部落格 和公用 Unity 目錄 GitHub 存放庫

Unity Catalog 物件模型

在 Unity Catalog 中,你管理的每個資產都被建模成一個物件。 更具體來說,這些物件在 Unity 目錄中稱為 可保護物件 。 你可以使用存取控制政策和像標籤這類的元資料來管理這些可保護的物件。

可保護的物件存在於 Unity 目錄物件模型階層中,該階層根植於一個稱為 元儲存庫的特殊物件。 在其下,資料資產如資料表、檢視、卷、函式與模型遵循三層命名空間(catalog.schema.object)。 其他物件,如儲存憑證、外部位置、連線與分享,則直接位於元儲存庫下方。

Unity Catalog 物件模型圖表

這種階層結構是 Unity 目錄組織資產與執行治理的基礎。 欲更詳細了解 Unity 目錄物件模型及每個可保護物件,請參閱 Unity 目錄可安全物件參考資料。 欲了解權限模型在 Unity 目錄物件模型中的運作方式,請參閱 Unity 目錄權限模型概念

管理員角色

管理員負責監督 Unity 目錄中的治理。 以下是不同層級的管理員角色及其預設權限:

  • 帳號管理員 可以建立元商店、將工作空間連結到元商店、新增使用者,並對元商店分配權限。
  • Workspace 管理員 可以將使用者加入工作區,並管理許多工作區專屬的物件,如工作與筆記本。 根據工作區而定,工作區系統管理員也可以在附加至工作區的中繼存放區上擁有許多許可權。
  • Metastore 管理員 是可選角色,能在 Metastore 層級管理資料表與磁碟儲存。 如果您想要集中管理區域中多個工作區的數據,也很方便。

如需詳細資訊,請參閱 Unity 目錄中的系統管理員許可權

授與和撤銷可保護物件的存取權

有特權的使用者可以在階層中的任何層級授予和撤銷對安全物件的存取權,包括中繼存放區本身。 除非撤銷存取權,否則物件的存取權會自動授予該物件所有子系相同的存取權。

您可以使用一般 ANSI SQL 命令來授與和撤銷 Unity 目錄中物件的存取權。 例如:

GRANT CREATE TABLE ON SCHEMA mycatalog.myschema TO `finance-team`;

您也可以使用目錄總管、Databricks CLI 和 REST API 來管理物件許可權。

使用目錄總管授與許可權

中繼存放區管理員、對象的擁有者,以及物件上具有 MANAGE privilege 的使用者,可以授與和撤銷存取權。 若要瞭解如何管理 Unity 目錄中的許可權,請參閱 在 Unity 目錄中管理許可權。

Unity 目錄中資料庫對象的預設存取權

Unity 目錄會以最低許可權原則運作,用戶擁有執行其必要工作所需的最低存取權。 建立工作區時,非系統管理員使用者只能存取自動布建的工作區目錄,這使得此目錄成為使用者在 Unity Catalog 中嘗試建立和存取資料庫物件流程的一個便捷位置。 請參閱 工作區目錄許可權

管理與外部資料表及磁碟區

資料表和存儲卷可以是可管理的或是外部的。

  • 受控數據表 完全由 Unity 目錄管理,這表示 Unity 目錄會管理每個受控數據表的治理和基礎數據檔。 受管控的數據表會儲存在您的雲端儲存中由 Unity Catalog 管理的位置。 受控數據表一律使用 Delta Lake 格式。 您可以將受控數據表儲存在中繼存放區、目錄或架構層級。
  • 外部數據表是可從 Azure Databricks 存取權由 Unity 目錄管理的數據表 ,但是其數據生命週期和檔案配置是使用您的雲端提供者和其他數據平台進行管理。 通常您會使用外部資料表在 Azure Databricks 中註冊大量的現有數據,或者如果您需要使用 Azure Databricks 以外的工具對數據進行寫入操作,也是如此。 外部數據表支援多種數據格式。 在 Unity 目錄中繼存放區中註冊外部數據表之後,您可以管理和稽核 Azure Databricks 存取權---並使用它---就像您可以搭配受控數據表一樣。
  • 受控磁碟 區完全由 Unity 目錄管理,這表示 Unity 目錄會管理雲端提供者帳戶中磁碟區儲存位置的存取權。 當您建立受控磁碟區時,它會自動儲存在 指派給包含架構的受控儲存位置 中。
  • 外部磁碟區 代表在 Azure Databricks 外部管理的記憶體位置中現有的數據,但已在 Unity 目錄中註冊,以控制及稽核來自 Azure Databricks 內的存取權。 當您在 Azure Databricks 中建立外部磁碟區時,您會指定其位置,該位置必須位於 Unity 目錄 外部位置中定義的路徑上。

Databricks 建議在大多數使用情境中採用受控數據表和磁碟區,因為這樣可以充分利用 Unity Catalog 的治理功能和效能優化。 如需有關外部數據表和磁碟區的一般使用案例的資訊,請參閱 Managed 和 external tables Managed 和 external volumes

另請參閱:

雲端記憶體和數據隔離

Unity 目錄會以兩種主要方式使用雲端記憶體:

  • 受控記憶體:您在 Azure Databricks 中建立的受控數據表和受控磁碟區的預設位置(非結構化、非表格式數據)。 這些受控記憶體位置可以在中繼存放區、目錄或架構層級定義。 您可以在雲端提供者中建立受控記憶體位置,但其生命週期完全由 Unity 目錄管理。
  • 用於儲存外部資料表和容量的儲存位置。 這些對資料表和磁碟區的存取是由 Unity Catalog 管理,但資料生命周期和檔案佈局是由您的雲端提供者和其他資料平台管理。 一般而言,您可以使用外部數據表或磁碟區,在 Azure Databricks 中註冊大量的現有數據,或者如果您需要使用 Azure Databricks 外部的工具來寫入數據,

使用外部位置控管雲端記憶體的存取

為儲存外部資料表和磁碟區的受控儲存位置與儲存位置,皆使用 外部位置 安全性對象來管理 Azure Databricks 的存取。 外部位置物件會參考雲端記憶體路徑,以及存取它所需的 記憶體認證 。 儲存認證本身是 Unity Catalog 可確保安全的物件,用於登記存取特定儲存路徑所需的憑證。 這些安全性實體可確保 Unity 目錄控制及追蹤記憶體的存取權。

下圖顯示外部位置如何參考儲存體認證和雲端儲存體位置。

儲存體認證、外部位置和雲端儲存體之間的關係

在此圖中:

  • 每個外部位置都會參考儲存體認證和雲端儲存體位置。
  • 多個外部位置可以參考相同的儲存體認證。 儲存憑證 1 會授與路徑 bucket/tables/*下所有專案的存取權,因此 外部位置 A外部位置 B 都會參考它。

如需詳細資訊,請參閱 Unity 目錄如何控管雲端記憶體的存取?

受控記憶體位置階層

您在 Unity 目錄中定義受控記憶體的層級取決於您慣用的數據隔離模型。 您的組織可能需要將特定類型的數據儲存在雲端租使用者的特定帳戶或貯體內。

Unity 目錄可讓您在中繼存放區、目錄或架構層級設定受控記憶體位置,以滿足這類需求。

例如,假設您的組織有公司合規性政策,需要與人力資源相關的生產數據位於容器中 abfss://mycompany-hr-prod@storage-account.dfs.core.windows.net 。 在 Unity 目錄中,您可以藉由在目錄層級上設定位置、建立名為 的目錄,例如 hr_prod,並將位置指派給 abfss://mycompany-hr-prod@storage-account.dfs.core.windows.net/unity-catalog,以達到此需求。 這表示在 hr_prod 目錄中建立的受控數據表或磁碟區(例如,使用 CREATE TABLE hr_prod.default.table …)會將數據儲存在 abfss://mycompany-hr-prod@storage-account.dfs.core.windows.net/unity-catalog 中。 您可以選擇在hr_prod catalog中提供架構層級的位址,以在更細微的層次上組織數據。

如果某些目錄不需要記憶體隔離,您可以選擇性地在中繼存放區層級設定儲存位置。 此位置可作為目錄和架構中未指派記憶體之受控數據表和磁碟區的預設位置。 不過,通常 Databricks 建議您為每個目錄指派個別的受控儲存位置。

系統會評估儲存位置階層,從架構到目錄到資料中繼庫。

例如,如果在 中myCatalog.mySchema.myTable建立數據表my-region-metastore,數據表儲存位置會根據下列規則來決定:

  1. 如果已針對 mySchema提供位置,則會儲存在那裡。
  2. 如果沒有,並且位置已在myCatalog提供,則會儲存在那裡。
  3. 最後,如果未在 上 myCatalog提供任何位置,則會儲存在與 my-region-metastore相關聯的位置。

Unity 目錄記憶體階層

如需詳細資訊,請參閱 在 Unity 目錄中指定受控儲存位置

使用工作空間目錄系結進行環境隔離

根據預設,目錄擁有者(和中繼存放區管理員,如果已為帳戶定義的話)可以讓連結至相同 Unity 目錄中繼存放區之多個工作區中的使用者存取目錄。

組織與合規性需求通常會指定您保留某些數據,例如個人資料,只能在特定環境中存取。 您可能也想要將生產數據與開發環境隔離,或確保某些數據集和網域永遠不會聯結在一起。

在 Azure Databricks 中,工作區是主要數據處理環境,而目錄則是主要數據域。 Unity 目錄可讓中繼存放區系統管理員、目錄擁有者和具有 MANAGE 許可權的使用者,將目錄指派或「綁定」到特定工作區。 這些環境感知系結可讓您確保工作區中只有特定目錄可供使用,而不論授與使用者之數據物件的特定許可權為何。 不過,如果您使用工作區來隔離用戶數據存取,您可能會想要限制帳戶中特定工作區的目錄存取權,以確保特定種類的數據只會在這些工作區中處理。 例如,您可能想要個別的生產與開發工作區,或個別的工作區來處理個人資料。 這稱為 工作區目錄系結。 請參閱限制特定工作區的目錄存取

Unity 目錄目錄

注意

為了提升數據隔離,您也可以將雲端記憶體存取和雲端服務存取系結至特定工作區。 請參閱 (選擇性) 將記憶體認證指派給特定工作區(選擇性) 將外部位置指派給特定工作區,以及 (選擇性) 將服務認證指派給特定工作區

如何為我的組織設定 Unity Catalog 工具?

若要使用 Unity 目錄,您的 Azure Databricks 工作區必須針對 Unity 目錄啟用,這表示工作區會附加至 Unity 目錄中繼存放區。

工作區如何連接至中繼存放區? 這取決於帳戶和工作區:

  • 一般而言,當您第一次在區域中建立 Azure Databricks 工作區時,會自動建立中繼存放區並附加至工作區。
  • 對於某些較舊的帳戶,帳戶管理員必須建立中繼存放區,並將該區域中的工作區指派給中繼存放區。 如需指示,請參閱 建立 Unity 目錄中繼存放區
  • 如果帳戶已為區域指派中繼存放區,帳戶管理員可以決定是否自動將中繼存放區附加至該區域中的所有新工作區。 請參閱 啟用自動分配給新工作區的 Metastore

無論您的工作區是否自動啟用 Unity 目錄,也需要下列步驟才能開始使用 Unity 目錄:

  • 建立目錄和架構,以包含數據表和磁碟區等資料庫物件。
  • 建立管理儲存位置,以在這些目錄和架構中儲存管理數據表和存儲卷。
  • 將目錄、架構和資料庫物件的存取權授與使用者。

自動啟用的 Unity Catalog 工作區會提供一個 工作區目錄,並授予所有工作區使用者廣泛的許可權。 此目錄是試用 Unity 目錄的便利起點。

如需詳細的設定指示,請參閱 開始使用 Unity 目錄

將現有的工作區升級至 Unity 目錄

若要瞭解如何將非 Unity 目錄工作區升級至 Unity 目錄,請參閱 將 Azure Databricks 工作區升級至 Unity 目錄

Unity 目錄需求和限制

Unity 目錄需要特定類型的計算和檔格式,如下所述。 下面也列出在所有版本的 Databricks Runtime 中,Unity Catalog 未能完全支援的一些 Azure Databricks 功能。

區域支援

所有區域都支援 Unity 目錄。 如需詳細資訊,請參閱 Azure Databricks 區域

計算需求

Unity 目錄支援在執行 Databricks Runtime 11.3 LTS 或更新版本的叢集上運行。 所有 SQL 倉儲計算版本預設都支援 Unity 目錄。

在舊版 Databricks Runtime 上執行的叢集不支援所有 Unity 目錄 GA 特性和功能。

若要存取 Unity 目錄中的數據,叢集必須設定正確的 存取模式。 Unity 目錄預設為安全。 如果未以標準或專用存取模式設定叢集,叢集就無法存取 Unity 目錄中的數據。 請參閱存取模式

如需每個 Databricks 執行時間版本中 Unity 目錄功能變更的詳細資訊,請參閱 版本資訊

檔案格式支援

Unity 目錄支援以下的表格格式:

限制

Unity 目錄具有下列限制。 其中有些是較舊的 Databricks 運行時間版本和計算存取模式特有的。

結構化串流工作負載有額外的限制,視 Databricks 運行時間和存取模式而定。 請參閱 標準運算需求和限制專用運算需求和限制

Databricks 會發行定期壓縮此清單的新功能。

  • 先前在工作區中建立的群組(也就是工作區層級群組)無法在 Unity Catalog GRANT 語句中使用。 這是為了確保可跨工作區的群組保持一致的觀點。 若要在陳述式中使用 GRANT 群組,請在帳戶層級建立群組,並更新主體或群組管理的任何自動化 (例如 SCIM、Okta 和 Microsoft Entra ID 連接器,以及 Terraform),以參考帳戶端點,而不是工作區端點。 請參閱 群組來源

  • R 中的工作負載不支援針對執行 Databricks Runtime 15.3 和以下計算的數據列層級或數據行層級安全性使用動態檢視。

    • 針對 R 中查詢動態檢視的工作負載,使用執行 Databricks Runtime 15.4 LTS 或更新版本的專用計算資源。 這類工作負載也需要啟用無伺服器計算的工作區。 如需詳細資訊,請參閱 專用計算的細緻存取控制
  • 在執行 Databricks Runtime 12.2 LTS 及更低版本的計算上,Unity Catalog 不支援淺層複製。 您可以使用淺層複製,在 Databricks Runtime 13.3 LTS 和更新版本上建立受控數據表。 不論 Databricks 執行時間版本為何,您無法使用它們來建立外部數據表。 請參閱 Unity Catalog 資料表的淺複製

  • Unity Catalog 資料表不支援分桶。 如果您執行命令來嘗試在 Unity Catalog 中建立分桶表,則會引發例外狀況。

  • 如果某些叢集存取 Unity 目錄,而其他叢集則無法從多個區域的工作區寫入相同的路徑或 Delta Lake 資料表,可能會導致效能不可靠。

  • 使用 ALTER TABLE ADD PARTITION 之類的命令操作外部資料表的分割區,需要啟用分割區元數據記錄。 請參閱外部資料表的分割發現

  • 對非 Delta 格式的數據表使用覆寫模式時,用戶必須具有父架構的 CREATE TABLE 許可權,而且必須是現有對象的擁有者,或具有 物件的 MODIFY 許可權。

  • Databricks Runtime 12.2 LTS 和以下版本不支援 Python UDF。 這包括 Spark 上的 UDAF、UDTF 和 Pandas (applyInPandasmapInPandas)。 Databricks Runtime 13.3 LTS 和更新版本支援 Python 純量 UDF。

  • 在具有標準存取模式的計算上,Databricks Runtime 14.1 和以下版本不支援 Scala UDF。 Databricks Runtime 14.2 和更新版本在具有標準存取模式的計算上支援純量 UDF。

  • 不支援標準 Scala 線程集區。 請改用org.apache.spark.util.ThreadUtils中的特殊線程集區,例如org.apache.spark.util.ThreadUtils.newDaemonFixedThreadPool。 不過,ThreadUtils 中的下列線程集區不受支援:ThreadUtils.newForkJoinPool 和任何 ScheduledExecutorService 線程集區。

  • Azure 診斷記錄只會記錄工作區層級的 Unity 目錄事件。 若要檢視帳戶層級動作,您必須使用稽核日誌系統表格。 請參閱 稽核記錄系統數據表參考

在 Unity 目錄中註冊的模型有其他限制。 請參閱限制

資源配額

Unity 目錄會對所有安全物件強制執行資源配額。 這些配額列在資源限制中。 如果你預期超過這些資源限制,請連絡你的 Azure Databricks 帳戶團隊。

你可以使用 Unity 目錄資源配額 API 來監視配額使用。 請參閱 監視 Unity 目錄資源配額的使用方式

其他資源