Verwenden einer mit dem Katalog verbundene Datenbank für Apache Iceberg™-Tabellen¶
Bemerkung
Update: We will start billing for catalog-linked databases sometime in December 2025.
Mit einer katalogverknüpften Datenbank können Sie von Snowflake aus auf mehrere Remote-Iceberg-Tabellen zugreifen, ohne einzelne extern verwaltete Tabellen erstellen zu müssen.
Eine mit einem Katalog verknüpfte Datenbank ist eine Snowflake-Datenbank, die mit einem externen Iceberg REST-Katalog verbunden ist. Snowflake synchronisiert automatisch mit dem externen Katalog, um Namespaces und Iceberg-Tabellen zu erkennen, und registriert die Remotetabellen in der mit dem Katalog verknüpften Datenbank. Mit einem Katalog verknüpfte Datenbanken unterstützen auch das Erstellen und Löschen von Schemas oder Iceberg-Tabellen.
Abrechnung für katalogverknüpfte Datenbanken¶
When billing starts sometime in December 2025, Snowflake bills your account for the following usage:
Automatische Tabellenerkennung, Erstellen von Schemas, Löschen von Schemas und Löschen von Tabellen. Snowflake stellt Ihrem Konto diese Nutzung unter der Nutzungsart CREDITS_USED_CLOUD_SERVICES in Rechnung. Die Nutzung von Clouddiensten wird nur berechnet, wenn der tägliche Verbrauch der Clouddienste 10 % des täglichen Verbrauchs der virtuellen Warehouses überschreitet. Weitere Informationen dazu finden Sie unter Erläuterungen zur Abrechnung der Nutzung von Clouddiensten.
Erstellen von Tabellen. Snowflake stellt Ihrem Konto diese Nutzung unter Nutzungsart CREDITS_USED_COMPUTE durch automatische Aktualisierung in Rechnung. Die Kosten für diese Nutzung sind in Tabelle 5 der Snowflake Service Consumption Table auf der Snowflake-Website beschrieben. Die Zeilen „Automatische Aktualisierung“ und „Datenregistrierung“ finden Sie in der Spalte für Snowflake-verwaltete Computeressourcen.
Snowflake stellt Ihnen keine Clouddienste in Rechnung, die Sie während der Tabellenerstellung verwenden.
Bemerkung
Sobald die Abrechnung beginnt, werden wir eine neue CATALOG_LINKED_DATABASE_USAGE_HISTORY-Ansicht veröffentlichen , mit der Sie die Credit-Nutzung für Ihre katalogverknüpften Datenbanken anzeigen können.
Workflow zur Konfiguration des Zugriffs auf Ihren externen Katalog und Tabellenspeicher¶
Die folgenden Schritte beschreiben, wie Sie eine mit dem Katalog verknüpfte Datenbank erstellen, den Synchronisierungsstatus zwischen Snowflake und dem Katalog überprüfen und eine Tabelle in der Datenbank erstellen oder abfragen.
Konfigurieren des Zugriffs auf den externen Katalog und Tabellenspeicher¶
Bevor Sie eine mit einem Katalog verknüpfte Datenbank erstellen, müssen Sie den Zugriff auf den externen Katalog und Tabellenspeicher konfigurieren. Um diesen Zugriff zu konfigurieren, konfigurieren Sie eine Katalogintegration mit automatisch erzeugten Anmeldeinformationen. Mit dieser Option muss Ihr Remote-Iceberg-Katalog die automatische Erzeugung von Anmeldeinformationen unterstützen.
Eine Anweisung dazu finden Sie unter Verwenden Sie vom Katalog automatisch erzeugte Anmeldeinformationen für Apache Iceberg™-Tabellen.
Bemerkung
Wenn Ihr Remote-Iceberg-Katalog die automatische Erzeugung von Anmeldeinformationen nicht unterstützt, müssen Sie ein externes Volumen und eine Katalogintegration konfigurieren, um den Zugriff auf Ihren externen Katalog und Tabellenspeicher zu konfigurieren. Konfigurieren Sie zuerst ein externes Volumen für Ihren Cloudspeicher-Anbieter. Anschließend konfigurieren Sie eine Apache Iceberg™ REST-Katalogintegration für Ihren Remote-Iceberg-Katalog.
Eine mit dem Katalog verbundene Datenbank erstellen¶
Erstellen Sie eine mit einem Katalog verknüpfte Datenbank mit dem Befehl CREATE DATABASE (katalogverknüpft):
Im folgenden Beispiel wird eine mit einem Katalog verknüpfte Datenbank erstellt, die automatisch erzeugte Anmeldeinformationen verwendet Das Synchronisierungsintervall beträgt 30 Sekunden, was die Standardeinstellung ist. Das Synchronisierungsintervall teilt Snowflake mit, wie oft der Remote-Katalog abgefragt werden soll.
CREATE DATABASE my_linked_db
LINKED_CATALOG = (
CATALOG = 'my_catalog_int'
);
Bemerkung
Weitere Informationen zum Erstellen einer katalogverknüpften Datenbank, die ein externes Volume verwendet, finden Sie unter CREATE DATABASE (katalogverknüpft), zusammen mit dem Beispiel.
Ihre mit dem Katalog verknüpfte Datenbank enthält ein Link-Symbol.
Überprüfen des Status der Katalogsynchronisierung¶
Um zu überprüfen, ob Snowflake den Remote-Katalog erfolgreich mit der Datenbank verknüpft hat, verwenden Sie die SYSTEM$CATALOG_LINK_STATUS-Funktion.
Die Funktion liefert auch Informationen, die Ihnen helfen, Tabellen im Remote-Katalog zu identifizieren, die nicht synchronisiert werden können.
SELECT SYSTEM$CATALOG_LINK_STATUS('my_linked_db');
Identifizieren von Tabellen, die erstellt wurden, aber nicht initialisiert werden konnten¶
Um Tabellen im Remote-Katalog zu identifizieren, die erfolgreich synchronisiert wurden, aber nicht automatisch aktualisiert werden, führen Sie den Befehl SHOW ICEBERG TABLES aus und sehen Sie sich dann die Spalte:code:auto_refresh_status in der Ausgabe an. Diese Tabellen weisen den executionState ICEBERG_TABLE_NOT_INITIALIZED in der Ausgabe auf.
Beispielsweise könnte Snowflake erfolgreich eine Tabelle in Ihrem Remote-Katalog erkennen und für Ihre mit dem Katalog verknüpften Datenbank erstellen, aber diese Tabelle weist eine beschädigte Datendatei in Ihrem Remote-Katalog auf. Daher kann Snowflake die Tabelle nicht automatisch aktualisieren, bis Sie den Fehler behoben haben.
Die automatische Aktualisierung ist für diese Art von Tabellen deaktiviert, sodass die Abfrage der Tabelle in Snowflake einen Fehler zurückgibt, der besagt, dass die Tabelle nie initialisiert wurde. Um die Tabelle abzufragen, müssen Sie den Fehler beheben und dann die automatische Aktualisierung für die Tabelle aktivieren.
Eine Tabelle in die mit dem Katalog verknüpfte Datenbank abfragen¶
Nachdem Sie eine mit dem Katalog verknüpfte Datenbank erstellt haben, startet Snowflake den Erkennungsprozess für Tabellen und fragt den verknüpften Katalog automatisch mit dem Wert des SYNC_INTERVAL_SECONDS-Parameters ab (mit einem Standardintervall von 30 Sekunden), um auf Änderungen zu prüfen.
In der Datenbank werden zulässige Namespaces aus dem Remote-Katalog als Schemas angezeigt, und Iceberg-Tabellen werden unter ihren jeweiligen Schemas angezeigt.
Sie können die Remotetabellen mithilfe einer SELECT-Anweisung abfragen.
Bemerkung
Die Anforderungen für das Identifizieren von Objekten in einer mit dem Katalog verknüpften Datenbank finden Sie unter Anforderungen an die Bezeichnerauflösung in einer katalogverknüpften Datenbank.
Weitere Informationen zu Objektparametern finden Sie unter Anforderungen an Bezeichner.
Beispiel:
USE DATABASE my_linked_db;
SELECT * FROM my_namespace.my_iceberg_table
LIMIT 20;
In den Remote-Katalog schreiben¶
Sie können Snowflake verwenden, um Namespaces und Iceberg-Tabellen in Ihrem verknüpften Katalog zu erstellen. Weitere Informationen dazu finden Sie unter folgenden Themen:
Anforderungen an die Bezeichnerauflösung in einer katalogverknüpften Datenbank¶
Die Anforderung für das Auflösen eines Bezeichners hängt von Folgendem ab:
Dem Wert, den Sie für den Parameter CATALOG_CASE_SENSITIVITY angegeben haben, als Sie Ihre katalogverknüpfte Datenbank erstellt haben
Ob Ihr externer Iceberg-Katalog Bezeichner verwendet, bei denen Groß-/Kleinschreibung unterschieden wird oder nicht.
Bemerkung
Diese Anforderungen gelten für die Identifizierung vorhandener Schemas, Tabellen und Tabellenspalten. Sie enthalten auch einige Sonderfälle für das Erstellen oder Ändern eines Objekts.
Wenn Sie ein neues Schema, eine neue Tabelle oder eine neue Spalte in einem Katalog erstellen, bei dem die Groß-/Kleinschreibung beachtet wird, wie z. B. AWS Glue oder Unity Catalog, müssen Sie Kleinbuchstaben verwenden und die Schema-, Tabellen- und Spaltennamen in doppelte Anführungszeichen setzen. Dies ist auch für andere Iceberg REST-Kataloge erforderlich, die nur Bezeichner in Kleinbuchstaben unterstützen.
Die folgende Tabelle zeigt die Anforderungen für jedes Szenario:
CATALOG_CASE_SENSITIVITY-Wert |
Externer Iceberg-Katalog verwendet |
Anforderung |
|---|---|---|
CASE_SENSITIVE |
Bezeichner unter Berücksichtigung der Groß- und Kleinschreibung |
Snowflake gleicht Bezeichner genau so ab, wie sie angezeigt werden, einschließlich der Groß-/Kleinschreibung. Snowflake konvertiert Bezeichner ohne Anführungszeichen automatisch in Großbuchstaben, aber Bezeichner in Anführungszeichen müssen genau der Groß-/Kleinschreibung in Ihrem externen Katalog entsprechen. Das folgende Beispiel zeigt eine gültige Abfrage zum Erstellen einer Tabelle: CREATE TABLE "Table1" (id INT, name STRING);
Snowflake erstellt die Tabelle im externen Katalog als Das folgende Beispiel zeigt eine gültige Abfrage für die Auswahl der Tabelle SELECT * FROM "Table1";
Im vorherigen Beispiel sind die doppelten Anführungszeichen erforderlich, um die Großschreibung genau abzugleichen. Das folgende Beispiel zeigt eine ungültige Abfrage, es sei denn, es ist eine Tabelle SELECT * FROM table1;
Im vorherigen Beispiel ist die Abfrage ungültig, wenn Das folgende Beispiel zeigt eine ungültige Abfrage für den Fall, wenn eine Tabelle SELECT * FROM TABLE1;
|
CASE_SENSITIVE |
Bezeichner unter Nichtberücksichtigung der Groß- und Kleinschreibung |
Wenn der externe Iceberg-Katalog tatsächlich nicht zwischen Groß- und Kleinschreibung unterscheidet und in Kleinbuchstaben normalisiert, müssen Sie Bezeichner in doppelte Anführungszeichen setzen. Das folgende Beispiel zeigt eine gültige Abfrage: SELECT * from "s1";
SELECT * from "lowercasetablename";
|
CASE_INSENSITIVE |
Bezeichner unter Nichtberücksichtigung der Groß- und Kleinschreibung |
|
CASE_INSENSITIVE |
Bezeichner unter Berücksichtigung der Groß- und Kleinschreibung |
Wenn der externe Iceberg-Katalog zwischen Groß- und Kleinschreibung unterscheidet, behandelt Snowflake nicht in Anführungszeichen gesetzte Bezeichner als nicht zwischen Groß- und Kleinschreibung unterscheidend und wandelt sie automatisch in Großbuchstaben um. Wenn Sie Objekte erstellen oder abfragen, gleicht Snowflake Bezeichner unabhängig von der Groß-/Kleinschreibung ab, solange sie nicht in Anführungszeichen gesetzt sind. Eine Verwendung dieses Musters wird nicht empfohlen, da Snowflake nicht zwei verschiedene Bezeichner auflösen kann, die sich nur in der Groß-/Kleinschreibung unterscheiden. Dieses Muster funktioniert nur, wenn sich keine zwei Bezeichner nur in der Groß-/Kleinschreibung unterscheiden. Stellen Sie sich vor, der Remote-Katalog weist eine Tabelle SELECT * from table1;
SELECT * from TABLE1;
SELECT * from Table1;
SELECT * from "Table1";
Bezeichner in Anführungszeichen behalten die Groß-/Kleinschreibung bei und stimmen genau überein. Allerdings werden im CASE_INSENSITIVE-Modus sowohl Formen ohne als auch mit Anführungszeichen unterstützt. |
Hinweise zur Verwendung einer mit einem Katalog verknüpften Datenbank für Iceberg-Tabellen¶
Beachten Sie Folgendes, wenn Sie eine mit einem Katalog verknüpfte Datenbank verwenden:
Wird nur unterstützt, wenn Sie eine Katalogintegration für Iceberg REST verwenden (z. B. Snowflake Open Catalog).
Update: We will start billing sometime in December 2025.
Um die automatische Tabellenerkennung auf einen bestimmten Satz von Namespaces zu beschränken, verwenden Sie den ALLOWED_NAMESPACES-Parameter. Sie können auch den BLOCKED_NAMESPACES-Parameter verwenden, um eine Reihe von Namespaces zu blockieren.
Snowflake synchronisiert keine Remote-Katalogzugriffssteuerung (für Benutzende oder Rollen).
Sie können Schemas oder extern verwaltete Iceberg-Tabellen in einer mit dem Katalog verknüpften Datenbank erstellen. Das Erstellen anderer Snowflake-Objekte wird derzeit nicht unterstützt.
Sie können keine Datenbankrollen in einer mit einem Katalog verknüpften Datenbank erstellen.
Latenz:
Bei Datenbanken, die mit 7.500 Namespaces in einem Remote-Katalog verknüpft sind, dauert das Ermitteln von Namespaces und Tabellen etwa eine Stunde.
Bei Remote-Katalogen mit 500.000 Tabellen dauert der automatische Aktualisierungsprozess etwa eine Stunde. Für Namespaces mit unterschiedlichen Latenzanforderungen empfehlen wir Ihnen, separate katalogverknüpfte Datenbanken zu erstellen. Jede Datenbank muss auf eine Katalogintegration mit einem geeigneten Intervall für die automatische Aktualisierung verweisen (REFRESH_INTERVAL_SECONDS).
Für Iceberg-Tabellen in einer katalogverknüpften Datenbank:
Snowflake kopiert keine Eigenschaften von Remote-Katalogtabellen (wie Aufbewahrungsrichtlinien oder Puffer) und unterstützt derzeit nicht das Ändern von Tabelleneigenschaften.
Die automatische Aktualisierung ist standardmäßig aktiviert. Wenn der
table-uuideiner externen Tabelle und der mit dem Katalog verknüpften Datenbanktabelle nicht übereinstimmen, schlägt die Aktualisierung fehl und Snowflake löscht die Tabelle aus der mit dem Katalog verknüpften Datenbank; Snowflake ändert die Remotetabelle nicht.Wenn Sie eine Tabelle aus dem Remote-Katalog löschen, löscht Snowflake die Tabelle auch in der mit dem Katalog verbundenen Datenbank. Diese Aktion ist asynchron, sodass Sie die Änderung im Remote-Katalog möglicherweise nicht sofort sehen.
Wenn Sie eine Tabelle im Remotekatalog umbenennen, löscht Snowflake die bestehende Tabelle aus der mit dem Katalog verbundenen Datenbank und erstellt eine Tabelle mit dem neuen Namen.
Maskierungsrichtlinien und Tags werden unterstützt. Andere Snowflake-spezifische Features wie Replikation und Klonen werden nicht unterstützt.
Das Zeichen, das Sie für denNAMESPACE_FLATTEN_DELIMITER-Parameter wählen, kann nicht in Ihren Remote-Namespaces angezeigt werden. Während des automatischen Erkennungsprozesses überspringt Snowflake jeden Namespace, der das Trennzeichen enthält, und erstellt kein entsprechendes Schema in Ihrer mit dem Katalog verbundenen Datenbank.
Wenn Sie etwas anderes als
_,$oder Zahlen für den NAMESPACE_FLATTEN_DELIMITER-Parameter verwenden, müssen Sie den Schemanamen in Anführungszeichen setzen, wenn Sie die Tabelle abfragen.Für Datenbanken, die mit AWS Glue verknüpft sind, müssen Sie Kleinbuchstaben verwenden und die Schema-, Tabellen- und Spaltennamen in doppelte Anführungszeichen setzen. Dies ist auch für andere Iceberg REST-Kataloge erforderlich, die nur Bezeichner in Kleinbuchstaben unterstützen.
Das folgende Beispiel zeigt eine gültige Abfrage:
CREATE SCHEMA "s1";
Die folgenden -Anweisungen sind nicht gültig, da sie Großbuchstaben verwenden oder die doppelten Anführungszeichen weglassen:
CREATE SCHEMA s1; CREATE SCHEMA "Schema1";
Verwenden von UNDROP ICEBERG TABLE wird nicht unterstützt.
Freigabe:
Die Freigabe mit einem Freigabeangebot wird derzeit nicht unterstützt.
Die direkte Freigabe wird unterstützt
Zum Schreiben in Tabellen einer mit dem Katalog verbundenen Datenbank:
Das Erstellen von Tabellen in verschachtelten Namespaces wird derzeit nicht unterstützt.
Das Schreiben in Tabellen in verschachtelten Namespaces wird derzeit nicht unterstützt.
Positionslöschungen auf Zeilenebene werden für Tabellen unterstützt, die auf Amazon S3, Azure oder Google Cloud gespeichert sind. Löschungen auf Zeilenebene mit Gleichheitslöschungsdateien werden nicht unterstützt. Weitere Informationen zu Löschungen auf Zeilenebene finden Sie unter Löschungen auf Zeilenebene verwenden. Um Positionslöschungen zu deaktivieren, was die Ausführung von Data Manipulation Language (DML)-Operationen im Copy-on-Write-Modus ermöglicht, setzen Sie den
ENABLE_ICEBERG_MERGE_ON_READ-Parameter auf Tabellen-, Schema- oder Datenbankebene auf FALSE.