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.