Démarrer avec le Databricks CLI pour Lakebase
Ce guide vous aide à get start avec la CLI Databricks pour gérer vos projets Lakebase, vos Branches et vos computes (Endpoints). Vous apprendrez comment créer un projet fonctionnel en quelques commandes seulement.
Pour une référence complète des commandes et toutes les options disponibles, consultez commandes Databricks CLI postgres.
Prérequis
- CLI Databricks : Installez la CLI Databricks. Consultez Installer la CLI Databricks.
- Accès au Workspace : Vous devez avoir accès à un Workspace Databricks où réside votre ressource Lakebase.
S'authentifier auprès de Databricks
Avant d'exécuter des commandes CLI, authentifiez-vous auprès de votre Workspace Databricks :
databricks auth login --host https://your-workspace.cloud.databricks.com
Remplacez https://your-workspace.cloud.databricks.com par l'URL de votre Workspace. Cette commande ouvre une fenêtre de navigateur pour vous authentifier auprès de votre compte Databricks à l'aide d'OAuth.
Si vous avez plusieurs profils, utilisez l'indicateur --profile pour spécifier lequel utiliser : databricks postgres <command> --profile my-profile. Pour afficher vos profils configurés, exécutez databricks auth profiles.
Pour plus d'options d'authentification, consultez l'authentification Databricks.
Obtenir l'aide sur la commande
La CLI fournit une aide intégrée pour toutes les commandes. Utilisez --help pour voir les commandes et options disponibles.
Obtenez un aperçu de toutes les commandes Postgres :
databricks postgres --help
La commande affiche toutes les commandes disponibles, les indicateurs globaux et les informations sur les conventions de nommage des ressources.
Obtenez une aide détaillée pour une commande spécifique :
databricks postgres create-project --help
Ceci indique l'objectif de la commande, les paramètres obligatoires et facultatifs, les exemples d'utilisation et les indicateurs disponibles.
Démarrage rapide : Créez votre premier projet
Suivez ces étapes pour créer un projet avec une Branch et un compute Endpoint :
1. Créer un projet
Créer un projet Lakebase :
databricks postgres create-project my-project \
--json '{
"spec": {
"display_name": "My Lakebase Project"
}
}'
Cette commande crée un projet et attend qu’il se termine. L’ID de projet (my-project) fait partie du nom de ressource : projects/my-project. Le projet est créé avec une branch de production default et un Endpoint de compute en lecture-écriture, tous deux avec des ID auto-générés.
Vous pouvez, si vous le souhaitez, exporter l'identifiant du projet en tant que variable à utiliser dans les commandes ultérieures :
export PROJECT_ID="my-project"
2. Obtenez l'ID de Branch
Listez les branches de votre projet pour trouver l'ID de la branche default :
databricks postgres list-branches projects/$PROJECT_ID
Ceci renvoie des informations sur toutes les branches du projet. Recherchez la Branch avec "default": true dans le statut. Notez l'ID de la Branch à partir du champ name (par exemple, production pour la Branch default).
Exportez éventuellement l'ID de Branch en tant que variable à utiliser dans les commandes ultérieures :
export BRANCH_ID="production"
Remplacez production par votre ID de Branch actuel à partir de la sortie de la liste.
3. Obtenez l'ID d'Endpoint
Listez les Endpoint dans votre Branch. La Branch default inclut automatiquement un Endpoint de lecture-écriture :
databricks postgres list-endpoints projects/$PROJECT_ID/branches/$BRANCH_ID
Notez l'ID de l'Endpoint à partir du champ name (par exemple, primary pour l'Endpoint de lecture/écriture « default »). Exportez-le en option en tant que variable :
export ENDPOINT_ID="primary"
Remplacez primary par l'ID de votre endpoint réel à partir de la sortie de la liste.
4. Générer les identifiants de base de données
Générez des informations d’identification pour vous connecter à votre base de données :
databricks postgres generate-database-credential \
projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID
La commande renvoie un jeton OAuth que vous pouvez utiliser avec des clients PostgreSQL tels que psql pour accéder à vos données en utilisant votre identité Databricks. Pour des instructions étape par étape sur la connexion avec psql, consultez Connexion avec PSQL. Pour plus d'informations sur l'expiration des jetons et l'authentification, consultez Authentification.
Gérer les projets
Lister les projets
Listez tous les projets dans votre Workspace :
databricks postgres list-projects
La commande renvoie le nom, le nom d'affichage, l'état actuel et les horodatages de chaque projet.
Obtenir les détails du projet
Obtenez des informations détaillées sur un projet :
databricks postgres get-project projects/$PROJECT_ID
La commande renvoie le nom d'affichage du projet, la version PostgreSQL, le propriétaire, la période de rétention de l'historique, les limites de taille de la Branch, la taille du stockage et les timestamps.
Gérer les Branch
Obtenir les détails de la Branch
Obtenez des informations détaillées sur une Branch :
databricks postgres get-branch projects/$PROJECT_ID/branches/$BRANCH_ID
La commande renvoie l'état actuel de la Branch, son statut de protection, sa taille logique, les détails de la Branch source (le cas échéant) et les Timestamp.
Créer une Branch de fonctionnalités
Créez une nouvelle Branch basée sur une Branch existante pour tester les modifications. Lorsque vous spécifiez une source_branch, la nouvelle Branch aura le même schéma et les mêmes données que la Branch source au moment de la création. Remplacez les ID de projet et de branch par vos valeurs réelles :
databricks postgres create-branch \
projects/my-project \
feature \
--json '{
"spec": {
"source_branch": "projects/my-project/branches/production",
"no_expiry": true
}
}'
Lors de la création d'une Branch, vous devez spécifier une stratégie d'expiration. Utilisez no_expiry: true pour créer une Branch permanente.
Pour utiliser des variables shell dans la spécification JSON (comme $PROJECT_ID ou $BRANCH_ID), utilisez des guillemets doubles pour la valeur --json et échappez les guillemets internes.
Lakebase crée automatiquement la Branch de fonctionnalités avec un Endpoint de compute principal en lecture-écriture. Une fois que vous avez terminé le développement et les tests sur la Branch de fonctionnalités, vous pouvez la supprimer :
databricks postgres delete-branch projects/$PROJECT_ID/branches/feature
Les commandes de suppression retournent immédiatement, mais la suppression réelle peut prendre du temps. Vous pouvez vérifier la suppression en exécutant la commande de ressources correspondante, qui renvoie une erreur une fois la Ressources entièrement supprimée.
Mettre à jour la protection de Branch
Mettre à jour une ressource à l'aide du modèle de masque de mise à jour. Le masque de mise à jour spécifie les champs à mettre à jour :
databricks postgres update-branch \
projects/$PROJECT_ID/branches/$BRANCH_ID \
spec.is_protected \
--json '{
"spec": {
"is_protected": true
}
}'
Cet exemple définit spec.is_protected sur true, rendant la Branch protégée. Le masque de mise à jour (spec.is_protected) indique à l'API quel champ mettre à jour. La commande renvoie la Ressource mise à jour affichant la nouvelle valeur et un update_time timestamp mis à jour.
Gérer les computes
Obtenir les détails du compute
Obtenir des informations détaillées sur un endpoint :
databricks postgres get-endpoint projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID
La commande renvoie le type d'Endpoint, les paramètres d'autoscaling, l'état actuel, l'hôte de connexion, le délai d'expiration de la suspension et les Timestamps.
Monter en charge les lectures avec des réplicas en lecture
Ajoutez des réplicas en lecture pour gérer l'augmentation du trafic de lecture. L'exemple suivant ajoute un réplica en lecture à la Branch de production par default :
databricks postgres create-endpoint \
projects/$PROJECT_ID/branches/$BRANCH_ID \
read-replica-1 \
--json '{
"spec": {
"endpoint_type": "ENDPOINT_TYPE_READ_ONLY",
"autoscaling_limit_min_cu": 0.5,
"autoscaling_limit_max_cu": 4.0
}
}'
Vous pouvez créer plusieurs répliques en lecture avec des ID d'endpoint différents (read-replica-1, read-replica-2, etc.) pour distribuer les charges de travail en lecture.
Mettre à jour les limites du dimensionnement automatique
Pour mettre à jour plusieurs champs, utilisez une liste séparée par des virgules :
databricks postgres update-endpoint \
projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID \
"spec.autoscaling_limit_min_cu,spec.autoscaling_limit_max_cu" \
--json '{
"spec": {
"autoscaling_limit_min_cu": 1.0,
"autoscaling_limit_max_cu": 8.0
}
}'
Configurez la mise à l'échelle à zéro
Pour configurer la mise à l'échelle jusqu'à zéro, incluez spec.suspension dans le masque de mise à jour. Définissez suspend_timeout_duration (60s–604800s) pour définir le délai d'inactivité, ou no_suspension: true pour le désactiver. Ne définissez pas les deux. Le paramètre no_suspension: false n'est pas valide et renvoie une erreur. Par default, la branch production a la mise à zéro activée avec un délai d'expiration de 24 heures.
# Disable scale to zero (compute stays active indefinitely)
databricks postgres update-endpoint \
projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID \
spec.suspension \
--json '{
"spec": {
"no_suspension": true
}
}'
# Enable scale to zero with a 5-minute inactivity timeout (60s–604800s)
databricks postgres update-endpoint \
projects/$PROJECT_ID/branches/$BRANCH_ID/endpoints/$ENDPOINT_ID \
spec.suspension \
--json '{
"spec": {
"suspend_timeout_duration": "300s"
}
}'
Gestion des rôles
Utilisez la CLI pour créer et gérer les rôles Postgres pour l'accès à la base de données au sein d'une Branch. Pour des conseils détaillés sur les types de rôles et l'authentification, consultez Créer des rôles Postgres.
Créer un rôle
Créez un rôle basé sur un mot de passe :
databricks postgres create-role projects/$PROJECT_ID/branches/$BRANCH_ID \
--role-id my-app-role \
--json '{"spec": {"postgres_role": "my-app-role"}}'
Créez un rôle OAuth lié à une identité Databricks :
# For a user:
databricks postgres create-role projects/$PROJECT_ID/branches/$BRANCH_ID \
--role-id my-user-role \
--json '{"spec": {"identity_type": "USER", "postgres_role": "user@example.com"}}'
# For a service principal:
databricks postgres create-role projects/$PROJECT_ID/branches/$BRANCH_ID \
--role-id my-sp-role \
--json '{"spec": {"identity_type": "SERVICE_PRINCIPAL", "postgres_role": "<sp-client-id>"}}'
Lister et obtenir les rôles
Répertorier tous les rôles dans une Branch :
databricks postgres list-roles projects/$PROJECT_ID/branches/$BRANCH_ID
Obtenir les détails sur un rôle spécifique :
databricks postgres get-role projects/$PROJECT_ID/branches/$BRANCH_ID/roles/$ROLE_ID
La réponse inclut le nom de la Ressource de rôle généré par le système (par exemple, rol-xxxx-xxxxxxxxxx) requis pour les appels de mise à jour et de suppression.
Mettre à jour un rôle
Mettre à jour un rôle à l’aide du modèle de masque de mise à jour. Passez le masque de mise à jour comme deuxième argument positionnel.
Lors de la mise à jour de spec.attributes, vous devez fournir les trois champs d’attribut — l’API remplace l’objet d’attributs entier :
databricks postgres update-role \
projects/$PROJECT_ID/branches/$BRANCH_ID/roles/$ROLE_ID \
"spec.attributes" \
--json '{"spec": {"attributes": {"createdb": true, "createrole": false, "bypassrls": false'
Supprimer un rôle
databricks postgres delete-role projects/$PROJECT_ID/branches/$BRANCH_ID/roles/$ROLE_ID
Si le rôle détient des objets de base de données, utilisez --reassign-owned-to pour transférer la propriété avant la suppression :
databricks postgres delete-role \
projects/$PROJECT_ID/branches/$BRANCH_ID/roles/$ROLE_ID \
--reassign-owned-to projects/$PROJECT_ID/branches/$BRANCH_ID/roles/$OTHER_ROLE_ID
Gestion des tables synchronisées
Les tables synchronisées répliquent les données Unity Catalog dans votre base de données Lakebase pour des lectures opérationnelles à faible latence. Utilisez create-synced-table avec un ID {catalog}.{schema}.{table} :
databricks postgres create-synced-table my-catalog.sales.orders \
--json '{
"spec": {
"source_table_full_name": "main.sales.orders",
"branch": "projects/my-project/branches/production",
"primary_key_columns": ["order_id"],
"scheduling_policy": "SNAPSHOT",
"postgres_database": "databricks_postgres",
"create_database_objects_if_missing": true
}
}'
L'ID de la table synchronisée devient à la fois le nom de l'entité Unity Catalog et identifie la table Postgres. Obtenir le statut et supprimer une table synchronisée avec le même format d'ID :
# Check status
databricks postgres get-synced-table "synced_tables/my-catalog.sales.orders"
# Delete
databricks postgres delete-synced-table "synced_tables/my-catalog.sales.orders"
create-synced-table et create-catalog sont des opérations de longue durée. Par default, l'interface de ligne de commande attend la fin de l'opération. Utilisez --no-wait pour revenir immédiatement ou --timeout pour définir une durée d'attente personnalisée. Consultez Opérations de longue durée.
Pour obtenir des conseils détaillés sur les modes de synchronisation, le mappage des types de données et la planification de la capacité, consultez Servir des données lakehouse avec des tables synchronisées.
Comprendre les concepts clés
Opérations de longue durée
Les commandes de création, de mise à jour et de suppression sont des Opérations de longue durée. Par default, le CLI attend que l'Opération se termine. Utilisez --no-wait pour revenir immédiatement et interroger le statut séparément :
databricks postgres create-project $PROJECT_ID \
--json '{"spec": {"display_name": "My Project"}}' \
--no-wait
Interroger le statut de l’opération :
databricks postgres get-operation projects/$PROJECT_ID/operations/operation-id
Dénomination des ressources
Lakebase utilise des noms de ressources hiérarchiques :
- Projets :
projects/{project_id}. Vous spécifiez l'ID du projet lors de la création d'un projet. - Branches :
projects/{project_id}/branches/{branch_id}. Vous spécifiez l'ID de Branch lors de la création d'une Branch. - **Endpoints** :.
projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id}Vous spécifiez l'ID de l'Endpoint (commeprimaryouread-replica-1) lors de la création d'un Endpoint.
Les ID doivent comporter entre 1 et 63 caractères, start par une lettre minuscule et contenir uniquement des lettres minuscules, des chiffres et des tirets.
Mettre à jour les masques
Les commandes de mise à jour nécessitent un masque de mise à jour qui spécifie les champs à modifier. Le masque est un chemin de champ comme spec.display_name ou une liste séparée par des virgules pour plusieurs champs.
La charge utile --json contient les nouvelles valeurs pour ces champs. Seuls les champs listés dans le masque de mise à jour sont modifiés.