Übersicht zu Snowflake Open Catalog¶
Snowflake Open Catalog ist eine Katalogimplementierung für Apache Iceberg™-Tabellen und basiert auf dem Open-Source-REST-Protokoll von Apache Iceberg™. Snowflake Open Catalog ist ein verwalteter Service für Apache Polaris™ (incubating).
Mit Open Catalog können Sie zentralisierten, sicheren Lese- und Schreibzugriff auf Ihre Iceberg-Tabellen über verschiedene REST-kompatible Abfrage-Engines hinweg anbieten.
Open Catalog wird derzeit als Dienst angeboten, der in einer von Snowflake verwalteten Infrastruktur gehostet wird.
!(Konzeptdiagramm von Open Catalog.)(img/overview.svg „Übersicht zu Open Catalog“)
Anmelden¶
Open Catalog bietet die folgenden Anmeldemöglichkeiten:
Für bestehende Snowflake-Kunden: Melden Sie sich bei einem bestehenden Snowflake-Konto als Administrator einer Organisation an, und erstellen Sie ein neues Open Catalog-Konto in Ihrer Snowflake-Organisation. Benutzer mit der Rolle ORGADMIN in Snowflake können das Open Catalog-Konto von Snowflake aus verwalten. Anweisungen finden Sie unter Ein Snowflake Open Catalog-Konto erstellen.
Wenn Sie noch kein Kunde von Snowflake sind: Sie können Snowflake Open Catalog 30 Tage lang kostenlos testen, indem Sie sich für ein Snowflake-Testkonto anmelden. Anweisungen finden Sie unter Snowflake Open Catalog kostenlos testen.
Die wichtigsten Konzepte¶
In diesem Abschnitt werden Schlüsselkonzepte im Zusammenhang mit der Verwendung des in Snowflake gehosteten Open Catalog vorgestellt.
Im folgenden Diagramm sehen Sie ein Beispiel für eine Open Catalog-Struktur mit verschachtelten Namespaces für Catalog1. Es wurden noch keine Tabellen oder Namespaces für Catalog2 oder Catalog3 erstellt.
Katalog¶
In Open Catalog können Sie eine oder mehrere Katalogressourcen erstellen, um Iceberg-Tabellen zu organisieren.
Konfigurieren Sie Ihren Katalog, indem Sie die Werte in der Konfiguration des Speichers für S3, Azure oder Google Cloud Storage einstellen. Ein Iceberg-Katalog ermöglicht es einer Abfrage-Engine, Tabellen zu verwalten und zu organisieren. Der Katalog bildet die erste architektonische Schicht in der Apache Iceberg™-Tabellenspezifikation und muss die folgenden Aufgaben unterstützen:
Speichern des aktuellen Metadatenzeigers für eine oder mehrere Iceberg-Tabellen. Ein Metadatenzeiger weist den Namen einer Tabelle dem Speicherort der aktuellen Metadatendatei dieser Tabelle zu.
Durchführung von atomaren Operationen, sodass Sie den aktuellen Metadatenzeiger für eine Tabelle auf den Metadatenzeiger einer neuen Version der Tabelle aktualisieren können.
Um mehr über Iceberg-Kataloge zu erfahren, lesen Sie die Apache Iceberg™-Dokumentation.
Katalog-Typen¶
Ein Katalog kann einer der beiden folgenden Typen sein:
Intern: Der Katalog wird von Open Catalog verwaltet. Tabellen aus diesem Katalog können in Open Catalog gelesen und geschrieben werden.
Extern: Der Katalog wird extern von einem anderen Iceberg-Kataloganbieter verwaltet (z. B. Snowflake, Glue, Dremio Arctic). Tabellen aus diesem Katalog werden mit Open Catalog synchronisiert. Diese Tabellen sind in Open Catalog schreibgeschützt. Im aktuellen Release wird nur ein externer Snowflake-Katalog bereitgestellt.
Ein Katalog wird mit einer Speicherkonfiguration konfiguriert, die auf S3, Azure Storage oder GCS verweisen kann.
Wie Sie einen neuen Katalog erstellen, erfahren Sie unter Einen Katalog erstellen.
Namespace¶
Sie erstellen Namespaces, um Iceberg-Tabellen innerhalb eines Katalogs logisch zu gruppieren. Ein Katalog kann mehrere Namespaces haben. Sie können auch verschachtelte Namespaces erstellen. Iceberg-Tabellen gehören zu Namespaces.
Apache Iceberg™-Tabellen und -Kataloge¶
In einem internen Katalog wird eine Iceberg-Tabelle in Open Catalog registriert, aber über Abfrage-Engines gelesen und geschrieben. Die Tabellendaten und Metadaten werden in Ihrem externen Cloud-Speicher gespeichert. Die Tabelle verwendet Open Catalog als Iceberg-Katalog.
Wichtig
Wenn Sie eine Tabelle in Snowflake Open Catalog löschen, ohne sie zu bereinigen, erstellen Sie keine neue Tabelle mit demselben Namen und Speicherort wie die gelöschte Tabelle. Andernfalls könnten Benutzer auf die ursprünglichen Tabellendaten zugreifen, für die sie keine Zugriffsrechte besitzen dürften. Wenn Sie z. B. Tabelle1
löschen, aber nicht bereinigen, deren Speicherverzeichnis /MyCatalog/Schema1/Tabelle1
lautet, erstellen Sie keine neue Tabelle1
in demselben Tabelle1
-Speicherverzeichnis. Wenn Sie eine Tabelle löschen, ohne sie zu bereinigen, bleiben ihre Daten im externen Cloud-Speicher erhalten.
Wenn Sie Tabellen haben, die Snowflake als Iceberg-Katalog verwenden (von Snowflake verwaltete Tabellen), können Sie diese Tabellen mit einem externen Katalog in Open Catalog synchronisieren. Wenn Sie diesen Katalog mit Open Catalog synchronisieren, erscheint er als externer Katalog in Open Catalog. Die Tabellendaten und Metadaten werden in Ihrem externen Cloud-Speicher gespeichert. Die Abfrage-Engine von Snowflake kann aus diesen Tabellen lesen oder in sie schreiben. Die anderen Abfrageprogramme können jedoch nur aus diesen Tabellen lesen.
Wichtig
Um sicherzustellen, dass die für einen Katalog definierten Zugriffsrechte korrekt durchgesetzt werden, müssen die folgenden Bedingungen erfüllt sein:
Ein Verzeichnis enthält nur die Datendateien, die zu einer einzigen Tabelle gehören.
Eine Verzeichnis-Hierarchie entspricht der Namespace-Hierarchie des Katalogs.
Wenn ein Katalog zum Beispiel die folgenden Artikel enthält:
Top-Level Namespace
namespace1
Verschachtelter Namespace
namespace1a
Eine
Kunden
-Tabelle, gruppiert unter verschachteltem Namespacenamespace1a
Eine Tabelle mit
Bestellungen
, gruppiert unter verschachteltem Namespacenamespace1a
Die Hierarchie des Verzeichnisses für den Katalog muss lauten:
/namespace1/namespace1a/customers/<files for the customers table *only*>
/namespace1/namespace1a/orders/<files for the orders table *only*>
Diese Bedingungen gelten sowohl für interne als auch für externe Kataloge, einschließlich externer Kataloge, die von Snowflake verwaltete Apache Iceberg™-Tabellen enthalten. Wenn Sie eine Tabelle in einem internen Katalog erstellen, verbietet Open Catalog Ihnen, die Tabelle innerhalb des Verzeichnisses oder Unterverzeichnisses einer bestehenden Tabelle zu erstellen. Wenn Sie von Snowflake verwaltete Iceberg-Tabellen in einem externen Katalog erstellen, verbietet Open Catalog nicht, dass sich die Verzeichnisse überschneiden. Wenn Sie diese Tabellen erstellen, verwenden Sie daher den Parameter BASE_LOCATION, um ein eindeutiges übergeordnetes Verzeichnis für jede Tabelle anzugeben. Weitere Informationen finden Sie unter CREATE ICEBERG TABLE (Snowflake als Iceberg-Katalog).
Weitere Informationen über interne und externe Kataloge finden Sie unter Katalogtypen.
Dienstprinzipal¶
Ein Dienstprinzipal ist eine Entität, die Sie in Open Catalog erstellen. Jeder Dienstprinzipal kapselt Anmeldeinformationen, mit denen Sie eine Verbindung zu Open Catalog herstellen können.
Abfrage-Engines verwenden Dienstprinzipale, um eine Verbindung zu Katalogen herzustellen.
Open Catalog erzeugt für jeden Dienstprinzipal ein Paar aus Client-ID und Clientgeheimnis.
Die folgende Tabelle zeigt Beispiele für Dienstprinzipale, die Sie in Open Catalog erstellen können:
Name der Dienstverbindung |
Zweck |
---|---|
Flink-Datenaufnahme |
Für Apache Flink® zur Aufnahme von Streamingdaten in Apache Iceberg™-Tabellen. |
Spark ETL-Pipeline |
Für Apache Spark™ zur Ausführung von ETL-Pipeline-Jobs auf Iceberg-Tabellen. |
Snowflake-Datenpipelines |
Für Snowflake zur Ausführung von Datenpipelines zur Umwandlung von Daten in Apache Iceberg™-Tabellen. |
Trino BI-Dashboard |
Für Trino zum Ausführen von BI-Abfragen für die Verwendung eines Dashboards. |
Snowflake AI-Team |
Damit Snowflake AI-Jobs auf Daten in Apache Iceberg™-Tabellen ausführen kann. |
Dienstverbindung¶
Eine Dienstverbindung repräsentiert eine REST-kompatible Engine (wie z. B. Apache Spark™, Apache Flink®, oder Trino), die von Open Catalog lesen und darin schreiben kann. Beim Erstellen einer neuen Dienstverbindung gewährt der Open Catalog-Administrator dem Dienstprinzipal, der mit der neuen Dienstverbindung erstellt wird, entweder eine neue oder eine bestehende Prinzipalrolle. Eine Prinzipalrolle ist eine Ressource in Open Catalog, mit der Sie Open Catalog-Dienstprinzipale logisch gruppieren und Berechtigungen für sicherheitsrelevante Objekte erteilen können. Weitere Informationen finden Sie unter Prinzipalrolle. Open Catalog verwendet ein Modell der rollenbasierten Zugriffssteuerung (RBAC), um Dienstprinzipalen Zugriff auf Ressourcen zu gewähren. Weitere Informationen finden Sie unter Zugriffssteuerung. Ein Diagramm dieses Modells finden Sie unter RBAC-Modell.
Wenn der Open Catalog-Administrator dem Dienstprinzipal für die neue Verbindung eine neue Prinzipalrolle zuweist, hat der Dienstprinzipal noch keine Berechtigungen dafür. Bei der Sicherung des Katalogs, mit dem sich die neue Dienstverbindung verbinden wird, gewährt der Open Catalog-Administrator Berechtigungen für Katalogrollen und weist diese Katalogrollen dann der neuen Prinzipalrolle zu. Daher verfügt der Dienstprinzipal für die neue Dienstverbindung über diese Berechtigungen. Weitere Informationen über Katalogrollen finden Sie unter Katalogrolle.
Wenn der Open Catalog-Administrator dem Dienstprinzipal für die neue Verbindung eine bestehende Prinzipalrolle zuweist, wird der Dienstprinzipal mit den Berechtigungen ausgestattet, die für die Katalogrollen gewährt werden, die der bestehenden Prinzipalrolle zugewiesen werden. Bei Bedarf kann der Open Catalog-Administrator der bestehenden Prinzipalrolle zusätzliche Katalogrollen zuweisen oder Katalogrollen entfernen, um die Berechtigungen des Dienstprinzipals anzupassen. Ein Beispiel dafür, wie RBAC in Open Catalog funktioniert, finden Sie unter RBAC-Beispiel.
Konfiguration des Speichers¶
Eine Speicherkonfiguration speichert eine generierte Entität für die Identitäts- und Zugriffsverwaltung (IAM) für Ihren externen Cloudspeicher und wird erstellt, wenn Sie einen Katalog erstellen. Die Speicherkonfiguration wird verwendet, um die Werte für die Verbindung von Open Catalog mit Ihrem Cloudspeicher einzustellen. Während des Prozesses der Katalogerstellung wird eine IAM-Entität erzeugt und verwendet, um eine vertrauenswürdige Beziehung zwischen dem Anbieter des Cloudspeichers und Open Catalog herzustellen.
Wenn Sie einen Katalog erstellen, geben Sie die folgenden Informationen über Ihren externen Cloudspeicher an:
Anbieter des Cloudspeichers |
Informationen |
---|---|
Amazon S3 |
<ul><li>Standard-Speicherort für Ihren Amazon S3-Bucket</li><li>Speicherorte für Ihren Amazon S3-Bucket</li><li>S3-Rolle ARN</li><li>Externe ID (optional)</li></ul> |
Google Cloud Storage (GCS) |
<ul><li>Standard-Speicherort für Ihren GCS-Bucket</li><li>Speicherorte für Ihren GCS-Bucket</li></ul> |
Azure |
<ul><li>Standard-Speicherort für Ihren Microsoft Azure Container</li><li>Speicherorte für Ihren Microsoft Azure Container</li><li>Azure-Mandanten-ID</li></ul> |
Beispiel-Workflow¶
Im folgenden Beispiel-Workflow erstellt Bob eine Apache Iceberg™-Tabelle mit dem Namen Table1 und Alice liest Daten aus Table1.
Bob verwendet Apache Spark™ um die Tabelle Table1 unter dem Namespace Namespace1 im Katalog Catalog1 zu erstellen und Werte in Table1 einzufügen.
Bob kann Table1 erstellen und Daten darin einfügen, weil er eine Dienstverbindung mit einem Dienstprinzipal verwendet, der über die Berechtigungen zur Durchführung dieser Aktionen verfügt.
Alice verwendet Snowflake, um Daten aus Table1 zu lesen.
Alice kann Daten aus Table1 lesen, weil sie eine Verbindung mit einem Dienstprinzipal mit einer Katalogintegration verwendet, der über die Berechtigungen zur Durchführung dieser Aktion verfügt. Alice erstellt eine nicht verwaltete Tabelle in Snowflake, um Daten aus Table1 zu lesen.
Sicherheit und Zugriffssteuerung¶
Dieser Abschnitt beschreibt die Sicherheit und die Zugriffssteuerung.
Automatische Erzeugung von Anmeldeinformationen¶
Automatische Erzeugung von Anmeldeinformationen vereinfacht die Zugriffssteuerung in Open Catalog, indem es die Zugriffsverwaltung für die folgenden Elemente zentralisiert:
Die Metadaten in Open Catalog
Den Speicherort für Ihre Apache Iceberg-Tabellen
Wenn Automatische Erzeugung von Anmeldeinformationen für einen Katalog aktiviert ist, stellt Open Catalog der Abfrage-Engine, welche die Abfrage ausführt, einen temporären Speicherberechtigungsnachweis zur Verfügung. Mit dieser Berechtigung kann die Abfrage-Engine auf den Speicherort des Verzeichnisses zugreifen, das einer Iceberg-Tabelle zugrunde liegt. Wenn Sie Automatische Erzeugung von Anmeldeinformationen aktivieren, müssen Sie den Speicherzugriff nicht separat außerhalb von Open Catalog verwalten.
Automatische Erzeugung von Anmeldeinformationen für externe Kataloge¶
Sie haben die Möglichkeit, die automatische Erzeugung von Anmeldeinformationen für jeden externen Katalog zu aktivieren. Wenn Sie die automatische Erzeugung von Anmeldeinformationen für einen Katalog nicht aktivieren, müssen Sie der Abfrage-Engine außerhalb von Open Catalog Ihre eigenen Speicherzugriffsdaten separat zur Verfügung stellen.
Bevor Sie die automatische Erzeugung von Anmeldeinformationen für einen externen Katalog aktivieren, sollten Sie sich darüber im Klaren sein, dass Open Catalog nicht verhindert, dass Iceberg-Tabellen im Katalog überschneidende Speicherverzeichnisse besitzen. Wenn sich die Speicherverzeichnisse von Tabellen überschneiden, könnten Benutzer auf Tabellen zugreifen, für die sie keine Zugriffsrechte besitzen dürften. Bevor Sie die automatische Erzeugung von Anmeldeinformationen für einen externen Katalog aktivieren, vergewissern Sie sich, dass Ihre Tabellen im Katalog keine überschneidenden Speicherverzeichnisse besitzen.
Nehmen wir zum Beispiel die folgenden Speicherverzeichnisse:
Das Speicherverzeichnis für Tabelle1 ist
/MyCatalog/Schema1/Tabelle1
.Das Speicherverzeichnis für Tabelle2 ist
/MyCatalog/Schema1/Tabelle1/Tabelle2
.
Benutzer mit Zugriffsdaten für Tabelle1 haben auch Zugriff auf den Speicherort von Tabelle2.
Hier ein Beispiel, wie Sie die überlappenden Speicherverzeichnisse auflösen können:
Das Speicherverzeichnis für Tabelle1 ist
/MyCatalog/Schema1/Tabelle1
.Das Speicherverzeichnis für Tabelle2 ist
/MyCatalog/Schema1/Tabelle2
.
Um die automatische Erzeugung von Anmeldeinformationen für einen externen Katalog zu aktivieren siehe Automatische Erzeugung von Anmeldeinformationen für einen externen Katalog aktivieren.
Automatische Erzeugung von Anmeldeinformationen für interne Kataloge¶
Die automatische Erzeugung von Anmeldeinformationen für interne Kataloge ist standardmäßig aktiviert, wenn Sie den Katalog erstellen. Sie brauchen es nicht zu aktivieren. Wenn Sie eine Tabelle in einem internen Katalog erstellen, verbietet Open Catalog Ihnen, die Tabelle innerhalb des Verzeichnisses oder Unterverzeichnisses einer bestehenden Tabelle zu erstellen.
Identitäts- und Zugangsverwaltung (IAM)¶
Open Catalog verwendet die Identitäts- und Zugriffsverwaltungs(IAM)-Entität, um eine sichere Verbindung zu Ihrem Speicher für den Zugriff auf Tabellendaten, Iceberg-Metadaten und Manifestdateien, in denen das Tabellenschema, Partitionen und andere Metadaten gespeichert sind, herzustellen. Open Catalog behält die IAM-Entität für Ihren Speicherort bei.
Zugriffssteuerung¶
Open Catalog setzt die Zugriffssteuerung, die Sie konfigurieren, für alle mit dem Dienst registrierten Tabellen durch und regelt die Sicherheit für alle Abfragen von Abfrage-Engines auf einheitliche Weise.
Open Catalog verwendet ein Modell der rollenbasierten Zugriffssteuerung (RBAC), mit dem Sie den Zugriff für Open Catalog-Dienstprinzipale auf Kataloge, Namespaces und Tabellen zentral konfigurieren können.
Open Catalog RBAC verwendet zwei verschiedene Rollentypen, um Berechtigungen zu delegieren:
Prinzipalrollen: Werden Open Catalog-Dienstprinzipalen gewährt und sind analog zu Rollen in anderen Systemen zur Zugriffssteuerung, die Sie Dienstprinzipalen gewähren.
Katalogrollen: Mit bestimmten Berechtigungen auf Open Catalog-Ressourcen konfiguriert und an Prinzipalrollen vergeben.
Weitere Informationen finden Sie unter Zugriffssteuerung.
Rechnungsstellung¶
Open Catalog ist in den ersten sechs Monaten nach der allgemeinen Verfügbarkeit kostenlos. Die Rechnungsstellung wird Mitte 2025 beginnen.
Wenn die Abrechnung beginnt, stellt Snowflake Ihrem Konto die Anfragen an REST APIs in Rechnung, die von dem Open Catalog-Service unterstützt werden. Weitere Informationen finden Sie in der Tabelle „Serverless Feature Credits Table“ in der [Snowflake Service Consumption Table] (https://www.snowflake.com/legal-files/CreditConsumptionTable. pdf).
Snowflake stellt Ihrem Konto keine außerhalb von Snowflake gespeicherten Iceberg-Tabellen in Rechnung. Ihr Cloudspeicheranbieter stellt Ihnen die Nutzung des Datenspeichers direkt in Rechnung.
Rechtliche Hinweise¶
Apache®, Apache Iceberg™, Apache Spark™, Apache Flink®, und Flink® sind entweder eingetragene Marken oder Marken der Apache Software Foundation in den USA und/oder anderen Ländern.