Métadonnées et conservation des tables Apache Iceberg™¶
Snowflake gère les métadonnées des tables Apache Iceberg™ selon le type de catalogue que vous utilisez (Snowflake ou externe).
Note
La spécification du nombre minimal d’instantanés par défaut avec la history.expire.min-snapshots-to-keep
propriété de table n’est prise en charge pour aucun type de table Iceberg.
Tables qui utilisent Snowflake comme catalogue¶
Snowflake gère le cycle de vie des métadonnées pour ce type de table et supprime les anciennes métadonnées, les listes de manifestes et les fichiers de manifeste en fonction de la période de conservation des données de table et des instantanés.
Pour définir la période de conservation des données de table et des instantanés, définissez le paramètre DATA_RETENTION_TIME_IN_DAYS au niveau du compte, de la base de données, du schéma ou de la table.
Création¶
Snowflake génère périodiquement des métadonnées pour la version 2 de la spécification Apache Iceberg et les écrit dans des fichiers sur votre volume externe. Chaque nouveau fichier de métadonnées contient l’ensemble des modifications DML ou DDL depuis la création du dernier fichier de métadonnées généré par Snowflake.
Vous pouvez également créer des métadonnées à la demande à l’aide de la fonction SYSTEM$GET_ICEBERG_TABLE_INFORMATION. Pour obtenir des instructions, voir Générer des instantanés des modifications DML.
Pour plus d’informations sur la localisation des fichiers de métadonnées, voir Répertoires de données et de métadonnées.
Affichage de l’historique de création des métadonnées¶
Pour accéder à un historique complet des tentatives de génération de métadonnées, affichez l’historique des requêtes de votre compte et filtrez les résultats. Recherchez le nom de la fonction SYSTEM$GET_ICEBERG_TABLE_INFORMATION dans le texte SQL.
Snowflake utilise en interne la même fonction SYSTEM$GET_ICEBERG_TABLE_INFORMATION pour générer des métadonnées de table. Les tentatives effectuées par Snowflake apparaissent sous l’utilisateur appelé SYSTEM
dans l’historique des requêtes. La colonne STATUS
de l’historique des requêtes indique si les métadonnées ont été générées avec succès.
Pour les options d’affichage, voir Surveillance de l’activité des requêtes avec l’historique des requêtes.
Suppression¶
Snowflake supprime les métadonnées Iceberg de votre stockage Cloud externe lorsque les événements suivants se produisent :
Après la suppression d’une table.
Lorsque les métadonnées Iceberg font référence à des instantanés ou à des données de table qui ont expiré.
La suppression n’a pas lieu immédiatement après l’expiration de la période de conservation des données. Par conséquent, le stockage des métadonnées pourrait entraîner des coûts auprès de votre fournisseur de stockage cloud pour une durée plus longue que la durée de vie d’une table.
Avertissement
Snowflake ne prend pas en charge Fail-safe pour les tables Iceberg gérées par Snowflake, car les données de table se trouvent dans un stockage cloud externe que vous gérez. Pour protéger les données des tables Iceberg, vous devez configurer la protection et la récupération des données auprès de votre fournisseur cloud.
Après la suppression d’une table¶
Lorsque vous supprimez une table, vous pouvez utiliser la commande UNDROP ICEBERG TABLE pour la restaurer dans la période de conservation des données.
À l’expiration de la période de conservation, Snowflake supprime de l’emplacement de votre volume externe les métadonnées et les instantanés de table qu’il a écrits. La suppression se produit de manière asynchrone et peut prendre quelques jours après l’expiration de la période de conservation.
Note
Pour les tables converties, Snowflake supprime uniquement les métadonnées générées après la conversion de la table.
Après l’expiration des instantanés¶
Snowflake supprime les fichiers de métadonnées Iceberg liés aux instantanés expirés une fois la période de conservation des données écoulée. La suppression se produit généralement 7 à 14 jours après l’expiration d’un instantané.
Seuls les instantanés de table précédents peuvent expirer. Snowflake ne supprime jamais les fichiers de métadonnées qui représentent l’état le plus récent (actuel) d’une table de votre stockage Cloud externe.
Tables utilisant un catalogue externe¶
Pour les tables qui utilisent un catalogue externe, Snowflake utilise la valeur du paramètre DATA_RETENTION_TIME_IN_DAYS pour définir une période de conservation pour Snowflake Time Travel et l’annulation de la suppression de la table. À l’expiration de la période de conservation, Snowflake ne supprime pas de votre stockage Cloud externe les métadonnées ni les instantanés Iceberg.
Snowflake définit DATA_RETENTION_TIME_IN_DAYS au niveau de la table sur la valeur la plus petite parmi les suivantes :
La valeur de
history.expire.max-snapshot-age-ms
dans le fichier de métadonnées actuel. Snowflake convertit la valeur en jours (en arrondissant à l’unité inférieure).La valeur suivante, en fonction de l’édition du compte Snowflake :
Standard Edition : 1 jour.
Enterprise Edition ou une édition supérieure : 5 jours
Vous ne pouvez pas modifier manuellement la valeur de DATA_RETENTION_TIME_IN_DAYS dans Snowflake. Pour modifier la valeur, vous devez mettre à jour history.expire.max-snapshot-age-ms
dans votre fichier de métadonnées, puis actualiser la table.
Time Travel¶
Avec Snowflake Time Travel, vous pouvez utiliser Snowflake pour interroger les données historiques d’une table.
Vous pouvez également utiliser un moteur de calcul tiers pour effectuer des requêtes Time Travel sur les tables gérées par Snowflake lorsque vous Synchronisation d’une table gérée par Snowflake avec Snowflake Open Catalog ou utilisez le SDK du catalogue Snowflake.
Vous pouvez interroger tous les instantanés qui ont été validés pendant la période de conservation des données. Pour spécifier la période de conservation des données, définissez le paramètre d’objet DATA_RETENTION_TIME_IN_DAYS.
Lorsque vous supprimez des données de table ou une table, Snowflake supprime les objets après l’expiration de la période de conservation des données de la table. Cela pourrait entraîner des coûts auprès de votre fournisseur de stockage cloud pour une durée plus longue que la durée de vie de la table.