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¶
Explizite TRANSIENT-Tabelle mit von Snowflake verwaltetem Speicher:
CATALOGmussSNOWFLAKEfür dieses Speichermodell sein. Wenn der Standardkatalog Ihres Kontos Snowflake ist, können Sie aufCATALOGverzichten.EXTERNAL_VOLUMEmussSNOWFLAKE_MANAGEDsein, wenn Sie Snowflake -Speicher verwenden. Wenn Ihr externes Standard-Volumen:code:SNOWFLAKE_MANAGEDist, können Sie aufEXTERNAL_VOLUMEverzichten.
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:
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_MANAGEDerstellt haben, migriert Snowflake automatisch die replizierte Tabelle auf dem sekundären Konto, um dasSNOWFLAKE_MANAGEDVolumen zu verwenden. Beachten Sie die folgenden Punkte zu dieser Migration:Wenn Sie
EXTERNAL VOLUMESin dieOBJECT_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_MANAGEDneu 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 inSTORAGE_BYTESenthalten. 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¶
Wenn Sie eine externe Abfrage-Engine über Horizon Catalog verwenden, um von einer anderen Region oder mit einem anderen Cloudanbieter auf die Tabelle zuzugreifen, wird eine Standardgebühr für den Datentransfer pro Byte in Rechnung gestellt.
Diese Datenübertragungsgebühr ist in den Tabellen 4(a), 4(b) und 4(c) der `Snowflake Service Consumption Table<https://www.snowflake.com/legal-files/CreditConsumptionTable.pdf>`_ beschrieben.
Weitere Informationen dazu finden Sie unter Erläuterungen zu 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.