Die Entwicklung von State-of-the-Art Datenplattformen findet kaum mehr einen Weg vorbei an Datalakes. Doch einen Überblick zu behalten, welche Daten im Datalake verwaltet werden, wohin diese fließen und wer Zugriff auf welche Tabellen hat, bleibt eine Mammutaufgabe. In einer typischen Enterprise-Datenarchitektur gibt es dutzende Datenbanken, verteilt entweder On-premises oder auf verschiedenste Cloudplattformen und auf diversen Datenbanksystemen. Wie sollen Teams in diesen Strukturen einen Überblick behalten, welche Daten vorhanden sind, wer Zugriff darauf hat und wohin diese fließen?
Der von Databricks angebotene Unity Catalog liefert eine zentralisierte Governancelösung, die Abhilfe schaffen soll. Der Unity Catalog ist jedoch kein klassischer Datenkatalog, wie der Name vermuten lassen könnte. Vielmehr ist er eine Data-Governance-Lösung, die Anwendern ermöglicht, den Zugriff auf den Datalake von einer zentralen Stelle aus zu steuern. Er bietet die lösung um alle Datentypen und ‑quellen in einem einzigen Katalog registrieren.
Zusammen mit dem Release des Unity Catalogs erweitert Databricks sein Angebot außerdem um zahlreiche neue Funktionen. Diese enthalten unter anderem Data Lineage, um Datenherkunft nachzuverfolgen, Delta Sharing, das das Teilen von Daten vereinfacht und Query Federation, was es ermöglicht, externe Datenbanken an den Unity Catalog anzubinden.
Dieser Beitrag gibt einen Einblick in die Funktionen und zeigt auf, wie mithilfe des Unity Catalogs die Data Governance in einer Umgebung mit Databricks gehandhabt wird.
Datenbankobjekte im Unity Catalog
Das Zentrum, um das sich alles im Unity Catalog dreht, sind Daten. Diese gilt es zu strukturieren, auffindbar zu machen und den Zugriff zu verwalten. Damit das beliebig genau getan werden kann, bedarf es diverser Datenbankobjekte, die verschiedene Funktionen erfüllen. Dieser Paragraf widmet sich zunächst den verschiedenen Objekten und ihrer Funktion im Unity Catalog.
Der Metastore im Unity Catalog
Als zentrale Verwaltungseinheit fungiert der Unity Catalog Metastore. Hier werden Metadaten zu Datenbankobjekten wie Tabellen, Volumes, File Shares und External Locations sowie die Berechtigungen auf diese Objekte verwaltet.
Unter einem Metastore werden die Datenbankobjekte in einer dreistufigen Hierarchie verwaltet. Kataloge befinden sich auf der obersten Ebene, darunter sind Schemas angeordnet und auf der untersten Ebene die eigentlichen Datenobjekte, wie in Abbildung 1 zu sehen ist.
In der Regel wird pro Betriebsregion ein Metastore bereitgestellt, welcher wiederum dem Databricks Account zugeordnet ist. Der Grund, wieso genau ein Metastore verwendet wird, ist, dass hier die Zugriffsverwaltung der einzelnen Workspaces zusammenläuft und mit dem RBAC-Rollen (role-based access control) – z.B. des Cloudanbieters – zusammengebracht wird. Des Weiteren kann der Zugriff auf Workspaces im selben Metastore einfach freigeschaltet werden. Auf den Metastore können beliebig viele Databricks Workspaces zugreifen. Allerdings muss der Workspace, in dem gearbeitet wird, mit einem Unity Catalog Metastore verbunden sein, um den Unity Catalog verwenden zu können.

Katalog
Kataloge sind die oberste Ebene der Datenhierarchie, die vom Unity Catalog Metastore verwaltet wird. Sie sind als erste Stufe zur Datenisolierung im Data Governance-Modell vorgesehen. Kataloge bieten eine Möglichkeit, Schemas logisch zu gruppieren. So kann beispielsweise die Trennung von Entwicklungs- und Produktionsdaten durch Kataloge widergespiegelt werden oder es können Produkte in eigene Kataloge isoliert werden.
Schema
Schemas sind logische Gruppierungen von tabellarischen Daten (Tabellen und Views), nicht tabellarischen Daten (Volumes), Funktionen und Modellen für maschinelles Lernen. Sie bieten eine Möglichkeit, den Zugriff auf Daten auf einer weiteren Ebene zu steuern, die granularer ist als Kataloge. Oft repräsentieren sie einen einzelnen Anwendungsfall, etwa eine Gruppierung mehrerer Tabellen aus einem Quellsystem. Weiter denkbare Beispiele wären etwa die Isolation der Views für ein Team oder eine Zielanwendung.
Tabellen und Views
Tabellen befinden sich in der dritten Ebene des dreistufigen Name-Spaces von Unity Catalog. Sie enthalten die eigentlichen Daten. Mit dem Unity Catalog können Tabellen entweder verwaltet – Databricks nennt diese Tabellen „managed” – oder als „externe“ Tabellen erstellt werden.
Für verwaltete Tabellen übernimmt der Unity Catalog die Verwaltung des Lebenszyklus und das Layout der Dateien auf dem Speicher vollständig. Das heißt, dass Databricks nicht mehr gebrauchte Daten (beispielsweise nach einem DROP TABLE) selbstständig löscht. Standardmäßig werden verwaltete Tabellen in dem Speicherort abgelegt, der beim Erstellen eines Metastores konfiguriert wurde, etwa Azure Storage oder AWS Buckets. Der Speicherort kann stattdessen auch auf der Katalog- oder Schemaebene gesetzt werden.
Externe Tabellen sind Tabellen, deren Lebenszyklus und Dateilayout vom Cloudanbieter oder anderen Datenplattformen verwaltet werden, anstatt von Unity Catalog. Dafür muss während dem Erstellen der Tabelle zusätzlich ein Speicherort mit dem Keyword LOCATION angegeben werden. Typischerweise werden externe Tabellen verwendet, um große Mengen von bestehenden Daten zu registrieren oder um den Zugriff auf die Daten mit Tools außerhalb von Databricks zu ermöglichen. Externe Tabellen unterstützen eine Vielzahl von Datenformaten wie zum Beispiel Parquet, CSV und JSON.
Sobald eine externe Tabelle in einem Unity Catalog-Metastore registriert ist, kann der Zugriff auf sie über Databricks genauso verwaltet werden, wie bei nativen Databrickstabellen.
Volumes
Volumes befinden sich ebenfalls auf der dritten Ebene des dreistufigen Namensraumes von Unity Catalog. Sie können verwendet werden, um strukturierte, semistrukturierte und unstrukturierte Daten abzulegen. So können beispielsweise Bilder, Audio oder Textdateien für maschinelles Lernen verwaltet werden.
Modelle und Funktionen
Obwohl sie streng genommen keine Datenbestände sind, können registrierte (Machine Learning) Modelle und benutzerdefinierte Funktionen (UDF) ebenfalls im Unity Catalog verwaltet werden und befinden sich auf der untersten Ebene der Objekthierarchie.
Data Governance und Access Control
Der Zugriff auf von Databricks verwaltete Daten ist standardmäßig beschränkt. In anderen Worten: Zugriff hat erst einmal nur der Besitzer des Datenbankobjekts. Damit ein anderer Benutzer auf Daten zugreifen kann, muss ihm explizit Zugriff erteilt werden.
Die Berechtigungen können beliebig granular auf den oben beschriebenen Ebenen gesetzt werden, wobei Berechtigungen im Unity Catalog nach der Hierarchie von oben nach unten vererbt werden. Berechtigungen können von Objektbesitzern und Administratoren gewährt werden. Entweder in der UI, mithilfe von ANSI SQL-Befehlen oder mit der von Databricks angebotenen REST-API können die Rechte an einzelne Benutzer und Gruppen beziehungsweise RBAC-Rollen zugewiesen werden.
In Abbildung 2 ist zu sehen, wie die Zugriffskontrolle in Databricks abläuft. Im Fall von managed Tabellen läuft die Kontrolle rein über den Unity Catalog, während für Daten auf External Locations zusätzlich Credentials für den jeweiligen Cloudstorage benötigt werden. Diese sind wiederum im Unity Catalog hinterlegt. Alle Benutzeraktivitäten werden in Audit Logs gespeichert. Wie in Abbildung 2 zu sehen ist, wird auf der ersten Ebene geprüft, ob der Benutzer die Berechtigung für die im Unity Catalog hinterlegte Tabelle hat. Im zweiten Schritt folgt dann der Abgleich der Berechtigung auf die externen Ressourcen.

Monitoring und Audit Logs in Databricks
Das Monitoring aller Aktivitäten von Benutzern auf Databricks Workspaces spielt in vielen Unternehmen eine große Rolle. Um alle Aktivitäten rund um Benutzer, Rechte, Cluster und Datenzugriffe zu überwachen, bietet Databricks zahlreiche Event Logs an. In den Audit Logs für Benutzerevents wird beispielsweise festgehalten, wann sich ein Benutzer einloggt, wenn sich Zugriffsrechte ändern oder wenn er ein Token verwendet. So kann detailliert nachvollzogen werden, welche Aktionen ausgeführt wurden. Wie in Abbildung 2 zu sehen, wird jeglicher Zugriff in den Audit Logs gespeichert. Die folgende Abfrage gibt beispielsweise alle Audit Logs für den betreffenden Nutzer aus.
SELECT * FROM system.access.audit
WHERE user_identity.email = "user.name@abc.com"
Eine weitere Komponente für das Monitoring sind die Views, die im Information Schema enthalten sind. Das Information Schema ist ein Standardschema, das Metainformationen über Objekte enthält, die der zugehörige Katalog verwaltet. Sie zeigen Daten wie etwa Beschreibungstexte, Tags und Constraints (z.B. für Primary und Foreign Key). Abfragen auf diese Tabellen ermöglichen es, Daten einfach ausfindig zu machen. So lässt sich zum Beispiel einfach mit folgender Abfrage erheben, wie viele Tabellen in welchem Schema sind. Des Weiteren sind hier auch Privilegien der Benutzer abgelegt.
SELECT table_schema, count(table_schema)
FROM system.information_schema.tables
GROUP BY table_schema
Data Lineage
Ein weiteres Feature, das Databricks mit dem Unity Catalog eingeführt hat, ist die automatisierte Erfassung von Data Lineage. Dabei wird zur Laufzeit der Datenfluss von Anfang bis Ende der Verarbeitung auf Zeilen- und Spaltenebene analysiert und zur Auswertung aufgearbeitet. In die Lineage Daten fließen alle Operationen ein, die in den von Databricks unterstützten Sprachen ausgeführt werden. Wie in Abbildung 3 ersichtlich, wird auch das Schreiben und Lesen von External Locations sowie die Verwendung in Machine Learning Modellen in der Data Lineage aufgefasst. So erhält man ein vollständiges Bild der Datenabfolge von Anfang bis Ende.
Der Zugriff auf Lineage Daten ist durch das Data Governance Konzept gesichert. So benötigt man etwa BROWSE oder SELECT Privilegien auf der Tabelle, deren Lineage man betrachten möchte.

Data Sharing
Data Sharing in Databricks kann in zwei Bereiche eingeteilt werden: Zum einen in das Verfügbar-Machen von Daten über Workspace-Grenzen hinweg, wobei sich Nutzer der Daten weiterhin im gleichen Metastore bewegen und zum anderen in das Teilen von Daten über Metastore- und Unternehmensgrenzen hinweg mithilfe des Delta Sharing Protokolls.
In Databricks sind Kataloge an einen oder mehrere Workspaces gebunden. Nur Benutzer, die sowohl Zugriff auf den entsprechenden Workspace als auch auf die Tabelle haben, können auf diese zugreifen. Diese Bindung kann auf andere Workspaces des gleichen Metastores ausgeweitet werden, sodass Daten effizient geteilt werden können, ohne auf andere Sharing-Methoden oder das Replizieren von Daten zurückgreifen zu müssen.
Lakehouse Federation
Um den Zugriff auf Daten aus externen Datenbanken wie MySQL, PostgreSQL, Snowflake oder Microsoft SQL Servern in einer Databricks Plattform zu zentralisieren, ohne diese Daten auf Databricks migrieren zu müssen, können diese Datenbanken an den Unity Catalog angebunden werden. Dabei gibt es die Möglichkeit einzelne Verbindungen zu Datenbanken anzulegen, welche beispielsweise JDBC-Verbindungsinformationen zu einer PostgreSQL Datenbank definieren, die dann in externen Katalogen Daten zwischen Quelle und dem Unity Catalog synchronisieren und so eine Zugriffskontrolle über die Unity Catalog Governance bieten.
Lakehouse Federation übersetzt Databricks-SQL in Anweisungen, die in die föderierte Datenquelle abgesetzt werden können. Dies ermöglicht es den Benutzern, SQL-Abfragen direkt auf den verbundenen Datenbanken auszuführen, als ob die Daten nativ in Databricks gespeichert wären. Durch diese nahtlose Integration können Benutzer Databricks als zentrale Datenplattform nutzen, während sie auf diverse bestehende Quellen zugreifen können.
Fazit
Der Databricks Unity Catalog stellt eine umfassende und zentrale Lösung für die Verwaltung und Governance von Daten in modernen Datenplattformen dar. Mit Funktionen wie Data Lineage, Delta Sharing und Query Federation bietet der Unity Catalog zahlreiche Möglichkeiten, den Datenzugriff sicher und effektiv zu steuern. Die dreistufige Hierarchie des Datenkatalogs ermöglicht eine detaillierte und flexible Datenorganisation, während die Audit Logs und Monitoring-Tools eine transparente Nachverfolgung aller Aktivitäten gewährleisten. Die Integration von externen Datenquellen und die Unterstützung verschiedener Datenformate ermöglicht es Data-Governance mit Databricks Unity Catalog zu optimieren.
Quellen:
Azure Databricks documentation | Microsoft Learn
The Data and AI Company — Databricks
Abbildungen:
Microsoft Learn Abbildung 1
Databricks.com Abbildung 2