Renforcez les normes ouvertes avec Snowflake Innovations

Renforcez les normes ouvertes avec Snowflake Innovations


Les clients de Snowflake implémentent plusieurs modèles d’architecture différents avec Snowflake, notamment des lacs de données, des entrepôts de données et des maillages de données. Pour ce faire, les clients utilisent une combinaison de fonctionnalités Snowflake, notamment les tables externes, Snowpipe et le partage de données, entre autres. Nous avons vu l’impact de ces fonctionnalités, les clients étant enfin en mesure de générer de la valeur à partir des données qu’ils collectent depuis des mois ou des années.

Motivés par la simplicité de Snowflake et les riches fonctionnalités de la plate-forme, nous avons entendu des clients nous dire qu’ils souhaitaient apporter encore plus données à Snowflake afin d’alimenter leur variété de cas d’utilisation pris en charge par des lacs de données et des maillages. Plus précisément, les clients souhaitent utiliser les innovations de Snowflake pour résoudre trois défis auxquels ils sont généralement confrontés avec de grands ensembles de données : contrôle, coûtet interopérabilité. Comme annoncé récemment au Snowflake Summit 2022, Tables Iceberg combiner les capacités uniques de Snowflake avec Apache Iceberg et Parquet apache des projets open source pour résoudre ces défis et faciliter encore plus l’utilisation de Snowflake comme plate-forme pour prendre en charge l’architecture de votre choix.

Qu’est-ce qu’Apache Iceberg ?

Iceberg est plus facile à expliquer avec une expérience de pensée. Imaginez que vous ayez un millier de fichiers Parquet dans un bucket de stockage cloud. Si vous avez trois lecteurs différents de ces données, ils doivent tous savoir quels fichiers correspondent à une table. Il peut y avoir une table pointant vers tous les fichiers ou plusieurs tables pointant vers un sous-ensemble de fichiers. Ces utilisateurs peuvent également souhaiter connaître l’évolution de la table au fil du temps ou optimiser les requêtes sur la table. Les formats de table comme Iceberg sont conçus pour résoudre ce problème : ils fournissent des métadonnées de table riches en plus des fichiers.

Bien qu’il existe plusieurs formats de table parmi lesquels choisir, nous avons choisi de prendre en charge Iceberg car nous pensons qu’Iceberg représente le meilleur format de table de nouvelle génération. Iceberg est vraiment passionnant pour nous car il résout certains problèmes délicats pour les clients et les utilisateurs, notamment :

  • Indépendant du moteur : Iceberg a été conçu dès le départ pour être indépendant du moteur. Cela signifie que vous bénéficiez de fonctionnalités riches sur plusieurs moteurs analytiques et que les fonctionnalités critiques ne sont pas liées à un seul moteur.
  • Diversité de pensée : La Projet Iceberg voit une participation active et contribution de nombreuses organisations différentes et n’est lié à aucune entité commerciale. Cela signifie que le projet bénéficie d’idées provenant de nombreux points de vue différents et des besoins des clients. De plus, avec Iceberg, il n’y a aucune inquiétude quant à savoir qui contrôle le projet et à quelles fins.
  • Écosystème riche : De nombreux projets open source différents ont adopté ou étendu la prise en charge d’Apache Iceberg. De plus, le soutien commercial à l’Iceberg de première classe s’est accru. Cela signifie que les clients ont plus de capacités et d’options avec Iceberg.

Pour plus de détails sur les raisons d’envisager Iceberg, lisez ce billet de blog. Et si vous êtes intéressé par Iceberg, nous vous encourageons à consulter le Communauté des icebergs.

Que sont les tables Iceberg ?

Avez-vous déjà voulu une table Snowflake, avec ses fonctionnalités et ses performances, mais également voulu que la table utilise des formats ouverts ou votre propre stockage cloud ? Les tables Iceberg sont conçues pour répondre à votre cas d’utilisation.

Les tables Iceberg sont un tout nouveau type de table dans Snowflake et ressemblent aux tables natives de Snowflake. En fait, les tables Iceberg sont conçues pour utiliser les années d’expérience et les innovations utilisées pour les tables natives. Avec les produits alimentés par l’open source, il est courant d’avoir de nouvelles fonctionnalités qui semblent disjointes et séparées. Cependant, avec Iceberg Tables, nous avons plutôt essayé de les rendre très familiers et bien intégrés. Vous pouvez considérer les tables Iceberg comme des tables Snowflake qui utilisent des formats ouverts et un stockage en nuage fourni par le client.

Plus précisément, les tables Iceberg fonctionnent comme les tables natives Snowflake avec trois différences clés :

  1. Les métadonnées de la table sont au format Iceberg
  2. Les données sont stockées dans des fichiers Parquet
  3. Les métadonnées et les données de la table sont stockées dans le stockage fourni par le client

LEG3l3HeQTpQlh8PZYwlTTKu7nqKe I3DbtLr6s

Si Iceberg on Snowflake vous semble familier, c’est parce que nous lancement de la prise en charge de la table externe Iceberg plus tôt cette année. Ce lancement précédent permettait de lire les métadonnées Iceberg en tant que table externe dans Snowflake. Les tables Iceberg, en revanche, ressemblent beaucoup plus aux tables Snowflake natives. En fait, nous avons défini trois critères de conception pour les tables Iceberg qui aident à expliquer ce que sont les tables Iceberg.

RW eC moilw54wdAGVCUmw7HrQxeZjrLsTdYWaly1OX1 jPgvftC84Vr9 v 7WITCZmsYY2L3T2RIUHcYfxlneEhSrJtVTghCOSbiwVuUGe2iZsBF1

Dès le début, nous avons conçu les tables Iceberg autour de trois critères importants : elles doivent être une table de première classe, offrir des avantages de plate-forme complète et rester interopérables avec des outils en dehors de Snowflake. Nous pensons que la combinaison des innovations qui alimentent Snowflake avec des normes ouvertes débloquera des fonctionnalités et des cas d’utilisation qui étaient auparavant difficiles ou impossibles avec les formats ouverts.

Aperçu privé des tables Iceberg

Les tables Iceberg sont désormais en préversion privée sur les trois clouds pris en charge par Snowflake. Avec cet aperçu, il est possible de créer les deux tables Iceberg en utilisant le stockage fourni par le client avec des volumes externes, un autre nouveau concept que nous avons introduit. Dans cet aperçu, vous pouvez commencer à avoir une idée de la façon dont Snowflake apporte des fonctionnalités uniques aux normes ouvertes.

Création d’une table Iceberg

Comme mentionné, les tables Iceberg utilisent un stockage fourni par le client. Cela signifie que vous ne payez plus Snowflake pour les frais de stockage. Au lieu de cela, le stockage est facturé par votre fournisseur de cloud. La première étape de la création d’une table Iceberg consiste à créer un volume externe pour contenir les données et les métadonnées de la table Iceberg.

-- Create an External Volume to hold Parquet and Iceberg data
create or replace external volume my_ext_vol
STORAGE_LOCATIONS = 
(
	(
		NAME = 'my-s3-us-east-1'
		STORAGE_PROVIDER = 'S3'
		STORAGE_BASE_URL = 's3://my-s3-bucket/data/snowflake_extvol/'
		STORAGE_AWS_ROLE_ARN = '****'
	)
); 

Vous pouvez maintenant créer une ou plusieurs tables Iceberg à l’aide du volume externe. Remarquez qu’il y a un nouveau iceberg qualificatif de table qui distingue une table Iceberg d’une table Snowflake native. Dans cet exemple, nous allons également pré-remplir la table avec les données de notre table des ventes.

-- Create an Iceberg Table using my External Volume
create or replace iceberg table my_iceberg_table
	with EXTERNAL_VOLUME = 'my_ext_vol'
	as select id, date, first_name, last_name, address, region, order_number, invoice_amount from sales;

Vous avez maintenant une nouvelle table Iceberg appelée ma_table_iceberg, aucun travail supplémentaire n’est nécessaire. Vous pouvez commencer à utiliser cette table Iceberg comme n’importe quelle autre table dans Snowflake. Cela signifie que vous pouvez également faire des choses qui étaient auparavant difficiles ou impossibles avec d’autres formats de tableaux et moteurs. Voyons trois exemples de la façon dont cet aperçu privé des tables Iceberg avec Snowflake offre des fonctionnalités uniques et peut résoudre des problèmes généralement difficiles avec les seuls formats ouverts :

  1. Transactions multi-tables
  2. Masquage dynamique des données
  3. Sécurité au niveau des lignes

Transactions multi-tables

Certains formats de table ne prennent pas en charge les transactions multi-tables de par leur conception. Cependant, avec la flexibilité d’Iceberg et le moteur de requête Snowflake mature, c’est facile. Par exemple, supposons que vous vouliez supprimer les données client de deux tables Iceberg – ventes et clients ; vous pouvez le faire en une seule transaction avec Snowflake Iceberg Tables :

-- Delete from two Iceberg Tables at once - sales and customers
BEGIN;
DELETE FROM sales
	WHERE last_name="Smith" and first_name="Jamie";
DELETE FROM customers
	WHERE last_name="Smith" and first_name="Jamie";
COMMIT;

Sécurité au niveau des lignes et des colonnes

La mise en œuvre de la sécurité au niveau des lignes et des colonnes peut être difficile, encore plus avec les formats ouverts. Masquage dynamique des données pour la sécurité au niveau des colonnes est un autre exemple de fonctionnalité Snowflake facile à mettre en œuvre avec notre aperçu privé des tables Iceberg. Vous pouvez définir une politique de masquage, puis l’appliquer aux tables Iceberg. Dans cet exemple, nous pouvons masquer le champ d’adresse de la table que nous avons créée précédemment.

-- Create a masking policy to mask address
create or replace masking policy address_mask as (val string) returns string ->
	case
		when current_role() in ('DBA_ADMIN_ROLE') then val
		else '**HIDDEN**'
	end;
alter table if exists my_iceberg_table modify column ADDRESS set masking policy address_mask;

De même, appliquer Politiques d’accès aux lignes car la sécurité au niveau des lignes peut être facilement définie et appliquée aux tables Iceberg dès le départ. Il n’est pas nécessaire de lier différents produits open source ou cloud.

-- Create a row access policy to restrict access
create or replace row access policy rap_sales_manager_regions as (val string) returns boolean ->
'sales_executive_role' = current_role()
	or exists (
		select 1 from salesmanagerregions
			where sales_manager = current_role()
				and region = sales_region
                 )
;
alter table if exists my_iceberg_table add row access policy rap_sales_manager_regions on (region);

Cas d’utilisation des tables Iceberg

Deux questions courantes des clients ont été Quand dois-je utiliser une table Iceberg par rapport à une table native Snowflake, et Quel est le lien entre les tables Iceberg et les tables externes ? À long terme, nous nous concentrons sur le développement des trois types de tableaux pour les cas d’utilisation analytiques, car ils répondent à des besoins différents, comme nous l’avons également couvert dans ce billet de blog annonçant un aperçu privé des tables externes pour le stockage sur site.

HQLwYQxdtaFlLYUPdZwdUrVqsOPhdhoRk6O2Awe8tfbmhQjFAMlmSom EAn3RPAF0N0Z6NEMS5Z68pCoTRjG i7Bglj1u3aKspGtWoGk270eejah4ybSDt lYnkOQjzI7VW9uEZskvlhItufBvgihvg

Avec Iceberg Tables, notre objectif est de nous rapprocher le plus possible des tables natives Snowflake, sans rompre la compatibilité open source. Nous pensons qu’il est important de proposer des options aux clients et de préciser clairement ce qui est ouvert et ce qui ne l’est pas. Pour de nombreux clients, les tables Iceberg viendront compléter les tables Snowflake standard et les tables externes. En fait, vous pouvez utiliser l’aperçu privé pour voir à quel point il est facile de travailler avec les tables standard Snowflake et les tables Iceberg, même ensemble dans une seule base de données ou une seule requête.

Les tables Iceberg sont conçues pour relever les trois défis mentionnés au début : contrôle, coûtet interopérabilité.

  • Contrôler: Au lieu d’utiliser les formats Snowflake, les tables Iceberg utilisent des formats de table et de fichier ouverts et stockent les données dans le stockage fourni par le client.
  • Faible coût: Les tables Iceberg utilisent le stockage fourni par le client. Ainsi, si vous avez copié des données entre des systèmes, vous pouvez désormais travailler avec un seul ensemble de données gérées par Snowflake, stockées et facturées séparément.
  • Écosystème : Les outils qui savent fonctionner avec Iceberg et Parquet fonctionneront avec les tables Iceberg, tandis que Snowflake peut fournir un seul volet pour la sécurité, la gestion, la maintenance et une variété de charges de travail telles que la collaboration, la science des données et les applications.

Aperçu privé et au-delà

Cet aperçu privé d’Iceberg Tables n’est que le début. Au cours des prochains trimestres, nous prévoyons d’ajouter de nouvelles fonctionnalités pour étendre davantage la puissance et la flexibilité des tables Iceberg, notamment une importation de tables facile à utiliser et un métastore Iceberg. Certaines fonctionnalités de Snowflake seront également activées dans les futures versions, telles que le chiffrement de table et la réplication de table.

Si vous êtes intéressé par les tables Iceberg, nous vous encourageons à tester cet aperçu privé. Nous prévoyons que vous serez ravis de la flexibilité, de l’utilité et des performances des tables Iceberg. Nos équipes de produits et d’ingénierie attendent avec impatience les commentaires des clients et les cas d’utilisation pris en charge par les tables Iceberg.

Inscrivez-vous pour un aperçu privé

Si vous souhaitez essayer les tables Iceberg dans Snowflake, inscrivez-vous pour l’aperçu privé qui est maintenant disponible en contactant votre représentant de compte Snowflake.

Pour en savoir plus sur les Tables Iceberg, consultez ces nouvelles ressources :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.