Verwenden einer mit dem Katalog verbundene Datenbank für Apache Iceberg™-Tabellen

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.

Hinweise zur Verwendung einer mit einem Katalog verknüpften Datenbank für Iceberg-Tabellen

Wichtig

Während des Vorschauzeitraums unterstützen mit einem Katalog verknüpfte Datenbanken nicht den schreibgeschützten Modus. Wenn Sie Tabellen löschen oder Daten schreiben, werden diese Änderungen auch in Ihrem Remote-Katalog vorgenommen.

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).

  • Abrechnung: Während des Vorschauzeitraums stellt Snowflake mit einem Katalog verknüpfte Datenbanken nicht in Rechnung. Die Abrechnung beginnt, wenn mit Katalogen verknüpfte Apache Iceberg™-Datenbanken allgemein verfügbar sind.

  • 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 (Benutzer 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.

  • 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-uuid einer 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, Klonen und Freigabe 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 der automatischen Erkennung ü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 _, $, Großbuchstaben oder Zahlen für angeben die 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";
      
      Copy

      Die folgenden -Anweisungen sind nicht gültig, da sie Großbuchstaben verwenden oder die doppelten Anführungszeichen weglassen:

      CREATE SCHEMA s1;
      CREATE SCHEMA "Schema1";
      
      Copy
    • Verwenden von UNDROP ICEBERG TABLE wird nicht unterstützt.

    • Die Freigabe für ein Freigabeangebot wird für Tabellen unterstützt, die ein externes Volume verwenden. Die direkte Freigabe wird derzeit nicht unterstützt.

  • Zum Schreiben in Tabellen einer mit dem Katalog verbundenen Datenbank:

    • Automatische Anmeldeinformationen werden nicht unterstützt.

    • Das Schreiben in Tabellen in verschachtelten Namespaces wird derzeit nicht unterstützt.

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.

  1. Konfigurieren des Zugriffs auf den externen Katalog und Tabellenspeicher

  2. Eine mit dem Katalog verbundene Datenbank erstellen

  3. Überprüfen des Status der Katalogsynchronisierung

  4. Eine Tabelle in die mit dem Katalog verknüpfte Datenbank abfragen oder In den Remote-Katalog schreiben

Konfigurieren des Zugriffs auf den externen Katalog und Tabellenspeicher

Bevor Sie eine mit einem Katalog verknüpfte Datenbank erstellen, wählen Sie eine der folgenden Optionen aus, um den Zugriff auf den externen Katalog und Tabellenspeicher zu konfigurieren.

Option 1: Konfigurieren eines externen Volumes und einer Katalogintegration

Mit dieser Option konfigurieren Sie ein externes Volume und eine Katalogintegration. Wählen Sie diese Option, wenn der Remote-Iceberg-Katalog die automatische Erzeugung von Anmeldeinformationen nicht unterstützt oder wenn Sie in die Iceberg-Tabellen im Remote-Katalog schreiben möchten.

Konfigurieren Sie zunächst ein externes Volume für den Cloudspeicherdienst, das die Daten und Metadaten der externen Iceberg-Tabellen speichert:

Konfigurieren Sie dann eine Katalogintegration für den Remote-Iceberg–Katalog:

Option 2: Konfigurieren einer Katalogintegration mit automatisch erzeugten Anmeldeinformationen

Bemerkung

Diese Funktion wird nur für Tabellen unterstützt, die ihre Daten und Metadaten in Amazon S3 speichern. Diese Option wird derzeit nicht für externe Schreibvorgänge unterstützt.

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.

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 ein externes Volume verwendet. Es gibt ein Synchronisierungsintervall von 60 Sekunden an (der Standardwert ist 30). Das Synchronisierungsintervall teilt Snowflake mit, wie oft der Remote-Katalog abgefragt werden soll.

CREATE DATABASE my_linked_db
  LINKED_CATALOG = (
    CATALOG = 'my_catalog_int',
    BLOCKED_NAMESPACES = ('my_blocked_namespace'),
    NAMESPACE_MODE = FLATTEN_NESTED_NAMESPACE,
    NAMESPACE_FLATTEN_DELIMITER = '-'
    SYNC_INTERVAL_SECONDS = 60
  )
  EXTERNAL_VOLUME = 'my_external_vol';
Copy

Bemerkung

In diesem Beispiel wird NAMESPACE_MODE = FLATTEN_NESTED_NAMESPACE angegeben, der Snowflake anweist, Tabellen in allen Namespace-Ebenen des Katalogs zu verknüpfen. Für eine Tabelle in einem verschachtelten Namespace verwendet Snowflake den NAMESPACE_FLATTEN_DELIMITER-Parameter, um einen vereinfachten Namespace zu erstellen.

Weitere Informationen dazu finden Sie unter CREATE DATABASE (katalogverknüpft).

Alternativ können Sie auch eine mit dem Katalog verknüpfte Datenbank erstellen, die automatisch erzeugte Anmeldeinformationen verwendet. In diesem Beispiel wird auch ein zulässiger Namespace angegeben.

CREATE DATABASE my_linked_db
  LINKED_CATALOG = (
    CATALOG = 'my_catalog_int_vended_creds',
    ALLOWED_NAMESPACES = ('my_namespace')
  );
Copy

Ü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');
Copy

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

Snowflake konvertiert Bezeichner ohne Anführungszeichen (Tabellen- und Spaltennamen) automatisch in Großbuchstaben. Wenn Ihr externer Iceberg-Katalog Bezeichner verwendet, bei denen die Groß-/Kleinschreibung beachtet wird, müssen Sie Tabellen- und Spaltennamen in doppelte Anführungszeichen setzen.

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;
Copy

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: