Metadaten und Speicher für Apache Iceberg™-Tabellen

Snowflake behandelt Metadaten für Apache Iceberg™ Tabellen je nach Art des von Ihnen verwendeten Katalogs (Snowflake oder extern).

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

Snowflake verwaltet den Lebenszyklus der Metadaten für diesen Tabellentyp und löscht alte Metadaten, Manifestlisten und Manifestdateien auf der Grundlage der Aufbewahrungsfrist für die Tabellendaten und Snapshots.

Um die Aufbewahrungsfrist für Tabellendaten und Snapshots festzulegen, setzen Sie den Parameter DATA_RETENTION_TIME_IN_DAYS auf Konto-, Datenbank-, Schema- oder Tabellenebene.

Erstellung

Snowflake generiert in regelmäßigen Abständen Metadaten für Version 2 der Apache Iceberg-Spezifikation und schreibt die Metadaten in Dateien auf Ihrem externen Datenträger. Jede neue Metadatendatei enthält alle DML- oder DDL-Änderungen seit der Erstellung der letzten von Snowflake generierten Metadatendatei.

Sie können Metadaten mit der Funktion SYSTEM$GET_ICEBERG_TABLE_INFORMATION auch bei Bedarf erstellen. Eine Anleitung dazu finden Sie unter Snapshots von DML-Änderungen generieren.

Informationen zur Lokalisierung von Dateien mit Metadaten finden Sie unter Daten- und Metadatenverzeichnisse.

Verlauf der Metadatenerstellung anzeigen

Um auf einen vollständigen Verlauf der Versuche zur Metadatengenerierung zuzugreifen, rufen Sie den Abfrageverlauf für Ihr Konto auf und filtern Sie die Ergebnisse. Suchen Sie nach dem SYSTEM$GET_ICEBERG_TABLE_INFORMATION Funktionsnamen im SQL-Text.

Snowflake verwendet intern die gleiche Funktion SYSTEM$GET_ICEBERG_TABLE_INFORMATION zur Generierung von Tabellenmetadaten. Die von Snowflake unternommenen Versuche erscheinen im Abfrageverlauf unter dem Benutzer mit der Bezeichnung SYSTEM. Die Spalte STATUS im Abfrageverlauf zeigt an, ob Metadaten erfolgreich generiert wurden.

Informationen zu den Anzeigeoptionen finden Sie unter Abfrageaktivität mit Abfrageverlauf überwachen.

Löschung

Snowflake löscht Iceberg-Metadaten aus Ihrem externen Cloudspeicher, wenn die folgenden Ereignisse eintreten:

  • Nachdem Sie eine Tabelle gelöscht haben

  • Wenn sich die Iceberg-Metadaten auf abgelaufene Snapshots oder Tabellendaten beziehen

Die Löschung erfolgt nicht unmittelbar nach Ablauf der Datenaufbewahrungsfrist. Daher können für die Speicherung von Metadaten bei Ihrem Cloudspeicheranbieter Kosten anfallen, die über die Lebensdauer einer Tabelle hinausgehen.

Warnung

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

Nach dem Löschen einer Tabelle

Wenn Sie eine Tabelle löschen, können Sie den Befehl UNDROP ICEBERG TABLE verwenden, um sie innerhalb der Datenaufbewahrungsfrist wiederherzustellen.

Wenn die Aufbewahrungsfrist abläuft, löscht Snowflake die Tabellenmetadaten und Snapshots, die geschrieben wurden, von Ihrem externen Volume-Speicherort. Die Löschung erfolgt asynchron und kann nach Ablauf der Aufbewahrungsfrist einige Tage in Anspruch nehmen.

Bemerkung

Bei konvertierten Tabellen löscht Snowflake nur Metadaten, die nach der Tabellenkonvertierung erzeugt wurden.

Nach Ablauf von Snapshots

Snowflake löscht Iceberg Metadatendateien, die sich auf abgelaufene Snapshots beziehen, nachdem die Datenaufbewahrungsfrist abgelaufen ist. Die Löschung erfolgt in der Regel 7–14 Tage nach Ablauf eines Snapshots.

Nur frühere Tabellen-Snapshots können ablaufen. Snowflake löscht niemals Metadatendateien, die den letzten (aktuellen) Stand einer Tabelle aus Ihrem externen Cloudspeicher darstellen.

Tabellen, die einen externen Katalog verwenden

Bei Tabellen, die einen externen Katalog verwenden, verwendet Snowflake den Wert des Parameters 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, löscht Snowflake nicht die Iceberg Metadaten oder Snapshots aus Ihrem externen Cloudspeicher.

Snowflake setzt DATA_RETENTION_TIME_IN_DAYS auf Tabellenebene auf den kleineren der folgenden Werte:

  • Der Wert von history.expire.max-snapshot-age-ms in der aktuellen Metadaten-Datei. Snowflake rechnet den Wert in Tage um (Abrundung).

  • Der folgende Wert, je nach Edition des Snowflake-Kontos:

    • Standard Edition: 1 Tag

    • Enterprise Edition (oder höher): 5 Tage

Sie können den Wert von DATA_RETENTION_TIME_IN_DAYS in Snowflake nicht manuell ändern. Um den Wert zu ändern, müssen Sie history.expire.max-snapshot-age-ms in Ihrer Metadaten-Datei aktualisieren und dann die Tabelle aktualisieren.

Time Travel

Mit Snowflake Time Travel können Sie Snowflake verwenden, um historische Daten für eine Tabelle abzufragen.

Sie können auch eine Compute Engine eines Drittanbieters verwenden, um Time Travel-Abfragen auf von Snowflake verwalteten Tabellen durchzuführen, wenn Sie Eine Snowflake-verwaltete Tabelle mit Snowflake Open Catalog synchronisieren oder Snowflake-Katalog SDK verwenden.

Sie können alle Snapshots abfragen, die innerhalb der Datenaufbewahrungsfrist erstellt wurden. Um die Datenaufbewahrungsfrist festzulegen, stellen Sie den Objektparameter DATA_RETENTION_TIME_IN_DAYS ein.

Wenn Sie Tabellendaten oder eine Tabelle löschen, löscht Snowflake die Objekte nach Ablauf der Aufbewahrungsfrist der Tabelle. Dadurch können bei Ihrem Cloudspeicher-Anbieter Kosten entstehen, die über die Lebensdauer der Tabelle hinausgehen.