Tables Iceberg

Une table Iceberg utilise la spécification de format de table ouvert Apache Iceberg, qui fournit une couche d’abstraction sur les fichiers de données stockés dans des formats ouverts et prend en charge des fonctions telles que :

  • Transactions ACID (atomicité, cohérence, isolation, durabilité)

  • Évolution du schéma

  • Partitionnement masqué

  • Instantanés de table

Les tables Iceberg pour Snowflake combinent les performances et la sémantique de requête des tables Snowflake standards avec le stockage cloud externe que vous gérez. Elles sont idéales pour les data lakes existants que vous ne pouvez pas, ou choisissez de ne pas, stocker dans Snowflake.

Snowflake prend en charge les tables Iceberg qui utilisent le format de fichier Apache Parquet.

Pour une introduction à l’utilisation des tables Iceberg dans Snowflake, voir Guide de démarrage rapide : Premiers pas avec les tables Iceberg.

Fonctionnement des tables Iceberg

Cette section fournit des informations spécifiques à l’utilisation des tables Iceberg dans Snowflake. Pour en savoir plus sur la spécification de format de table Iceberg, voir la documentation Apache Iceberg et les Spécifications des tables Iceberg officielles.

Stockage de données

Les tables Iceberg stockent leurs fichiers de données et de métadonnées dans un emplacement de stockage Cloud externe (Amazon S3, Google Cloud Storage ou Azure Storage). Le stockage externe ne fait pas partie de Snowflake. Vous êtes responsable de l’ensemble de la gestion de l’emplacement de stockage Cloud externe. Snowflake se connecte à votre emplacement de stockage via un volume externe.

Les tables Iceberg n’entraînent aucun coût de stockage Snowflake. Pour plus d’informations, voir Facturation.

Volumes externes

Un volume externe est un objet Snowflake nommé, au niveau du compte, qui stocke une entité IAM (Identity and Access Management - Gestion de l’identité et de l’accès) pour votre stockage Cloud externe. Snowflake se connecte en toute sécurité à votre stockage Cloud avec un volume externe pour accéder aux données des tables, aux métadonnées Iceberg et aux fichiers manifestes qui stockent le schéma des tables, les partitions et d’autres métadonnées.

Un seul volume externe peut prendre en charge une ou plusieurs tables Iceberg.

Pour configurer un volume externe pour des tables Iceberg, voir Configurer un volume externe pour des tables Iceberg.

Catalogue Iceberg

Un catalogue Iceberg permet à un moteur de calcul de gérer et de charger des tables Iceberg. Le catalogue constitue la première couche architecturale de la spécification des tables Iceberg et doit prendre en charge :

  • Stockage du pointeur de métadonnées actuel pour une ou plusieurs tables Iceberg. Un pointeur de métadonnées mappe un nom de table vers l’emplacement du fichier de métadonnées actuel de cette table.

  • Exécution d’opérations atomiques permettant de mettre à jour le pointeur de métadonnées actuel d’une table.

Pour en savoir plus sur les catalogues Iceberg, voir la documentation Apache Iceberg.

Snowflake prend en charge différentes options de catalogue. Par exemple, vous pouvez utiliser Snowflake comme catalogue Iceberg, ou utiliser une intégration de catalogue pour connecter Snowflake à un catalogue Iceberg externe comme AWS Glue ou à des fichiers de métadonnées Iceberg dans le stockage d’objets.

Intégrations de catalogue

Une intégration de catalogue est un objet Snowflake nommé, au niveau du compte, qui définit la source des métadonnées et du schéma d’une table Iceberg lorsque vous n’utilisez pas Snowflake comme catalogue Iceberg.

Une seule intégration de catalogue peut prendre en charge une ou plusieurs tables Iceberg.

Pour configurer une intégration de catalogue pour des tables Iceberg, voir Configurer une intégration de catalogue pour des tables Iceberg.

Métadonnées et instantanés

Pour les tables qui utilisent Snowflake comme catalogue, Snowflake génère automatiquement et régulièrement les métadonnées. Il écrit ensuite les métadonnées dans les fichiers Parquet de la table sur votre volume externe.

Iceberg utilise un modèle de requête basé sur des instantanés, dans lequel les fichiers de données sont mappés à l’aide de fichiers manifestes et de métadonnées. Un instantané représente l’état d’une table à un moment donné et est utilisé pour accéder à l’ensemble complet de fichiers de données de la table.

Au bout d’un certain temps, Snowflake supprime les anciens instantanés de table Iceberg afin de réduire la taille des métadonnées de la table.

Pour déterminer l’âge maximal des instantanés, Snowflake récupère la valeur de history.expire.max-snapshot-age-ms dans le fichier de métadonnées actuel, convertit la valeur en jours (en arrondissant à la valeur inférieure) et la stocke dans le paramètre DATA_RETENTION_TIME_IN_DAYS.

Si Snowflake ne trouve pas history.expire.max-snapshot-age-ms dans le fichier de métadonnées, ou ne peut pas analyser la valeur, il définit DATA_RETENTION_TIME_IN_DAYS sur une valeur par défaut de 5 jours (la valeur par défaut d’Apache Iceberg).

Note

L’utilisation de la history.expire.min-snapshots-to-keep propriété de table pour spécifier le nombre minimal d’instantanés par défaut n’est pas prise en charge.

Prise en charge inter-Cloud/interrégionale

La prise en charge inter-Cloud/interrégionale dépend du type de table Iceberg.

Type de table

Prise en charge inter-Cloud/interrégionale

Remarques

Tables qui utilisent une intégration de catalogue

Si l’emplacement de stockage actif de votre volume externe ne se trouve pas chez le même fournisseur Cloud ou dans la même région que votre compte Snowflake, les limitations suivantes s’appliquent :

  • Vous ne pouvez pas utiliser la fonction SYSTEM$GET_ICEBERG_TABLE_INFORMATION pour obtenir des informations sur le dernier instantané actualisé.

  • Vous ne pouvez pas convertir la table pour utiliser Snowflake comme catalogue.

Tables qui utilisent Snowflake comme catalogue Iceberg

Votre volume externe doit spécifier un emplacement de stockage actif chez le même fournisseur Cloud (dans la même région) que celui qui héberge votre compte Snowflake.

Si aucun emplacement actif ne se trouve dans la même région, l’instruction CREATE ICEBERG TABLE renvoie une erreur d’utilisateur.

Facturation

Snowflake facture votre compte pour l’utilisation (le calcul) de l’entrepôt virtuel et les services Cloud lorsque vous utilisez des tables Iceberg.

Snowflake ne facture pas votre compte pour les coûts suivants :

  • Coûts de stockage des tables Iceberg. Votre fournisseur de stockage Cloud vous facture directement pour l’utilisation du stockage de données.

  • Octets actifs utilisés par les tables Iceberg. En revanche, Vue TABLE_STORAGE_METRICS affiche les ACTIVE_BYTES des tables Iceberg afin de vous aider à déterminer la quantité d’espace de stockage occupée par une table.

Options de catalogue Iceberg

Lorsque vous créez une table Iceberg dans Snowflake, vous pouvez utiliser Snowflake comme catalogue Iceberg ou vous pouvez utiliser une intégration de catalogue.

Le tableau suivant résume les différences entre ces options de catalogue.

Utiliser Snowflake comme catalogue Iceberg

Utiliser une intégration de catalogue

Accès en lecture

Accès en écriture

❌ Pour une prise en charge de plateforme complète, vous pouvez convertir la table de sorte à utiliser Snowflake comme catalogue.

Stockage des données et des métadonnées

Volume externe (stockage Cloud)

Volume externe (stockage Cloud)

Prise en charge de plateforme complète

Fonctionne avec le SDK du catalogue Iceberg Snowflake

Utiliser Snowflake comme catalogue Iceberg

Une table Iceberg qui utilise Snowflake comme catalogue Iceberg offre une prise en charge de plateforme Snowflake complète avec un accès en lecture et en écriture. Les données et métadonnées de la table sont stockées dans un stockage Cloud externe auquel Snowflake accède via un volume externe. Snowflake prend en charge la maintenance tout au long du cycle de vie de la table, comme le compactage.

How Iceberg tables that use Snowflake as the Iceberg catalog work

Utiliser une intégration de catalogue

Une table Iceberg qui utilise une intégration de catalogue offre une prise en charge de plateforme Snowflake limitée, avec un accès en lecture seule. Les données et métadonnées de la table sont stockées dans un stockage Cloud externe auquel Snowflake accède via un volume externe. Avec ce type de table, Snowflake utilise l’intégration de catalogue pour récupérer des informations sur les métadonnées et le schéma Iceberg. Snowflake ne prend en charge aucune gestion du cycle de vie de la table.

Vous pouvez utiliser cette option pour créer une table Iceberg qui utilise un catalogue Iceberg externe, tel que AWS Glue, ou pour créer une table à partir de fichiers de métadonnées Iceberg dans le stockage d’objets. Le diagramme suivant montre comment une table Iceberg utilise une intégration de catalogue avec un catalogue Iceberg externe.

How Iceberg tables that use a catalog integration work

Considérations et limites

Les considérations et limites suivantes s’appliquent aux tables Iceberg et sont susceptibles d’être modifiées :

Iceberg

  • Les versions 1 et 2 de la spécification Apache Iceberg sont prises en charge, à l’exception des `fonctions <https://iceberg.apache.org/spec/> suivantes`_:

    • Suppressions au niveau des lignes (suppressions de position ou d’égalité).

    • Utilisation de la history.expire.min-snapshots-to-keep propriété de table pour spécifier le nombre minimal d’instantanés à conserver par défaut. Pour plus d’informations, voir Métadonnées et instantanés.

  • Le partitionnement Iceberg avec la fonction de transformation bucket a un impact sur les performances des requêtes qui utilisent des clauses conditionnelles pour filtrer les résultats.

  • Les tables Iceberg créées à partir de fichiers dans le stockage d’objets ne sont pas prises en charge si les conditions suivantes sont remplies :

    • La table contient une spécification de partition qui définit une transformation d’identité.

    • La colonne source de la spécification de partition n’existe pas dans un fichier Parquet.

  • Pour les tables Iceberg non gérées par Snowflake, la fonction Time Travel vers n’importe quel instantané généré après la création de la table est prise en charge à condition que vous actualisiez périodiquement la table avant l’expiration de l’instantané.

Formats de fichier

  • La prise en charge est limitée aux fichiers Apache Parquet.

  • Les fichiers Parquet qui utilisent le type logique d’entier non signé ne sont pas pris en charge.

Volumes externes

  • Vous devez accéder aux emplacements de stockage Cloud dans les volumes externes via des identifiants de connexion directs. Les intégrations de stockage ne sont pas prises en charge.

  • La relation de confiance doit être configurée séparément pour chaque volume externe que vous créez.

Fichiers de métadonnées

  • Les fichiers de métadonnées n’identifient pas l’instantané le plus récent d’une table Iceberg.

  • Vous ne pouvez pas modifier l’emplacement des fichiers de données ou de l’instantané à l’aide de la commande ALTER ICEBERG TABLE. Pour modifier l’un ou l’autre de ces paramètres, vous devez recréer la table (via la syntaxe CREATE OR REPLACE ICEBERG TABLE).

Fonctions Snowflake

  • Les fonctions et actions suivantes ne sont actuellement pas prises en charge sur les tables Iceberg :

    • Création d’un clone à partir d’une table Iceberg. En outre, les clones de bases de données et de schémas n’incluent pas de tables Iceberg.

    • Application automatique de balises à l’aide de la procédure stockée ASSOCIATE_SEMANTIC_CATEGORY_TAGS.

    • Évolution du schéma Snowflake. Toutefois, les tables Iceberg qui utilisent Snowflake comme catalogue prennent en charge l’évolution du schéma Iceberg.

      Note

      Les tables créées avant la version 7.42 de Snowflake ne prennent pas en charge pas l’évolution du schéma Iceberg.

    • Création de tables Iceberg temporaires ou transitoires.

    • Réplication de tables Iceberg, de volumes externes ou d’intégrations de catalogue.

    • Octroi ou révocation de privilèges pour les tables Iceberg, les volumes externes ou les intégrations de catalogue depuis ou vers un partage.

  • L”interrogation des données historiques est prise en charge pour les tables Iceberg.

  • La prise en charge du clustering dépend du type de table Iceberg.

    Type de table

    Remarques

    Tables qui utilisent Snowflake comme catalogue Iceberg

    Définissez une clé de clustering via la commande CREATE ICEBERG TABLE ou ALTER ICEBERG TABLE. Pour définir ou gérer une clé de clustering, voir CREATE ICEBERG TABLE et ALTER ICEBERG TABLE.

    Tables qui utilisent une intégration de catalogue

    Le clustering n’est pas pris en charge.

    Tables converties

    Snowflake ne met les fichiers en cluster que s’ils ont été créés après la conversion de la table, ou si les fichiers ont été modifiés depuis à l’aide d’une instruction DML.

Accès par des clients tiers aux données et métadonnées Iceberg

  • Les clients tiers ne peuvent pas ajouter, supprimer ou appliquer d’opération upsert à des données dans les tables Iceberg qui utilisent Snowflake comme catalogue.

Chapitres suivants :