Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
La mise à l’échelle automatique Lakebase est disponible dans les régions suivantes : eastus, eastus2, centralus, southcentralus, westus, westus2, canadacentral, brazilsouth, northeurope, uksouth, westeurope, australiaeast, centralindia, southeastasia
La version Lakebase Autoscaling est la dernière de Lakebase, avec l'évolutivité automatique, la mise à l’échelle jusqu'à zéro, la création de branches et la restauration instantanée. Si vous êtes un utilisateur Lakebase Provisionné, consultez Lakebase Provisioned.
Les tables synchronisées vous permettent de proposer des données lakehouse via Lakebase Postgres. Les tables du catalogue Unity se synchronisent avec Postgres afin que les applications puissent interroger les données lakehouse directement avec une faible latence. Ce processus est communément appelé ETL inverse. Le lakehouse est optimisé pour l’analytique et l’enrichissement, tandis que Lakebase est conçu pour les charges de travail opérationnelles qui nécessitent des requêtes de type recherche rapide et une cohérence transactionnelle.
Qu’est-ce que les tables synchronisées ?
Les tables synchronisées vous permettent de servir des données de niveau analytique à partir de Unity Catalog via Lakebase Postgres, ce qui permet aux applications qui ont besoin de requêtes à faible latence (sous-10 ms) et de transactions ACID complètes. Ils permettent de combler le fossé entre le stockage analytique et les systèmes opérationnels en gardant vos données prêtes à servir dans des applications en temps réel.
Sources prises en charge
Les tables synchronisées prennent en charge les types de sources de catalogue Unity suivants :
- Tables Delta managées et externes
- Tables Iceberg managées et externes
- Vues et vues matérialisées
Fonctionnement
Les tables synchronisées Databricks créent une copie managée de vos données Unity Catalog dans Lakebase. Lorsque vous créez une table synchronisée, vous obtenez :
- Table synchronisée dans le catalogue Unity qui fait référence au pipeline de synchronisation
- Une table Postgres dans Lakebase (en lecture seule, interrogeable par vos applications)
Par exemple, vous pouvez synchroniser des tables d'or, des fonctions conçues ou des sorties ML depuis analytics.gold.user_profiles vers une nouvelle table analytics.gold.user_profiles_synced synchronisée. Dans Postgres, le nom du schéma du catalogue Unity devient le nom du schéma Postgres. Cela s’affiche donc comme "gold"."user_profiles_synced"suit :
SELECT * FROM "gold"."user_profiles_synced" WHERE "user_id" = 12345;
Les applications se connectent avec des pilotes Postgres standard et interrogent les données synchronisées en même temps que leur propre état opérationnel.
Avertissement
Bien qu’il soit possible de modifier une table synchronisée directement dans Postgres, Azure Databricks recommande strictement d’exécuter uniquement des requêtes en lecture pour protéger l’intégrité des données avec la source. Pour connaître les opérations prises en charge sur les tables synchronisées, consultez Opérations prises en charge.
Les pipelines de synchronisation utilisent les pipelines déclaratifs Spark managés Lakeflow pour mettre à jour continuellement la table synchronisée Unity Catalog et la table Postgres avec les modifications de la table source. Chaque synchronisation peut utiliser jusqu’à 16 connexions à votre base de données Lakebase.
Lakebase Postgres prend en charge jusqu’à 1 000 connexions simultanées avec des garanties transactionnelles, afin que les applications puissent lire des données enrichies tout en gérant les insertions, mises à jour et suppressions dans la même base de données.
Modes de synchronisation
Choisissez le mode de synchronisation approprié en fonction des besoins de votre application :
| Mode | Description | Quand utiliser | Efficacité |
|---|---|---|---|
| Instantané | Copie unique de toutes les données | Les modifications de la source affectent 10 % des lignes par cycle, ou la source ne prend pas en charge CDF (vues, tables Iceberg) | 10x plus efficace si vous modifiez >10% de données sources |
| Déclenché | Mises à jour planifiées qui s’exécutent à la demande ou à intervalles | Les lignes sources changent selon une cadence connue. Les insertions, mises à jour et suppressions sont propagées chaque actualisation. | Bon équilibre des coûts et des retards. Coûteux à des intervalles de 5 minutes< |
| En continu | Diffusion en temps réel avec secondes de latence | Les modifications doivent apparaître dans Lakebase en temps quasi réel | Retard le plus bas, coût le plus élevé. Intervalles minimum de 15 secondes |
Les modes déclenchés et continus nécessitent que le flux de données modifiées (CDF) soit activé sur votre table source. Si CDF n’est pas activé, un avertissement s’affiche dans l’interface utilisateur avec la commande exacte ALTER TABLE à exécuter. Pour plus d’informations sur le flux de données modifiées, consultez Utiliser le flux de données modifiées Delta Lake sur Databricks.
Exemples de cas d’usage
Vous pouvez utiliser des tables synchronisées pour les cas d’usage de service de données comme :
- Moteurs de personnalisation qui fournissent de nouveaux profils utilisateur aux Applications Databricks
- Applications qui fournissent des prédictions de modèle ou des valeurs de caractéristiques calculées dans le « lakehouse »
- Tableaux de bord destinés aux clients qui fournissent des indicateurs de performance clés en temps réel
- Services de détection des fraudes qui fournissent des scores de risque pour agir immédiatement
- Outils de support qui servent des enregistrements clients enrichis à partir de données lakehouse
Créer une table synchronisée (interface utilisateur)
Le flux de travail de l’interface utilisateur est décrit ci-dessous.
Prerequisites
Tu as besoin de:
- Un espace de travail Databricks avec Lakebase activé.
- Un projet Lakebase (voir Créer un projet).
- Table de catalogue Unity à synchroniser.
- Autorisations pour créer des tables synchronisées. Vous devez USE_SCHEMA et CREATE_TABLE pour tous les schémas que vous utilisez. Les options de catalogue et de schéma dans le flux de création de table synchronisée répertorient uniquement les schémas où votre identité dispose de ces privilèges.
Pour la planification de la capacité et la compatibilité des types de données, consultez La planification des types de données et de la compatibilité et de la capacité.
Étape 1 : Sélectionner votre table source
Accédez au catalogue dans la barre latérale de l’espace de travail et sélectionnez la table catalogue Unity que vous souhaitez synchroniser.
Étape 2 : Activer le flux de données modifiées (si nécessaire)
Si vous envisagez d’utiliser des modes de synchronisation déclenchée ou continue , votre table source a besoin d’un flux de données modifiées activé. Vérifiez si votre table a déjà le CDF activé, ou exécutez cette commande dans un éditeur SQL ou un notebook :
ALTER TABLE your_catalog.your_schema.your_table
SET TBLPROPERTIES (delta.enableChangeDataFeed = true)
Remplacez your_catalog.your_schema.your_table par le nom réel de votre table.
Étape 3 : Créer une table synchronisée
Cliquez sur Créer une>table synchronisée à partir de la vue détails de la table.
Étape 4 : Configurer
Dans la boîte de dialogue Créer une table synchronisée :
Les listes de catalogues et de schémas incluent uniquement les schémas catalogue Unity où l’utilisateur actuel dispose de privilèges USE_SCHEMA et CREATE_TABLE . Si vous ne voyez pas de schéma attendu, confirmez vos autorisations auprès de votre administrateur de catalogue.
- Nom de la table : entrez un nom pour votre table synchronisée (elle est créée dans le même catalogue et le même schéma que votre table source). Cela crée une table synchronisée de catalogue Unity et une table Postgres que vous pouvez interroger.
- Type de base de données : Choisissez Lakebase Serverless (mise à l’échelle automatique).
- Mode de synchronisation : choisissez instantané, déclenché ou continu en fonction de vos besoins (voir les modes de synchronisation ci-dessus).
- Configurez vos sélections de projet, de branche et de base de données.
- Vérifiez que la clé primaire est correcte (généralement détectée automatiquement).
Si vous avez choisi le mode déclenché ou continu et n’avez pas encore activé le flux de données modifiées, vous verrez un avertissement avec la commande exacte à exécuter. Pour connaître les questions de compatibilité des types de données, consultez Types de données et compatibilité.
Cliquez sur Créer pour créer la table synchronisée.
Étape 5 : Surveiller
Après la création, surveillez la table synchronisée dans le catalogue. L’onglet Vue d’ensemble affiche l’état de synchronisation, la configuration, l’état du pipeline et le dernier horodatage de synchronisation. Utilisez La synchronisation maintenant pour l’actualisation manuelle.
Planifier ou déclencher des synchronisations ultérieures
L’instantané initial s’exécute automatiquement lors de la création. Pour les modes instantané et déclenché , les synchronisations suivantes doivent être déclenchées explicitement. Le mode continu est auto-gérant.
Tâche de pipeline de synchronisation des tables de la base de données
La tâche Database Table Sync pipeline dans les travaux Lakeflow exécute le pipeline d'une table synchronisée en tant qu'étape de traitement de workflow. Configurez la tâche avec un déclencheur de mise à jour de table ou un planning.
Déclencheur pour les mises à jour de la table source
Déclenche le travail lorsque la table de catalogue Unity source est mise à jour. Avec le mode déclenché , seules les nouvelles modifications sont appliquées de manière incrémentielle, ce qui donne une actualisation quasi en temps réel sans le coût permanent du mode continu.
- Dans la barre latérale, cliquez sur Flux de travail.
- Cliquez sur Créer un travail ou ouvrez un travail existant.
- Sous l’onglet Tâches , cliquez sur + Ajouter un autre type de tâche.
- Sous Ingestion et Transformation, sélectionnez pipeline de synchronisation de table de base de données.
- Dans le champ Pipeline , sélectionnez le pipeline associé à votre table synchronisée.
- Sous Planifications et déclencheurs, cliquez sur Ajouter un déclencheur.
- Sélectionnez Mise à jour de table comme type de déclencheur.
- Sous Tables, sélectionnez la table de catalogue Unity source à surveiller.
- Cliquez sur Enregistrer.
Déclencher selon une planification
Exécute la synchronisation à une cadence fixe. Adapté au mode Instantané, où une actualisation complète nocturne ou hebdomadaire constitue généralement le modèle le plus efficace.
- Suivez les étapes 1 à 5 ci-dessus pour ajouter une tâche de pipeline de synchronisation de table de base de données à un travail.
- Sous Planifications et déclencheurs, cliquez sur Ajouter un déclencheur.
- Sélectionnez Scheduled comme type de déclencheur.
- Définissez votre planification cron et votre fuseau horaire, puis cliquez sur Enregistrer.
Utilisation du kit de développement logiciel
Déclenchez une exécution de synchronisation par programmation, par exemple à la fin d’un notebook ou d’un pipeline en amont :
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# Get the pipeline ID from the synced table
table = w.database.get_synced_database_table(name="catalog.schema.synced_table")
pipeline_id = table.data_synchronization_status.pipeline_id
# Trigger a sync run
w.pipelines.start_update(pipeline_id=pipeline_id)
Types de données et compatibilité
Les types de données du catalogue Unity sont mappés aux types Postgres lors de la création de tables synchronisées. Les types complexes (ARRAY, MAP, STRUCT) sont stockés en tant que JSONB dans Postgres.
| Type de colonne source | Type de colonne Postgres |
|---|---|
| BIGINT | BIGINT |
| BINAIRE | BYTEA |
| BOOLEAN | BOOLEAN |
| DATE | DATE |
| DECIMAL(p,s) | NUMÉRIQUE |
| DOUBLE | DOUBLE PRÉCISION |
| FLOAT | RÉEL |
| INT | INTEGER |
| INTERVAL | INTERVAL |
| SMALLINT | SMALLINT |
| STRING | TEXTE |
| TIMESTAMP | TIMESTAMP AVEC FUSEAU HORAIRE |
| TIMESTAMP_NTZ | TIMESTAMP SANS FUSEAU HORAIRE |
| TINYINT | SMALLINT |
| ARRAY<typeÉlément> | JSONB |
| MAP<typeClé,typeValeur> | JSONB |
| STRUCT<fieldName :fieldType[, ...]> | JSONB |
Note
Les types GEOGRAPHY, GEOMETRY, VARIANT et OBJECT ne sont pas pris en charge.
Gérer les caractères non valides
Certains caractères tels que les octets Null (0x00) sont autorisés dans les colonnes STRING, ARRAY, MAP ou STRUCT du catalogue Unity, mais pas prises en charge dans les colonnes TEXT ou JSONB Postgres. Cela peut entraîner des échecs de synchronisation avec des erreurs telles que :
ERROR: invalid byte sequence for encoding "UTF8": 0x00
ERROR: unsupported Unicode escape sequence DETAIL: \u0000 cannot be converted to text
Solutions :
Nettoyer les champs de chaîne : supprimez les caractères non pris en charge avant la synchronisation. Pour les octets null dans les colonnes STRING :
SELECT REPLACE(column_name, CAST(CHAR(0) AS STRING), '') AS cleaned_column FROM your_tableConvertir en BINARY : pour les colonnes STRING où la conservation des octets bruts est nécessaire, convertissez en type BINARY.
Planification de la capacité
Lors de la planification de l’implémentation de vos tables synchronisées, tenez compte des besoins en ressources suivants :
- Utilisation de la connexion : chaque table synchronisée utilise jusqu’à 16 connexions à votre base de données Lakebase, qui comptent vers la limite de connexion de l’instance.
- Limites de taille : la limite totale de taille des données logiques sur toutes les tables synchronisées est de 8 To. Les tables individuelles n’ont pas de limites, mais Databricks recommande de ne pas dépasser 1 To pour les tables nécessitant des actualisations.
-
Exigences de nommage : Les noms de base de données, de schéma et de table peuvent contenir uniquement des caractères alphanumériques et des traits de soulignement (
[A-Za-z0-9_]+). - Évolution du schéma : seules les modifications de schéma additifs (comme l’ajout de colonnes) sont prises en charge pour les modes déclenchés et continus.
- Taux de mise à jour : Pour la mise à l’échelle automatique de Lakebase, le pipeline de synchronisation prend en charge les écritures en continu et déclenchées à environ 150 lignes par seconde par unité de capacité (CU) et les écritures d’instantanés jusqu’à 2 000 lignes par seconde par CU.
Opérations autorisées sur des tables synchronisées dans Postgres
Azure Databricks recommande d’effectuer uniquement les opérations suivantes dans Postgres pour les tables synchronisées afin d’éviter les remplacements accidentels ou les incohérences de données :
- Requêtes en lecture seule
- Création d’index
- Suppression de la table (pour libérer de l’espace après avoir supprimé la table synchronisée du catalogue Unity)
Bien qu’il soit possible de modifier des tables synchronisées dans Postgres d’une autre manière, elle interfère avec le pipeline de synchronisation.
Supprimer une table synchronisée
Pour supprimer une table synchronisée, vous devez la supprimer du catalogue Unity et de Postgres :
Supprimer du catalogue Unity : dans le catalogue, recherchez votre table synchronisée, cliquez sur l’icône de
Menu, puis sélectionnez Supprimer. Cela arrête les actualisations de données, mais laisse la table dans Postgres.
Supprimez Postgres : Connectez-vous à votre base de données Lakebase et supprimez la table pour libérer de l’espace :
DROP TABLE your_database.your_schema.your_table;
Vous pouvez utiliser l’éditeur SQL ou les outils externes pour vous connecter à Postgres.
En savoir plus
| Tâche | Description |
|---|---|
| Créer un projet | Configurer un projet Lakebase |
| Se connecter à votre base de données | Découvrir les options de connexion pour Lakebase |
| Inscrire une base de données dans le catalogue Unity | Rendre vos données Lakebase visibles dans le catalogue Unity pour la gouvernance unifiée et les requêtes inter sources |
| Intégration du catalogue Unity | Comprendre la gouvernance et les autorisations |
Autres options
Pour synchroniser des données dans des systèmes autres que Databricks, consultez les solutions ETL inversées Partner Connect telles que Census ou Hightouch.