Comment FoundationDB propulse les métadonnées Snowflake

Comment FoundationDB propulse les métadonnées Snowflake


FoundationDB est maintenant Open source. Après des années de développement en interne, ce magasin clé-valeur distribué, évolutif et transactionnel est accessible à tous. Mais ce que vous ne savez peut-être pas, c’est que Snowflake utilise et fait progresser FoundationDB depuis 2014, lorsque nous l’avons adopté pour la première fois comme magasin de métadonnées. Quel est le résultat et pourquoi devriez-vous vous en soucier ?

FoundationDB s’est avéré extrêmement fiable. C’est un élément clé de notre architecture et nous a permis de créer des fonctionnalités vraiment étonnantes et différenciantes. Alors que Snowflake est passé d’une poignée de clients en 2015 à plus de 1000 récemment, FoundationDB a continué à progresser et à évoluer avec nous.

Collectivement, notre magasin de métadonnées est de taille minuscule par rapport aux données stockées de nos clients. Les modèles de lecture et d’écriture de nos métadonnées s’apparentent davantage au traitement des transactions en ligne (OLTP) que les modèles d’utilisation d’un entrepôt de données analytiques ou d’un système de traitement analytique en ligne (OLAP) qui est Snowflake. À ces fins, notre magasin de métadonnées nécessite :

  • Très haute fréquence de petites lectures et écritures avec une latence inférieure à la milliseconde
  • Prise en charge du stockage des métadonnées dont les modèles d’accès, le volume et la taille varient considérablement
  • Bonnes performances pour la lecture de petites plages de données

L’exécution de Snowflake en tant qu’entrepôt de données en tant que service nécessite une haute disponibilité même pendant les mises à niveau logicielles. Par conséquent, plusieurs versions du service peuvent être déployées en même temps. Et les services accédant aux métadonnées doivent être capables de gérer plusieurs versions d’objets de métadonnées.

Lors de la sélection d’un magasin de métadonnées, nous préférons les magasins clé-valeur pour la simplicité et la flexibilité qu’ils apportent à l’évolution du schéma. De plus, nos services cloud s’attendent à ce que le magasin sous-jacent soit Conforme à l’ACID. FoundationDB répond parfaitement à ces exigences. Il prend en charge la triple réplication des données pour la disponibilité et dispose d’une fonction de notification de changement de valeur appelée « watch ».

La couche de services cloud de Snowflake est composée d’un ensemble de services sans état qui gèrent les entrepôts virtuels, l’optimisation des requêtes, les transactions et autres, comme illustré à la Fig. 1. Pour effectuer leurs tâches, ces services s’appuient sur de riches métadonnées stockées dans FoundationDB. Pour une haute disponibilité, non seulement nous répliquons trois fois les métadonnées, mais nous les stockons également dans plusieurs zones de disponibilité du cloud. Les métadonnées sensibles sont chiffrées à l’aide de notre infrastructure de gestion des clés.

image1 4

Pour faciliter l’ajout de nouveaux objets de métadonnées, nous avons créé une couche de mappage d’objets au-dessus des valeurs-clés. La définition du schéma, l’évolution et la gestion des versions des métadonnées sont également effectuées par cette couche. Les objets visibles par l’utilisateur, tels que les définitions de catalogue, les utilisateurs, les sessions, le contrôle d’accès, l’historique des copies et autres, sont tous accompagnés de métadonnées. Chaque instruction exécutée a une entrée de métadonnées, ainsi que des statistiques de son exécution. L’état des transactions et les files d’attente de verrouillage sont également conservés dans FoundationDB. En fait, les files d’attente de verrouillage sont implémentées à l’aide de la fonction de surveillance mentionnée précédemment. Une instruction de manipulation de données est mise en file d’attente dans la file d’attente de verrouillage d’une ressource et une surveillance FoundationDB notifie l’instruction lorsqu’elle atteint le début de la file d’attente de la ressource. Il existe également des métadonnées invisibles pour l’utilisateur telles que les informations de distribution de données, les serveurs et les clés de chiffrement.

Lorsque nous avons construit Snowflake, nous avons construit non seulement un entrepôt de données traditionnel, mais également un service cloud. Des fonctionnalités telles que les feuilles de calcul et la facturation, qui sont traditionnellement dissociées de l’entrepôt de données, sont au cœur de l’offre cloud de Snowflake. Chaque aspect de Snowflake exploite les métadonnées. En conséquence, nous avons conçu un ensemble étonnant de nouvelles fonctionnalités en tant qu’opérations purement de métadonnées.

Par exemple, les métadonnées permettent au fonction de clonage sans copie, qui permet de cloner des tables, des schémas et des bases de données sans avoir à répliquer les données. Les métadonnées de chaque table gardent une trace de l’ensemble des micro-partitions qui appartiennent à la table à chaque version. L’opération de clonage copie simplement l’enregistrement des micro-partitions, à une version spécifique, dans la table fraîchement clonée. De plus, les métadonnées permettent de voyager dans le temps en donnant accès aux versions antérieures des micro-partitions.

Une fonction puissante telle que Partage de données de flocon de neige est également réalisé par une opération de métadonnées uniquement. L’objet de partage de données est créé avec des références aux objets de catalogue source et de destination et aux objets de contrôle d’accès. Le partage de données ne copie pas les données du fournisseur, il expose les données au consommateur via l’objet de partage de données.

Lors de la compilation d’une requête, nous supprimons les micro-partitions à analyser en analysant les métadonnées de distribution des données, améliorant ainsi les performances. Dans certains cas, l’optimiseur peut répondre à une requête sans lire les données de la table, mais en évaluant simplement les métadonnées de distribution des données.

À l’avenir, vous pouvez vous attendre à des fonctionnalités encore plus intéressantes activées par les métadonnées de Snowflake et optimisées par FoundationDB. L’équipe d’ingénieurs de Snowflake est impatiente de contribuer à FoundationdDB open source et collaborer avec sa communauté.

Liens supplémentaires

Laisser un commentaire

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