Snowflake-Speicher für|iceberg-tm|-Tabellen

Snowflake unterstützt Snowflake-Speicher für Apache Iceberg™-Tabellen.

Wie bei Standard-Snowflake-Tabellen können Sie mit diesem Feature :ref:` Snowflake-verwaltete Iceberg-Tabellen<label-tables_iceberg_snowflake_as_catalog>` in Snowflake erstellen. Mit dieser Option speichert und verwaltet Snowflake die Iceberg-Tabellendateien für Sie unter Verwendung des Snowflake-Speichers (intern), sodass Sie keinen Zugriff auf einen externen Cloud-Speicher einrichten müssen.

Dieses Feature funktioniert mit dem:doc:` Snowflake Horizon Catalog</user-guide/snowflake-horizon>`, sodass Sie eine externe Abfrage-Engine verwenden können, um eine Verbindung zu einer Iceberg-Tabelle herzustellen, die Snowflake-Speicher verwendet. Weitere Informationen dazu finden Sie unter Zugriff auf Apache Iceberg™-Tabellen mit einer externen Engine über Snowflake Horizon Catalog. Darüber hinaus können Sie dieselben Tabellen in Snowflake abfragen.

Bemerkung

Dieses Feature ist derzeit nur für Konten verfügbar, die auf Amazon Web Services (AWS ) oder Azure gehostet werden. Dieses Feature ist nicht in Regionen für Regierungsbehörden oder in der Volksrepublik China verfügbar.

Funktionsweise des Snowflake-Speichers

Wenn Sie eine Iceberg-Tabelle mit Snowflake-Speicher erstellen, verwaltet Snowflake intern alle Daten und Metadaten-Dateien. Sie müssen kein externes Volume konfigurieren oder Snowflake Zugriff auf Ihren Cloudspeicher gewähren.

Erstellen einer Iceberg-Tabelle mit Snowflake-Speicher

CREATE ICEBERG TABLE my_iceberg_table_defaults (col1 int)
  CATALOG = SNOWFLAKE
  EXTERNAL_VOLUME = SNOWFLAKE_MANAGED;

Explizite TRANSIENT-Tabelle mit von Snowflake verwaltetem Speicher:

CREATE TRANSIENT ICEBERG TABLE my_iceberg_table_internal (col1 int)
  CATALOG = SNOWFLAKE
  EXTERNAL_VOLUME = SNOWFLAKE_MANAGED;
  • CATALOG muss SNOWFLAKE für dieses Speichermodell sein. Wenn der Standardkatalog Ihres Kontos Snowflake ist, können Sie auf CATALOG verzichten.

  • EXTERNAL_VOLUME muss SNOWFLAKE_MANAGED sein, wenn Sie Snowflake -Speicher verwenden. Wenn Ihr externes Standard-Volumen:code:SNOWFLAKE_MANAGED ist, können Sie auf EXTERNAL_VOLUME verzichten.

Externes Volumen SNOWFLAKE_MANAGED

EXTERNAL_VOLUME = 'SNOWFLAKE_MANAGED' wählt den von Snowflake bereitgestellten Speicher für die Tabelle aus.:code:SNOWFLAKE_MANAGED ist ein reservierter Wert, kein vom Benutzer erstelltes :doc:` externes Volumen</sql-reference/sql/create-external-volume>`-Objekt. Sie führen CREATE EXTERNAL VOLUME für diesen Pfad nicht aus.

Für Iceberg-Tabellen, die ihre Dateien stattdessen in Ihrem Cloud-Speicher ablegen, erstellen Sie ein externes Volumen, gewähren USAGE und setzen EXTERNAL_VOLUME auf den Namen dieses Volumens. Eine Anweisung dazu finden Sie unter Externes Volume konfigurieren.

Permanente und transiente Tabellen

Iceberg-Tabellen, die Snowflake-Speicher verwenden, können permanent oder transient sein:

  • Permanent (Standard): Tabellendaten sind durch Fail-safe geschützt – dieselbe 7-tägige Datenwiederherstellungsfunktion, die Snowflake auch für Standardtabellen bereitstellt.

  • Transient: Tabellendaten sind nicht durch Fail-safe geschützt. Die Verhaltensweise von Speicher und Time Travel folgt :ref:` transienten Tabellen<label-table_type_transient>` in Snowflake Bei transienten Tabellen fallen keine Fail-safe-Speicherkosten an.

Verwenden Sie das TRANSIENT-Schlüsselwort in der CREATEICEBERGTABLE-Anweisung zum Erstellen einer transienten Iceberg-Tabelle.

Bemerkung

Transiente Iceberg-Tabellen werden nur mit Snowflake-Speicher unterstützt. Sie können keine transiente Iceberg-Tabelle erstellen, die ein vom Kunden verwaltetes externes Volumen verwendet.

Tipp

Um zu überprüfen, ob eine vorhandene Iceberg-Tabelle permanent oder transient ist, führen Sie SHOWTABLES aus und sehen Sie sich die kind-Spalte an. Der Wert ist TRANSIENT für transiente Tabellen und TABLE für permanente Tabellen.

Standardkatalog und externes Volumen

Wenn Sie auf CATALOG und:code:EXTERNAL_VOLUME in der Anweisung verzichten, löst Snowflake sie aus den Standardeinstellungen für Schema, Datenbank und Konto auf (Schema überschreibt die Datenbank, Datenbank überschreibt das Konto). Wenn der effektive Katalog Snowflake ist (CATALOG = 'SNOWFLAKE'), lautet das externe Standardvolume:code:SNOWFLAKE_MANAGED, es sei denn, auf einer niedrigeren Ebene ist ein anderer Standard eingestellt. Weitere Informationen dazu finden Sie unter Standardkatalog auf Konto-, Datenbank- oder Schema-Ebene einstellen und Externes Standardvolumen auf Konto-, Datenbank- oder Schema-Ebene festlegen.

Wenn Sie explizit CATALOG = 'SNOWFLAKE' einstellen, ist das standardmäßige externe Volumen:code:SNOWFLAKE_MANAGED, es sei denn, Sie überschreiben es mit:code:EXTERNAL_VOLUME oder durch einen Standard auf Schema-, Datenbank- oder Account-Ebene, der ein anderes Volume angibt.

Replikation

Sie können Iceberg-Tabellen, die Snowflake-Speicher verwenden, replizieren, indem Sie ein Failover oder eine Replikationsgruppe verwenden. Um die Replikation für diese Tabellen zu aktivieren, müssen Sie zunächst die Replikation für von Snowflake verwaltete Iceberg-Tabellen aktivieren, indem Sie die Schritte unter Konfigurieren der Replikation für von Snowflake verwaltete Apache Iceberg™-Tabellen ausführen.

Im Gegensatz zu Standard-Snowflake-verwalteten Iceberg-Tabellen müssen Sie EXTERNAL VOLUMES nicht in der:code:OBJECT_TYPES-Liste Ihrer Failover- oder Replikationsgruppe einschließen. Snowflake verwaltet automatisch den Speicher für replizierte Tabellen, die das externe SNOWFLAKE_MANAGED-Volumen verwalten.

Erstellen Sie beispielsweise eine Failover-Gruppe, die eine Datenbank mit Iceberg-Tabellen repliziert, die Snowflake-Speicher verwenden:

CREATE FAILOVER GROUP my_iceberg_fg
  OBJECT_TYPES = DATABASES
  ALLOWED_DATABASES = my_iceberg_database
  ALLOWED_ACCOUNTS = myorg.my_account_1;

Hinweise zur Replikation

  • Replikation in Konten, die auf Google Cloud Platform gehostet werden (GCP) wird nicht unterstützt. Snowflake überspringt bei Aktualisierungsvorgängen Iceberg-Tabellen, die Snowflake-Speicher verwenden, wenn das Zielkonto auf GCP gehostet wird.

  • Wenn Sie Iceberg-Tabellen während der privaten Vorschau mit einem anderen externen Volumen als SNOWFLAKE_MANAGED erstellt haben, migriert Snowflake automatisch die replizierte Tabelle auf dem sekundären Konto, um das SNOWFLAKE_MANAGED Volumen zu verwenden. Beachten Sie die folgenden Punkte zu dieser Migration:

    • Wenn Sie EXTERNAL VOLUMES in die OBJECT_TYPES-Liste der Failover- oder Replikationsgruppe aufnehmen, wird das externe Volumen der privaten Vorschau in das sekundäre Konto repliziert, aber es ist nicht mit der Tabelle verbunden. Alle Nutzungen des externen Vorschau-Volumens auf dem sekundären Konto sind blockiert.

    • Snowflake empfiehlt, dass Sie alle Iceberg-Tabellen löschen, die ein externes Volume mit privater Vorschau verwenden, und sie mit EXTERNAL_VOLUME = SNOWFLAKE_MANAGED neu erstellen, bevor Sie die Replikation aktivieren.

Rechnungsstellung

Snowflake stellt Ihrem Konto die folgende Nutzung in Rechnung:

Speicherkosten

  • Snowflake erhebt Gebühren für jedes in Snowflake gespeicherte Byte.

    Snowflake aggregiert die Speichernutzung für Iceberg-Tabellen, die Snowflake-Speicher verwenden, in der STORAGE_BYTES-Spalte von Ansicht STORAGE_USAGE, zusammen mit der Speichernutzung für Nicht-Iceberg-Tabellen. Nur Dateien, die in den Katalog aufgenommen wurden, sind in STORAGE_BYTES enthalten. Snowflake stellt abgebrochene Commits nicht in Rechnung.

    Die Kosten für diese Speichernutzung sind in Tabelle 3(a) der Snowflake Service Consumption Table auf der Website von Snowflake https://www.snowflake.com/legal-files/CreditConsumptionTable.pdf beschrieben.

Kosten der Anforderung

Bemerkung

Jedes Mal, wenn Sie eine Abfrage-Engine über Horizon Catalog verwenden, um auf Iceberg-Tabellen zuzugreifen, die in Snowflake gespeichert sind, wird die Abfrage-Engine als externe Abfrage-Engine betrachtet. Wenn Sie eine externe Abfrage-Engine verwenden, um auf diese Tabellen zuzugreifen, stellt Snowflake Ihrem Konto diesen Zugriff in Rechnung.

In der folgenden Liste werden einige Fälle beschrieben, in denen externe Abfrage-Engines auf Iceberg-Tabellen zugreifen, die in Snowflake gespeichert sind:

  • Snowflake-Engines, die über Horizon Catalog von einem anderen Snowflake-Konto auf die Tabelle zugreifen. Wenn beispielsweise eine Tabelle vom Snowflake-Konto A verwaltet wird, Sie aber von der Snowflake-Engine in Konto B über Horizon Catalog auf die Tabelle zugreifen, wird Ihnen dieser Zugriff in Rechnung gestellt. Dieser Zugriff wird Ihnen in Rechnung gestellt, da die Snowflake-Engine in Konto B eine externe Abfrage-Engine ist.

  • Abfrage-Engines von Drittanbietern, die Sie innerhalb des Snowflake-Netzwerks über Snowflake Container Services bereitstellen. Wenn Sie diese Engines über Horizon Catalog verwenden, um auf die Tabelle zuzugreifen, ist die Engine extern und ihre Anfragen werden auf dieselbe Weise abgerechnet wie bei anderen Abfrage-Engines von Drittanbietern.

  • Abfrage-Engines von Drittanbietern, die Sie außerhalb von Snowflake bereitstellen und verwenden, um über Horizon Catalog eine Verbindung zu der Tabelle herzustellen.

Snowflake stellt Ihrem Konto nicht in Rechnung, wenn Sie die Snowflake-Abfrage-Engine verwenden, um direkt auf diese Iceberg-Tabellen zuzugreifen, was bedeutet, dass Sie nicht über Horizon Catalog auf sie zugreifen können. Wenn beispielsweise eine Tabelle von Konto A verwaltet wird und Sie die Snowflake-Engine in Konto A verwenden, um auf die Tabelle zuzugreifen, wird Ihnen dieser Zugriff nicht in Rechnung gestellt.

  • Wenn Sie eine externe Abfrage-Engine über Snowflake Horizon Catalog verwenden, um auf Iceberg-Tabellen zuzugreifen, die Snowflake-Speicher nutzen, stellt Snowflake Ihrem Konto eine Gebühr pro Anfrage für jede HTTP-Anforderung in Rechnung, die an das zugrunde liegende Speichersystem gesendet wurde. Der Rate hängt von der Art der Anfrage ab:

    • PUT,COPY ,POST ,PATCH und LIST-Operationen, die als „Klasse 1“ abgerechnet werden.

    • GET- und SELECT-Operationen, die als „Klasse 2“ in Rechnung gestellt werden.

    Verwenden Sie zur Anzeige der Anzahl der Anfragen für diese Operationstypen die STORAGE_REQUEST_HISTORY-Account Usage-Ansicht. Diese Nutzung wird unter den STORAGE_REQUEST-1- und``STORAGE_REQUEST-2``-SKUs für den Abrechnungsbericht angezeigt.

    Diese Rate ist in Tabelle 3(g) von `Snowflake Service Consumption Table<https://www.snowflake.com/legal-files/CreditConsumptionTable.pdf>`_ beschrieben.

Datentransferkosten

Private Konnektivität

Wenn Sie eine externe Abfrage-Engine verwenden, um auf Iceberg-Tabellen zuzugreifen, die Snowflake-Speicher verwenden, können Sie private Konnektivität konfigurieren, damit der Datenverkehr nicht das öffentliche Internet durchlaufen wird.

Eine Anleitung zur Einrichtung finden Sie unter Zu von Snowflake verwalteten Speichervolumes.

Hinweise und Einschränkungen

Beachten Sie Folgendes, wenn Sie mit Iceberg-Tabellen arbeiten, die Snowflake-Speicher verwenden:

Unterstützung von Cloudanbietern

Dieses Feature ist derzeit nur für Konten verfügbar, die auf Amazon Web Services (AWS) oder Microsoft Azure gehostet werden. Dieses Feature ist nicht in Regionen für Regierungsbehörden oder in der Volksrepublik China verfügbar.

Verschlüsselung

Iceberg-Tabellen, die Snowflake-Speicher verwenden, unterstützen nur serverseitige Verschlüsselung (SSE). Kundenverwaltete Schlüssel (CMK) werden nicht unterstützt, auch wenn Ihr Konto Tri-Secret Secure aktiviert hat.

Verhalten beim Klonen

Warnung

Die Iceberg-Tabelle, die Sie erstellen, verwendet Anmeldeinformationen aus dem Katalog. Wenn Sie eine Iceberg-Tabelle klonen, die vom Katalog bereitgestellte Anmeldeinformationen verwendet, hat die geklonte Tabelle denselben Speicherort wie die Quelltabelle. Dieselben Anmeldeinformationen können für den Zugriff auf den freigegebenen Speicherort verwendet werden, sodass die geklonte Tabelle Schreibzugriff auf die Quelltabelle hat.

Für Tabellen, die Snowflake-verwalteten Speicher verwenden (EXTERNAL_VOLUME = 'SNOWFLAKE_MANAGED'),:code:CREATE ICEBERG TABLE ... CLONE ist nur dann erfolgreich, wenn die Quelltabelle und die neue Tabelle beide transient oder beide permanent sind. Wenn eine transient und die andere permanent ist, schlägt die Anweisung fehl.

Quelltabelle

Klonen

Ergebnis

Transient

Transient

Unterstützt

Permanent

Permanent

Unterstützt

Transient

Permanent

Nicht unterstützt

Permanent

Transient

Nicht unterstützt

Weitere Informationen zur Befehlssyntax und zu weiterem Klonen finden Sie unter:ref:label-create_iceberg_table_clone_syntax in:doc:/sql-reference/sql/create-iceberg-table-snowflake und Klonen und Apache Iceberg™-Tabellen.

Aufnehmen von Daten

Sie können Daten in Iceberg-Tabellen einlesen, die Snowflake-Speicher verwenden, indem Sie die folgenden Methoden verwenden:

  • Snowpipe: Verwenden Sie Snowpipe zum Laden von Daten aus Dateien im Cloudspeicher mit COPYINTO. Snowpipe funktioniert sowohl mit permanenten als auch mit transienten Iceberg-Tabellen.

  • Snowpipe Streaming: Verwenden Sie Snowpipe Streaming High-Performance zum Erfassen von Streaming-Daten. Snowpipe Streaming funktioniert sowohl mit permanenten als auch mit transienten Iceberg-Tabellen.