Aller au contenu principal

Types de table Databricks Unity Catalog

Unity Catalog prend en charge trois types de tables principaux : les tables gérées, externes et étrangères. Chaque type diffère dans la manière dont les données sont stockées, gérées et régies.

Tables gérées

Les tables gérées sont le type de table default et recommandé. Unity Catalog gère le cycle de vie des données, l'emplacement de stockage et les optimisations. Lorsque vous supprimez une table gérée, les métadonnées et les fichiers de données sous-jacents sont supprimés.

Les tables gérées sont prises en charge par Delta Lake ou Apache Iceberg et offrent :

  • Optimisation automatique pour des coûts de stockage et de compute réduits
  • Performances de query plus rapides pour tous les types de clients
  • Maintenance automatique des tables
  • Accès sécurisé pour les clients non-Databricks via des APIs ouvertes
  • Mises à niveau automatiques vers les dernières fonctionnalités de la plateforme

Les fichiers de données sont stockés dans le schéma ou le catalogue contenant le tableau. Consultez les tables gérées Unity Catalog pour Delta Lake et Apache Iceberg.

Tables externes

Les tables externes référencent les données stockées dans le stockage cloud que vous gérez. Unity Catalog gère l'accès aux données mais ne gère pas le cycle de vie des données, les optimisations ou le layout de stockage. Lorsque vous supprimez une table externe, seules les métadonnées du catalogue sont supprimées et les fichiers de données sous-jacents restent.

Les tables externes Unity Catalog prennent en charge les formats Delta Lake, CSV, JSON, AVRO, PARQUET, ORC et TEXT. Databricks vous recommande d'utiliser le format Delta Lake, car il offre des garanties transactionnelles et des optimisations de performances que les autres formats n'ont pas.

Utilisez des tables externes lorsque vous avez besoin de :

  • Enregistrer les données existantes qui ne sont pas compatibles avec les tables gérées par Unity Catalog
  • Fournir un accès direct aux données à partir de clients non-Databricks qui ne prennent pas en charge d'autres modèles d'accès externes

Consultez Utiliser des tables externes.

Tables étrangères

Les tables externes (également appelées tables fédérées) sont des tables en lecture seule gérées par un catalogue externe enregistré dans Unity Catalog. Les systèmes externes gèrent les données et les métadonnées, tandis qu'Unity Catalog ajoute la gouvernance des données pour l'interrogation.

Databricks prend en charge deux méthodes pour l'enregistrement des tables étrangères :

  • Fédération de query : utilise des connexions JDBC sécurisées à des systèmes de données externes comme PostgreSQL et MySQL
  • Fédération de catalogues : connecte des catalogues externes pour query les données directement dans le stockage de fichiers

Les tables étrangères utilisant le format Delta Lake manquent de nombreuses optimisations disponibles dans les tables gérées par Unity Catalog. Pour les charges de travail de production ou les datasets fréquemment interrogés, migrez vers les tables gérées par Unity Catalog pour de meilleures performances. Consultez Travailler avec des tables étrangères.

Comparaison des types de table

Le tableau suivant compare les trois types de tables :

Fonctionnalité

Tables gérées

Tables externes

Tables étrangères

Gestion du cycle de vie des données

Unity Catalog gère

Vous gérez

Géré par le système externe

Emplacement de stockage.

Unity Catalog gère

Vous spécifiez

Géré par le système externe

Optimisations automatiques

Oui

Limité

Non

Formats pris en charge

Delta Lake, Apache Iceberg

Delta Lake (recommandé), CSV, JSON, AVRO, PARQUET, ORC, TEXT

Dépend du système externe

Données supprimées le DROP TABLE

Oui

Non

Non

Idéal pour

Charges de travail de production, données fréquemment interrogées

Intégrations héritées, données existantes

Migration depuis des systèmes externes, accès temporaire

Fonctionnalité

Tables gérées

Tables externes

Tables étrangères

Gestion du cycle de vie des données

Unity Catalog gère

Vous gérez

Géré par le système externe

Emplacement de stockage.

Unity Catalog gère

Vous spécifiez

Géré par le système externe

Optimisations automatiques

Oui

Limité

Non

Formats pris en charge

Delta Lake, Apache Iceberg

Delta Lake (recommandé), CSV, JSON, AVRO, PARQUET, ORC, TEXT

Dépend du système externe

Données supprimées le DROP TABLE

Oui

Non

Non

Idéal pour

Charges de travail de production, données fréquemment interrogées

Intégrations héritées, données existantes

Migration depuis des systèmes externes, accès temporaire

Autres types de tables

Databricks prend également en charge les types de tables spécialisés pour des cas d'utilisation spécifiques :

  • Tables de streaming : datasets de LakeFlow Pipelines pris en charge par Delta Lake avec une logique de traitement incrémentiel
  • **Vues matérialisées** : Datasets de Lakeflow Pipelines adossés à Delta Lake qui matérialisent les résultats de query à l'aide d'une logique de flux géré

Types de table hérités

Les types de table hérités suivants sont pris en charge pour la rétrocompatibilité, mais ne sont pas recommandés pour les nouveaux développements.

Tables Hive

Les tables Hive sont gérées par le métastore Hive hérité et utilisent des modèles hérités, notamment les codecs Hive SerDe et la syntaxe Hive SQL. Default, les tables enregistrées à l'aide du Hive metastore hérité stockent les données dans la racine DBFS héritée.

Databricks recommande de migrer toutes les tables de l'ancien HMS vers Unity Catalog. Voir les objets de base de données dans le Hive metastore hérité.

Vous pouvez éventuellement fédérer un Hive metastore à Unity Catalog et accéder aux tables en tant que tables externes dans Unity Catalog. Consultez Fédération du Hive metastore : activez Unity Catalog pour gouverner les tables enregistrées dans un Hive metastore.

Apache Spark prend en charge l'enregistrement et l'interrogation des tables Hive, mais les codecs Hive SerDe ne sont pas optimisés pour Databricks. Enregistrez les tables Hive uniquement lorsque vous devez prendre en charge les queries sur des données écrites par des systèmes externes. Consultez la table Hive (héritée).

Tables en direct

Le terme tables dynamiques fait référence à une implémentation antérieure de fonctionnalités désormais disponibles sous la forme de vues matérialisées . Mettez à jour le code hérité qui fait référence aux tables actives pour utiliser la syntaxe des vues matérialisées. Consultez Spark Declarative Pipelines et les vues matérialisées.