Iceberg-Tabellen

Eine Iceberg-Tabelle verwendet die Spezifikation des offenen Tabellenformats Apache Iceberg, das eine Abstraktionsschicht für Datendateien in offenen Formaten bietet und Features wie die folgenden unterstützt:

  • ACID-Transaktionen (Atomarität, Konsistenz, Isolation, Dauerhaftigkeit)

  • Schemaentwicklung

  • Verdeckte Partitionierung

  • Tabellen-Snapshots

Iceberg-Tabellen für Snowflake kombinieren die Leistung und Abfragesemantik regulärer Snowflake-Tabellen mit dem von Ihnen verwalteten externen Cloudspeicher. Sie sind ideal für bestehende Data Lakes, die Sie nicht in Snowflake speichern können oder möchten.

Snowflake unterstützt Iceberg-Tabellen, die das Apache Parquet-Dateiformat verwenden.

Erste Schritte

Um eine Iceberg-Tabelle zu erstellen, beginnen Sie mit dem Konfigurieren eines externen Volumes. Eine Einführung in die Verwendung von Iceberg-Tabellen in Snowflake finden Sie unter Quickstart: Erste Schritte mit Iceberg-Tabellen.

Funktionsweise von Iceberg-Tabellen

Dieser Abschnitt enthält spezielle Informationen zur Verwendung von Iceberg-Tabellen in Snowflake. Um mehr über die Spezifikation des Iceberg-Tabellenformats zu erfahren, lesen Sie die offizielle Apache Iceberg-Dokumentation und die Iceberg Table Spec.

Datenspeicher

Iceberg-Tabellen speichern ihre Daten und Metadaten an einem externen Cloudspeicherort (Amazon S3, Google Cloud Storage oder Azure Storage). Der externe Speicher ist nicht Teil von Snowflake. Sie sind für die gesamte Verwaltung des externen Cloudspeicherortes selbst verantwortlich. Snowflake bietet keinen Fail-safe-Speicher für Iceberg-Tabellen.

Snowflake stellt eine Verbindung zu Ihrem Speicherort über ein externes Volume her.

Für Iceberg-Tabellen fallen keine Snowflake-Speicherkosten an. Weitere Informationen dazu finden Sie unter Rechnungsstellung.

Externe Volumes

Ein externes Volume ist ein benanntes Snowflake-Objekt auf Kontoebene, das eine Identitäts- und Zugriffsverwaltungsentität (IAM) für Ihren externen Cloudspeicher speichert. Snowflake stellt über ein externes Volume eine sichere Verbindung zu Ihrem Cloudspeicher her, um auf Tabellendaten, Iceberg-Metadaten und Manifest-Dateien zuzugreifen, die das Tabellenschema, die Partitionen und andere Metadaten speichern.

Ein einzelnes externes Volume kann eine oder mehrere Iceberg-Tabellen unterstützen.

Weitere Informationen zum Einrichten eines externen Volumes für Iceberg-Tabellen finden Sie unter Konfigurieren eines externen Volumes für Iceberg-Tabellen.

Iceberg-Katalog

Ein Iceberg-Katalog ermöglicht einem Computemodul das Verwalten und Laden von Iceberg-Tabellen. Der Katalog bildet die erste architektonische Schicht in der Iceberg-Tabellenspezifikation und muss Folgendes 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.

  • Ausführen atomarer Operationen, damit Sie den aktuellen Metadatenzeiger einer Tabelle aktualisieren können.

Weitere Informationen zu Iceberg-Katalogen finden Sie in der Apache Iceberg-Dokumentation.

Snowflake unterstützt verschiedene Katalogoptionen. Sie können zum Beispiel Snowflake als Iceberg-Katalog verwenden oder eine Katalogintegration nutzen, um Snowflake mit einem externen Iceberg-Katalog wie AWS Glue oder mit Iceberg-Metadatendateien im Objektspeicher zu verbinden.

Katalogintegrationen

Eine Katalogintegration ist ein benanntes Snowflake-Objekt auf Kontoebene, das die Quelle von Metadaten und das Schema für eine Iceberg-Tabelle definiert, wenn Sie nicht Snowflake als Iceberg-Katalog verwenden.

Eine einzelne Katalogintegration kann eine oder mehrere Iceberg-Tabellen unterstützen.

Weitere Informationen zum Einrichten einer Katalogintegration für Iceberg-Tabellen finden Sie unter Katalogintegration für Iceberg-Tabellen konfigurieren.

Metadaten und Snapshots

Iceberg verwendet ein Snapshot-basiertes Abfragemodell, bei dem Datendateien mithilfe von Manifest- und Metadatendateien zugeordnet werden. Ein Snapshot stellt den Zustand einer Tabelle zu einem bestimmten Zeitpunkt dar und wird für den Zugriff auf den gesamten Satz von Datendateien in der Tabelle verwendet.

Snowflake verwendet den Parameter DATA_RETENTION_TIME_IN_DAYS, um Metadaten je nach Typ der Iceberg-Tabelle auf unterschiedliche Weise zu verarbeiten.

Bemerkung

Die Angabe der standardmäßigen Mindestanzahl von Snapshots über die Tabelleneigenschaft history.expire.min-snapshots-to-keep wird für keinen Typ von Iceberg-Tabelle unterstützt.

Tabellen, die Snowflake als Iceberg-Katalog verwenden

Für diesen Tabellentyp generiert Snowflake in regelmäßigen Abständen Metadaten und schreibt die Metadaten in die Parquet-Dateien der Tabelle auf Ihrem externen Volume.

Snowflake verwendet den Wert von DATA_RETENTION_TIME_IN_DAYS, um Folgendes zu bestimmen:

  • Zeitpunkt des Ablaufens der alten Tabellen-Snapshots, um die Größe der Tabellen-Metadaten zu reduzieren.

  • Aufbewahrungsdauer der Metadaten der Tabelle, um Time Travel und das Wiederherstellen gelöschter Tabellen zu unterstützen. Wenn die Aufbewahrungsfrist abläuft, löscht Snowflake alle Tabellenmetadaten und Snapshots, die für diese Tabelle geschrieben wurden, von Ihrem externen Volume-Speicherort.

    Bemerkung

    Snowflake unterstützt kein Fail-safe für Iceberg-Tabellen, da sich die Tabellendaten in einem externen Cloudspeicher befinden, den Sie verwalten. Um die Daten der Iceberg-Tabelle zu schützen, sollten Sie die Datensicherung und -wiederherstellung über Ihren Cloudanbieter konfigurieren.

Tabellen, die eine Katalogintegration verwenden

Snowflake verwendet den Wert von DATA_RETENTION_TIME_IN_DAYS, um eine Aufbewahrungsfrist für Snowflake Time Travel und das Wiederherstellen gelöschter Tabellen festzulegen. Wenn die Aufbewahrungsfrist abläuft, führt Snowflake keine Löschung der Iceberg-Metadaten der Tabelle oder der Snapshots aus Ihrem externen Cloudspeicher aus.

Um DATA_RETENTION_TIME_IN_DAYS für diesen Tabellentyp festzulegen, ruft Snowflake den Wert von history.expire.max-snapshot-age-ms aus der aktuellen Metadatendatei ab und rechnet den Wert dann in Tage um (Abrundung).

Wenn Snowflake history.expire.max-snapshot-age-ms in der Metadatendatei nicht findet oder den Wert nicht parsen kann, wird DATA_RETENTION_TIME_IN_DAYS auf einen Standardwert von 5 Tagen gesetzt (den Standardwert von Apache Iceberg).

Cloud-/regionsübergreifende Unterstützung

Die Cloud-/regionsübergreifende Unterstützung hängt vom Typ der Iceberg-Tabelle ab.

Tabellentyp

Cloud-/regionsübergreifende Unterstützung

Anmerkungen

Tabellen, die eine Katalogintegration verwenden

Wenn sich der aktive Speicherort Ihres externen Volumes bei einem anderen Cloudanbieter oder in einer anderen Region befindet wie Ihr Snowflake-Konto, gelten die folgenden Einschränkungen:

  • Sie können die Funktion SYSTEM$GET_ICEBERG_TABLE_INFORMATION nicht verwenden, um Informationen zu den letzten aktualisierten Snapshot abzurufen.

  • Sie können die Tabelle nicht konvertieren, um Snowflake als Katalog zu verwenden.

Wenn sich Ihr Snowflake-Konto und Ihr externes Volume in unterschiedlichen Regionen befinden, fallen für Ihr externes Cloudspeicherkonto bei Abfragen der Tabelle Kosten für ausgehende Daten an.

Tabellen, die Snowflake als Iceberg-Katalog verwenden

Ihr externes Volume muss einen aktiven Speicherort bei demselben Cloudanbieter (in derselben Region) verwenden, der Ihr Snowflake-Konto hostet.

Wenn sich kein aktiver Speicherort in der gleichen Region befindet, gibt die CREATE ICEBERG TABLE-Anweisung einen Benutzerfehler zurück.

Rechnungsstellung

Snowflake stellt Ihrem Konto die Computenutzung des virtuellen Warehouses und die Clouddienste in Rechnung, wenn Sie mit Iceberg-Tabellen arbeiten.

Folgendes berechnet Snowflake Ihrem Konto nicht:

  • Kosten für die Speicherung der Iceberg-Tabellen. Ihr Cloudspeicheranbieter stellt Ihnen die Nutzung des Datenspeichers direkt in Rechnung.

  • Von Iceberg-Tabellen verwendete aktive Bytes. Die Ansicht TABLE_STORAGE_METRICS zeigt jedoch ACTIVE_BYTES für Iceberg-Tabellen an, damit Sie verfolgen können, wie viel Speicherplatz eine Tabelle belegt.

Bemerkung

Wenn sich Ihr Snowflake-Konto und Ihr externes Volume in unterschiedlichen Regionen befinden, fallen für Ihr externes Cloudspeicherkonto bei Abfragen der Tabelle Kosten für ausgehende Daten an.

Optionen für den Iceberg-Katalog

Wenn Sie in Snowflake eine Iceberg-Tabelle erstellen, können Sie Snowflake als Iceberg-Katalog verwenden oder eine Katalogintegration nutzen.

In der folgenden Tabelle sind die Unterschiede zwischen diesen Katalogoptionen zusammengefasst.

Snowflake als Iceberg-Katalog verwenden

Katalogintegration verwenden

Lesezugriff

Schreibzugriff

❌ Für eine vollständige Plattformunterstützung können Sie die Tabelle konvertieren, um Snowflake als Katalog zu verwenden.

Daten- und Metadatenspeicher

Externes Volume (Cloudspeicher)

Externes Volume (Cloudspeicher)

Vollständige Plattformunterstützung

Arbeitet mit dem Snowflake Iceberg Catalog SDK

Snowflake als Iceberg-Katalog verwenden

Eine Iceberg-Tabelle, die Snowflake als Iceberg-Katalog verwendet, bietet volle Snowflake-Plattformunterstützung mit Lese- und Schreibzugriff. Die Tabellendaten und die Metadaten werden in einem externen Cloudspeicher gespeichert, auf den Snowflake über ein externes Volume zugreift. Snowflake übernimmt die gesamte Lebenszykluswartung der Tabelle, wie z. B. die Komprimierung.

Funktionsweise von Iceberg-Tabellen, die Snowflake als Iceberg-Katalog verwenden

Katalogintegration verwenden

Eine Iceberg-Tabelle, die eine Katalogintegration verwendet, bietet eingeschränkte Snowflake-Plattformunterstützung mit Nur-Lese-Zugriff. Die Tabellendaten und die Metadaten werden in einem externen Cloudspeicher gespeichert, auf den Snowflake über ein externes Volume zugreift. Bei diesem Tabellentyp verwendet Snowflake die Katalogintegration, um Informationen zu Ihren Iceberg-Metadaten und Ihrem Iceberg-Schema abzurufen. Snowflake übernimmt keine Lebenszyklusverwaltung für die Tabelle.

Sie können diese Option verwenden, um eine Iceberg-Tabelle zu erstellen, die einen externen Iceberg-Katalog verwendet, wie z. B. AWS Glue, oder um eine Tabelle aus Iceberg-Metadatendateien im Objektspeicher zu erstellen. Die folgende Abbildung zeigt, wie eine Iceberg-Tabelle eine Katalogintegration mit einem externen Iceberg-Katalog verwendet.

Funktionsweise von Iceberg-Tabellen, die eine Katalogintegration verwenden

Hinweise und Einschränkungen

Die folgenden Hinweise und Einschränkungen gelten für Iceberg-Tabellen; Änderungen vorbehalten:

Iceberg

  • Version 1 und 2 der Apache-Iceberg-Spezifikation werden unterstützt, mit Ausnahme der folgenden Features:

    • Löschungen auf Zeilenebene (entweder Positionslöschungen oder Gleichheitslöschungen)

    • Verwendung der history.expire.min-snapshots-to-keep-Tabelleneigenschaft zur Angabe der standardmäßigen Mindestanzahl der aufzubewahrenden Snapshots. Weitere Informationen dazu finden Sie unter Metadaten und Snapshots.

  • Die Iceberg-Partitionierung mit der Transformationsfunktion bucket wirkt sich auf die Leistung von Abfragen aus, die bedingte Klauseln zum Filtern von Ergebnissen verwenden.

  • Iceberg-Tabellen, die aus Dateien im Objektspeicher erstellt wurden, werden unter folgenden Bedingungen nicht unterstützt:

    • Die Tabelle enthält eine Partitionsspezifikation, die eine Identitätstransformation definiert.

    • Die Quellspalte der Partitionsspezifikation existiert nicht in einer Parquet-Datei.

  • Bei Iceberg-Tabellen, die nicht von Snowflake verwaltet werden, wird Time Travel für jeden Snapshot unterstützt, der nach der Tabellenerstellung generiert wurde, solange Sie die Tabelle regelmäßig, vor Ablauf des Snapshots aktualisieren.

Dateiformate

  • Die Unterstützung ist auf Apache Parquet-Dateien beschränkt.

  • Parquet-Dateien, die den logischen Typ der vorzeichenlosen Ganzzahl verwenden, werden nicht unterstützt.

Externe Volumes

  • Sie müssen auf die Cloudspeicherorte in externen Volumes mit direkten Anmeldeinformationen zugreifen. Speicherintegrationen werden nicht unterstützt.

  • Die Vertrauensstellung muss für jedes externe Volume, das Sie erstellen, separat konfiguriert werden.

Metadatendateien

  • Die Metadatendateien identifizieren nicht den letzten Snapshot einer Iceberg-Tabelle.

  • Sie können den Speicherort von Datendateien oder Snapshots nicht mit dem Befehl ALTER ICEBERG TABLE ändern. Um eine dieser Einstellungen zu ändern, müssen Sie die Tabelle neu erstellen (unter Verwendung der Syntax CREATE OR REPLACE ICEBERG TABLE).

Snowflake-Features

  • Die folgenden Features und Aktionen werden von Iceberg-Tabellen derzeit nicht unterstützt:

    • Erstellen eines Klons aus einer Iceberg-Tabelle. Darüber hinaus enthalten Klone von Datenbanken und Schemas keine Iceberg-Tabellen.

    • Automatisches Anwenden von Tags unter Verwendung der gespeicherten Prozedur ASSOCIATE_SEMANTIC_CATEGORY_TAGS.

    • Snowflake-Schemaentwicklung. Iceberg-Tabellen, die Snowflake als Katalog verwenden, unterstützen jedoch die Iceberg-Schemaentwicklung.

      Bemerkung

      Tabellen, die vor Snowflake-Version 7.42 erstellt wurden, unterstützen die Iceberg-Schemaentwicklung nicht.

    • Erstellen von temporären oder transienten Iceberg-Tabellen.

    • Replizieren von Iceberg-Tabellen, externe Volumes oder Katalogintegrationen.

      Wenn eine primäre Datenbank eine Iceberg-Tabelle enthält, führt die Iceberg-Tabelle außerdem dazu, dass die Aktualisierungsoperation fehlschlägt. [1]

  • Das Abfragen historischer Daten wird für Iceberg-Tabellen unterstützt.

  • Die Unterstützung für Clustering hängt vom Typ der Iceberg-Tabelle ab.

    Tabellentyp

    Anmerkungen

    Tabellen, die Snowflake als Iceberg-Katalog verwenden

    Legen Sie einen Gruppierungsschlüssel fest, indem Sie entweder den Befehl CREATE ICEBERG TABLE oder den Befehl ALTER ICEBERG TABLE verwenden. Weitere Informationen zum Festlegen oder Verwalten eines Gruppierungsschlüssels finden Sie unter CREATE ICEBERG TABLE und ALTER ICEBERG TABLE.

    Tabellen, die eine Katalogintegration verwenden

    Clustering wird nicht unterstützt.

    Konvertierte Tabellen

    Snowflake clustert Dateien nur, wenn sie nach der Konvertierung der Tabelle erstellt wurden oder wenn die Dateien seitdem mit einer DML-Anweisung geändert wurden.

Zugriff von Drittkunden auf Iceberg-Daten, Metadaten

  • Clients von Drittanbietern können keine Daten an Iceberg-Tabellen anhängen, in Iceberg-Tabellen löschen oder Daten per Upsert einfügen, wenn die Iceberg-Tabellen Snowflake als Katalog verwenden.