Tables hybrides

Une table hybride est un type de table Snowflake optimisé pour une faible latence et un débit élevé à l’aide de lectures et d’écritures aléatoires basées sur un index. Les tables hybrides fournissent un moteur de stockage basé sur les lignes qui prend en charge le verrouillage de ligne pour les scénarios de haute concurrence. Les tables hybrides appliquent également des contraintes d’unicité et d’intégrité référentielle, qui sont essentielles pour les charges de travail transactionnelles. Vous pouvez utiliser une table hybride avec d’autres tables et fonctionnalités Snowflake pour optimiser les charges de travail Unistore qui rassemblent les données transactionnelles et analytiques en une seule plateforme.

Les cas d’utilisation susceptibles de bénéficier des tables hybrides sont les suivants :

  • Métadonnées pour les applications et les workflows, telles que le maintien de l’état d’un workflow d’ingestion qui nécessite des mises à jour à haute concurrence d’une table unique à partir de milliers de tâches worker parallèles.

  • Service à faible latence d’agrégats précalculés via une API ou une interface utilisateur.

  • Applications transactionnelles légères utilisant des modèles de données relationnels.

Astuce

Avant de créer et d’utiliser des tables hybrides, vous devez vous familiariser avec certaines fonctions et limites non prises en charge.

Architecture

Les tables hybrides s’intègrent parfaitement à l’architecture existante de Snowflake. Les clients se connectent au même service de base de données Snowflake. Les requêtes sont compilées et optimisées dans la couche de services Cloud et exécutées dans le même moteur de requête et les mêmes entrepôts virtuels que les tables standard. Cette architecture présente plusieurs avantages clés :

  • Les fonctionnalités de la plateforme Snowflake telles que la gouvernance des données fonctionnent d’emblée avec les tables hybrides.

  • Vous pouvez exécuter des charges de travail hybrides mélangeant des requêtes opérationnelles et analytiques.

  • Vous pouvez joindre des tables hybrides à d’autres tables Snowflake ; les requêtes sont exécutées de manière native et efficace dans le même moteur de requête. Aucune fédération n’est obligatoire.

  • Vous pouvez exécuter une transaction atomique sur des tables hybrides et d’autres tables Snowflake. Il n’est pas nécessaire d’orchestrer votre propre validation en deux phases.

Architecture Unistore

Les tables hybrides s’appuient sur un magasin de lignes comme magasin de données principal pour offrir d’excellentes performances de requêtes opérationnelles. Lorsque vous écrivez dans une table hybride, les données sont écrites directement dans le magasin de lignes. Les données sont copiées de manière asynchrone dans le stockage d’objets afin d’améliorer les performances et l’isolation de la charge de travail des analyses volumineuses, sans incidence sur les charges de travail opérationnelles en cours. Certaines données peuvent également être mises en cache au format colonne dans votre entrepôt afin d’améliorer les performances des requêtes analytiques. Il vous suffit d’exécuter des instructions SQL sur la table hybride logique et l’optimiseur de requêtes de Snowflake décide où lire les données afin de fournir les meilleures performances. Vous obtenez une vue cohérente de vos données sans avoir à vous soucier de l’infrastructure sous-jacente.

Note

Étant donné que le stockage principal des tables hybrides est un magasin de lignes, les tables hybrides ont généralement une empreinte de stockage plus grande que les tables standard. La principale raison de cette différence est que les données en colonnes des tables standard atteignent souvent des taux de compression plus élevés. Pour obtenir des informations sur les coûts de stockage, voir Évaluation du coût des tables hybrides.

Fonctionnalités

Les tables hybrides offrent des fonctionnalités supplémentaires qui ne sont pas prises en charge par les autres types de table Snowflake.

Fonctionnalité

Tables hybrides

Tables standards

Disposition des données principales

Orientation lignes, avec un stockage secondaire en colonnes

Micro-partitions en colonnes

Verrouillage

Au niveau de la ligne

Partition ou table

Contraintes PRIMARY KEY

Obligatoire, appliqué

Facultatif ; non appliqué

Contraintes FOREIGN KEY

Facultatif, appliqué (intégrité référentielle)

Facultatif ; non appliqué

Contraintes UNIQUE

Facultatives (sauf pour PRIMARY KEY), appliquées

Facultatif ; non appliqué

Contraintes NOT NULL

Facultatives (sauf pour PRIMARY KEY), appliquées

Obligatoire, appliqué

Index

Pris en charge à des fins de performances ; mis à jour de manière synchrone lors de l’écriture

Le service d’optimisation de la recherche indexe les colonnes pour de meilleures performances en matière de recherche de points ; les lots sont mis à jour/maintenus de manière asynchrone

Une contrainte est appliquée lorsqu’elle empêche une colonne d’être mise à jour de certaines manières. Par exemple, une colonne déclarée NOT NULL ne peut pas contenir une valeur NULL. Une tentative de copie ou d’insertion d’une valeur NULL dans une colonne NOT NULL entraîne toujours une erreur.

Pour les tables hybrides, vous ne pouvez pas définir la propriété NOT ENFORCED sur les contraintes PRIMARY KEY, FOREIGN KEY et UNIQUE. La définition de cette propriété entraîne une erreur « propriété de contrainte non valide ». Pour plus d’informations sur les règles relatives aux contraintes, voir Contraintes des tables hybrides.

Une contrainte est obligatoire lorsqu’une ou plusieurs colonnes d’une table doivent avoir une telle contrainte, ce qui n’est vrai que pour les contraintes PRIMARY KEY sur les tables hybrides.

Quand utiliser une table hybride ?

Même si les tables standards Snowflake devraient offrir de meilleures performances en cas de requêtes analytiques volumineuses, les tables hybrides permettent d’obtenir des résultats plus rapides en cas de requêtes opérationnelles à court terme. Les tables hybrides assurent un haut niveau de concurrence et une faible latence pour de nombreuses charges de travail. Les types de requêtes suivants sont les plus susceptibles de bénéficier des tables hybrides :

  • Lectures de points aléatoires basées sur un index qui récupèrent un petit nombre d’enregistrements, tels que les objets des clients

  • Écritures aléatoires à haute concurrence, y compris les insertions, les mises à jour et les fusions

Les applications utilisent généralement une combinaison de tables hybrides et de tables standard, avec différents ensembles de données stockés dans chaque type de table. Par exemple, vous pouvez avoir des données que vous chargez, analysez et regroupez fréquemment en masse à des fins d’analytiques, et d’autres données auxquelles vous accédez une ligne à la fois, en les filtrant sur une colonne ID à haute concurrence. Vous pouvez combiner l’utilisation de tables standard et de tables hybrides dans une même base de données en fonction des besoins de votre charge de travail.