Vue d’ensemble de Snowflake Open Catalog

Snowflake Open Catalog est une implémentation de catalogue pour les tables Apache Iceberg™ et est construit sur le protocole REST Apache Iceberg™ open source.

Avec Open Catalog, vous pouvez fournir un accès centralisé et sécurisé en lecture et en écriture pour vos tables Iceberg sur différents moteurs de requêtes compatibles avec REST.

Open Catalog est actuellement proposé en tant que service hébergé dans une infrastructure gérée par Snowflake.

Diagramme conceptuel d'Open Catalog.

Inscription

Open Catalog propose les options d’inscription suivantes :

  • Pour les clients Snowflake existants : connectez-vous à un compte Snowflake existant en tant qu’administrateur de l’organisation et créez un nouveau compte Open Catalog dans votre organisation Snowflake. Les utilisateurs disposant du rôle ORGADMIN dans Snowflake peuvent gérer le compte Open Catalog depuis Snowflake. Pour obtenir des instructions, voir Création d’un compte Snowflake Open Catalog.

  • Si vous n’êtes pas client Snowflake : vous pouvez essayer Snowflake Open Catalog gratuitement pendant 30 jours en créant un compte d’essai Snowflake. Pour obtenir des instructions, voir Essayer gratuitement Snowflake Open Catalog.

Concepts clés

Cette section présente les concepts clés associés à l’utilisation d’Open Catalog hébergé dans Snowflake.

Dans le schéma suivant, un exemple de structure Open Catalog avec des espaces de noms imbriqués est illustré pour Catalog1. Aucune table ou aucun espace de noms n’a encore été créé pour Catalog2 ou Catalog3.

Schéma illustrant un exemple de structure Open Catalog.

Catalogue

Dans Open Catalog, vous pouvez créer une ou plusieurs ressources de catalogue pour organiser les tables Iceberg.

Configurez votre catalogue en définissant des valeurs dans la configuration de stockage pour S3, Azure ou Google Cloud Storage. Un catalogue Iceberg permet à un moteur de requête de gérer et d’organiser les tables. Le catalogue constitue la première couche architecturale de la spécification des tables Apache Iceberg™ et doit prendre en charge les tâches suivantes :

  • 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 sur le pointeur de métadonnées d’une nouvelle version de la table.

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

Types de catalogues

Un catalogue peut avoir l’un des deux types suivants :

  • Interne : le catalogue est géré par Open Catalog. Les tables de ce catalogue peuvent être lues et écrites dans Open Catalog.

  • Externe : le catalogue est géré en externe par un autre fournisseur de catalogue Iceberg (par exemple, Snowflake, Glue, Dremio Arctic). Les tables de ce catalogue sont synchronisées avec Open Catalog. Ces tables sont en lecture seule dans Open Catalog. Dans la version actuelle, seul un catalogue externe Snowflake est fourni.

Un catalogue est configuré avec une configuration de stockage qui peut pointer vers S3, Azure storage ou GCS.

Pour créer un nouveau catalogue, voir Création d’un catalogue.

Espace de noms

Vous créez des espaces de noms pour regrouper logiquement les tables Iceberg dans un catalogue. Un catalogue peut avoir plusieurs espaces de noms. Vous pouvez également créer des espaces de noms imbriqués. Les tables Iceberg appartiennent aux espaces de noms.

Tables Apache Iceberg™ et catalogues

Dans un catalogue interne, une table Iceberg est enregistrée dans Open Catalog, mais lue et écrite via des moteurs de requête. Les données et métadonnées de la table sont stockées dans votre stockage Cloud externe. La table utilise Open Catalog comme catalogue Iceberg.

Si vous avez des tables qui utilisent Snowflake comme catalogue Iceberg (tables gérées par Snowflake), vous pouvez synchroniser ces tables avec un catalogue externe dans Open Catalog. Si vous synchronisez ce catalogue avec Open Catalog, il apparaît comme un catalogue externe dans Open Catalog. Les données et métadonnées de la table sont stockées dans votre stockage Cloud externe. Le moteur de requête Snowflake peut lire ou écrire dans ces tables. Cependant, les autres moteurs de requête peuvent uniquement lire ces tables.

Important

Pour garantir que les privilèges d’accès définis pour un catalogue sont appliqués correctement, les conditions suivantes doivent être remplies :

  • Le répertoire contient uniquement les fichiers de données appartenant à une seule table.

  • La hiérarchie de répertoires correspond à la hiérarchie de l’espace de noms du catalogue.

Par exemple, si un catalogue comprend les éléments suivants :

  • Espace de noms de niveau supérieur namespace1

  • Espace de noms imbriqué namespace1a

  • Une table customers regroupée sous un espace de noms imbriqué namespace1a

  • Une table orders regroupée sous un espace de noms imbriqué namespace1a

La hiérarchie de répertoires du catalogue doit respecter cette structure :

  • /namespace1/namespace1a/customers/<fichiers pour la table des clients uniquement>

  • /namespace1/namespace1a/orders/< fichiers pour la table des commandes uniquement>

Principal de service

Un principal de service est une entité que vous créez dans Open Catalog. Chaque principal de service encapsule les informations d’identification que vous utilisez pour vous connecter à Open Catalog.

Les moteurs de requête utilisent des principaux de service pour se connecter aux catalogues.

Open Catalog génère un ID client et une paire de secrets client pour chaque principal de service.

Le tableau suivant présente des exemples de principaux de service que vous pouvez créer dans Open Catalog :

Nom de la connexion de service

But

Flink ingestion

Permet à Apache Flink& reg; d’ingérer des données en continu dans les tables Apache Iceberg™.

Pipeline Spark ETL

Permet à Apache Spark™ d’exécuter des tâches de pipeline ETL sur les tables Iceberg.

Pipelines de données Snowflake

Permet à Snowflake d’exécuter des pipelines de données pour transformer les données dans les tables Apache Iceberg™.

Tableau de bord Trino BI

Permet à Trino d’exécuter des requêtes BI pour alimenter un tableau de bord.

Équipe Snowflake AI

Permet à Snowflake d’exécuter des tâches AI dans les tables Apache Iceberg™.

Connexion de service

Une connexion de service représente un moteur compatible avec REST (comme Apache Spark™, Apache Flink® ou Trino) qui peut lire et écrire dans Open Catalog. Lors de la création d’une nouvelle connexion de service, l’administrateur Open Catalog accorde au principal de service créé avec la nouvelle connexion de service un rôle de principal nouveau ou existant. Un rôle principal est une ressource dans Open Catalog que vous pouvez utiliser pour regrouper logiquement les principaux de service Open Catalog et accorder des privilèges sur les objets sécurisables. Pour plus d’informations, voir Rôle principal. Open Catalog utilise un modèle de contrôle d’accès basé sur les rôles (RBAC) pour autoriser les principaux de service à accéder aux ressources. Pour plus d’informations, voir Contrôle d’aaccès. Pour obtenir un schéma de ce modèle, voir modèle RBAC.

Si l’administrateur Open Catalog accorde au principal de service pour la nouvelle connexion de service un nouveau rôle principal, aucun privilège ne lui est encore accordé. Lors de la sécurisation du catalogue auquel la nouvelle connexion de service se connectera, l’administrateur Open Catalog accorde des privilèges aux rôles de catalogue, puis attribue ces rôles de catalogue au nouveau rôle principal. Par conséquent, le principal de service de la nouvelle connexion de service dispose de ces privilèges. Pour plus d’informations sur les rôles de catalogue, voir Rôle de catalogue.

Si l’administrateur Open Catalog accorde un rôle principal existant au principal de service pour la nouvelle connexion de service, le principal de service reçoit les privilèges accordés aux rôles de catalogue qui sont attribués au rôle principal existant. Si nécessaire, l’administrateur Open Catalog peut accorder des rôles de catalogue supplémentaires au rôle principal existant ou supprimer des rôles de catalogue pour ajuster les privilèges accordés au principal de service. Pour un exemple de comment RBAC fonctionne dans Open Catalog, voir RBAC exemple.

Configuration de stockage

Une configuration de stockage stocke une entité générée pour la gestion des identités et des accès (IAM) pour votre stockage Cloud externe et est créée lorsque vous créez un catalogue. La configuration de stockage est utilisée pour définir les valeurs permettant de connecter Open Catalog à votre stockage Cloud. Au cours du processus de création du catalogue, une entité IAM est générée et utilisée pour créer une relation de confiance entre le fournisseur de stockage Cloud et Open Catalog.

Lorsque vous créez un catalogue, vous fournissez les informations suivantes sur votre stockage Cloud externe :

Fournisseur de stockage Cloud

Informations

Amazon S3

<ul><li>Emplacement de base par défaut pour votre compartiment Amazon S3</li><li>Emplacements pour votre compartiment Amazon S3</li><li>ARN du rôle S3 </li><li>ID externe (facultatif)</li></ul>

Google Cloud Storage (GCS)

<ul><li>Emplacement de base par défaut pour votre compartiment GCS </li><li>Emplacements pour votre compartiment GCS</li></ul>

Azure

<ul><li>Emplacement de base par défaut pour votre conteneur Microsoft Azure</li><li>Emplacements pour votre conteneur Microsoft Azure</li><li>ID client Azure</li></ul>

Exemple de flux de travail

Dans l’exemple de flux de travail suivant, Bob crée une table Apache Iceberg™ intitulée Table1 et Alice lit les données de Table1.

  1. Bob utilise Apache Spark™ pour créer la table Table1 sous l’espace de noms Namespace1 dans le catalogue Catalog1 et insérer des valeurs dans Table1.

    Bob peut créer Table1 et y insérer des données car il utilise une connexion de service avec un principal de service qui dispose des privilèges nécessaires pour effectuer ces actions.

  2. Alice utilise Snowflake pour lire les données de Table1.

    Alice peut lire les données de Table1 car elle utilise une connexion de service avec un principal de service avec une intégration de catalogue qui dispose des privilèges pour effectuer cette action. Alice crée une table non gérée dans Snowflake pour lire les données de Table1.

Schéma illustrant un exemple de flux de travail pour Open Catalog

Sécurité et contrôle d’accès

Cette section traite de la sécurité et du contrôle d’accès.

Distribution d’identifiants

Pour sécuriser les interactions avec les connexions de service, Open Catalog fournit des informations d’identification de stockage temporaires au moteur de requête pendant l’exécution de la requête. Ces informations d’identification permettent au moteur de requête d’exécuter la requête sans nécessiter l’accès à votre stockage Cloud externe pour les tables Iceberg. Ce processus s’appelle « Distribution d’identifiants ».

Gestion des identités et des accès (IAM)

Open Catalog utilise l’entité de Gestion des identités et des accès (IAM) pour se connecter en toute sécurité à votre stockage afin d’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. Open Catalog conserve l’entité IAM pour votre emplacement de stockage.

Contrôle d’accès

Open Catalog applique le contrôle d’accès que vous configurez sur toutes les tables enregistrées auprès du service et régit la sécurité de toutes les requêtes des moteurs de requête de manière cohérente.

Open Catalog utilise un modèle de contrôle d’accès basé sur les rôles (RBAC) qui permet de configurer de manière centralisée l’accès des principaux de service Open Catalog aux catalogues, aux espaces de noms et aux tables.

Le RBAC d’Open Catalog utilise deux types de rôles différents pour déléguer des privilèges :

  • Rôles principaux : accordés aux principaux de service Open Catalog et analogues aux rôles dans d’autres systèmes de contrôle d’accès que vous accordez aux principaux de service.

  • Rôles du catalogue : configurés avec certains privilèges sur les ressources Open Catalog et accordés aux rôles principaux.

Pour plus d’informations, voir Contrôle d’accès.

Facturation

Open Catalog est gratuit pendant les six premiers mois après disponibilité générale. La facturation débutera le 30 avril 2025.

Lorsque la facturation commence, Snowflake facture votre compte pour les demandes adressées aux APIs REST prises en charge par le service Open catalog. Pour plus d’informations, voir le « Tableau des fonctionnalités sans serveur » dans la Table de consommation du service Snowflake.

Snowflake ne facture pas à votre compte les coûts de stockage de tables Iceberg. Votre fournisseur de stockage Cloud vous facture directement pour l’utilisation du stockage de données.