Utilisation des tables Apache Iceberg™ avec Snowflake Open Catalog dans Snowflake

Utilisez des Apache Iceberg™ tables dans Snowflake pour travailler avec Snowflake Open Catalog.

Qu’est-ce que Snowflake Open Catalog ?

Open Catalog est une implémentation de catalogue pour Iceberg construit sur le protocole REST Apache Iceberg open source. Pour en savoir plus, consultez la documentation Snowflake Open Catalog.

Snowflake prend en charge les options suivantes pour travailler avec Open Catalog :

Considérations

Lorsque vous utilisez Snowflake avec Open Catalog, tenez compte des considérations suivantes :

Stockage

Configuration pour la synchronisation des tables Iceberg gérées par Snowflake

Accès aux tables

  • Les tables Iceberg gérées par Snowflake que vous synchronisez avec Open Catalog sont en lecture seule dans Open Catalog.

  • Snowflake peut effectuer des requêtes mais ne peut pas écrire dans les tables gérées par Open Catalog.

Différences terminologiques

Cette section résume les différences clés de terminologie entre Snowflake et Open Catalog.

Terme Snowflake

Terme Open Catalog

Base de données

Open Catalog utilise des catalogues, qui sont comme des bases de données dans Snowflake. Dans Open Catalog, vous créez une ou plusieurs ressources de catalogue pour organiser les tables Iceberg sous des espaces de noms. Pour plus d’informations, consultez Catalogue dans la documentation Open Catalog.

Lorsque vous synchronisez une table gérée par Snowflake avec Open Catalog, Snowflake synchronise la table avec le catalogue associé à l’intégration du catalogue de la table en utilisant deux espaces de noms parents. Les espaces de noms correspondent à la base de données et au schéma de la table dans Snowflake. Par exemple, si vous avez une table Iceberg db1.public.table1 enregistrée dans Snowflake et que vous spécifiez catalog1 dans l’intégration de catalogue, elle est synchronisée avec Open Catalog et porte le nom complet suivant : catalog1.db1.public.table1.

Schéma

Dans Open Catalog, les notions de schéma et d’espace de noms sont synonymes et peuvent être utilisées de manière interchangeable.

Namespace est affiché dans l’interface utilisateur de Open Catalog. Open Catalog utilise des espaces de noms pour contenir une collection d’objets et le terme _namespace_ est principalement utilisé dans la documentation de Open Catalog. Pour plus d’informations sur les espaces de noms, voir Espace de noms.

Toutefois, si vous utilisez un moteur de requête tiers, comme Apache Spark, et que vous exécutez la commande CREATE SCHEMA ou CREATE DATABASE, vous créez un espace de noms dans Open Catalog. Vous pouvez également exécuter la commande CREATE NAMESPACE pour créer un espace de noms.

Espace de noms

Comme Snowflake, Open Catalog utilise également des espaces de noms, mais avec des différences clés par rapport à la façon dont Snowflake utilise les espaces de noms.

Dans Open Catalog, un catalogue comprend des espaces de noms de premier niveau, que vous définissez, ainsi qu’un nombre quelconque d’espaces de noms imbriqués, que vous définissez également.

Les espaces de noms imbriqués vous permettent d’enregistrer des tables portant le même nom dans le même catalogue. Par exemple, un catalogue nommé customers peut contenir les tables customerdata suivantes, qui sont regroupées sous une <région> d’espace de noms de premier niveau et un <état> d’espace de noms imbriqués :

  • customers.northeast.maine.customerdata

  • customers.northeast.vermont.customerdata

De même, dans Open Catalog, vous pouvez regrouper des tables sous n’importe quel espace de noms dans la hiérarchie des espaces de noms, y compris les espaces de noms de premier niveau.

Pour de plus amples informations sur les espaces de noms, y compris un diagramme conceptuel d’un échantillon de la structure Open Catalog, voir concepts clés d’Open Catalog.

Role

Dans Open Catalog, les rôles principaux sont semblables aux rôles dans Snowflake mais avec des différences clés. Vous n’accordez pas de privilèges à un rôle principal. Au lieu de cela, vous accordez des privilèges à un rôle de catalogue, que vous accordez ensuite à un rôle principal, puis vous accordez le rôle principal à un principal de service, conférant ainsi les privilèges au principal de service. De même, vous ne pouvez pas attribuer de rôles principaux à d’autres rôles principaux. Vous ne pouvez accorder qu’un seul rôle principal à un principal de service.

Vous pouvez utiliser un rôle principal pour regrouper logiquement des principaux de service. Le champ d’application d’un rôle principal s’étend à tous les catalogues. De même, il n’y a pas différents types de rôles principaux. Pour plus d’informations, voir Rôle principal dans la documentation Open Catalog.

Rôle de base de données

Open Catalog utilise des rôles de catalogue, qui sont comme les rôles de base de données dans Snowflake. Les rôles de catalogue spécifient un ensemble d’autorisations pour des actions sur un catalogue ou des objets du catalogue. Le champ d’application d’un rôle de catalogue est le catalogue dans lequel il est créé.

Dans Open Catalog, vous accordez des privilèges aux rôles de catalogue. Ensuite, vous accordez des rôles de catalogue à des rôles principaux, puis vous accordez des rôles principaux à des principaux de service, ce qui permet d’accéder aux ressources. Vous pouvez attribuer plusieurs rôles de catalogue à un rôle principal, mais un seul rôle principal à un principal de service. Pour plus d’informations, voir Rôle de catalogue dans la documentation Open Catalog.

Utilisateur

Dans le contexte du contrôle d’accès, il n’y a pas de notion d’utilisateur dans Open Catalog.

Dans Open Catalog, les privilèges sont accordés aux principaux de service et non aux utilisateurs. Les moteurs de requête utilisent des principaux de service pour se connecter aux catalogues. Pour plus d’informations, voir Service principal dans la documentation Open Catalog.