Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cree y administre ramas para admitir diferentes flujos de trabajo de desarrollo, escenarios de prueba y entornos de producción. Las ramas permiten trabajar con entornos de base de datos aislados sin afectar a la producción.
Nota:
Acerca de los permisos de administración de ramas:
- Para crear, eliminar o actualizar ramas, necesita el permiso CAN MANAGE en el proyecto. Consulte Administración de permisos de proyecto.
- Para crear bases de datos o roles dentro de una rama, o para ver y enumerar ramas y recursos de rama, necesita el permiso CAN USE o CAN MANAGE en el proyecto.
- Para obtener más información sobre cómo funciona la ramificación, incluidas las relaciones padre-hijo, el almacenamiento de copia en escritura y las estrategias de ramificación, consulte Ramas de base de datos.
Descripción de las ramas
Introducción a la rama
Una rama de Lakebase Postgres es un entorno de base de datos independiente que comparte almacenamiento con su rama primaria a través de la copia en escritura. Las ramas le permiten:
- Creación de entornos de desarrollo y pruebas aislados
- Probar aplicaciones con conjuntos de datos realistas
- Implementación de flujos de trabajo de desarrollo de bases de datos
Estrategias y tipos de rama
Al crear una rama, puede elegir entre varias opciones en función de sus necesidades específicas. Cada opción crea una rama con diferentes características de datos y casos de uso.
| Opción | Description |
|---|---|
| Datos y esquemas de rama | Crea una rama desde el último estado de tu rama principal. Ideal para el desarrollo, las pruebas con datos actuales y las ramas de funcionalidades. |
| Datos y esquema de una rama de un momento anterior | Crea una rama a partir de un momento dado específico dentro de la ventana de restauración. Resulta útil para la recuperación a un momento dado, el análisis histórico y la consulta de datos en un momento dado. Use el selector de fechas para seleccionar el momento deseado en el tiempo. |
Expiración de la rama
La caducidad de las ramas le permite establecer marcas de tiempo de eliminación automática en las ramas. Cuando una rama alcanza su hora de expiración, se elimina automáticamente. Esta característica ayuda a administrar ramas temporales y a reducir los costos de almacenamiento.
Por qué utilizar la caducidad de las ramas
La caducidad de las ramas es ideal para ramas temporales que tienen una vida útil predecible:
- Entornos de CI/CD: Ramas de prueba que deben eliminarse tras la finalización del pipeline.
- Desarrollo de características: Ramas de características limitadas en el tiempo con fechas límite conocidas.
- Pruebas automatizadas: Entornos de prueba efímeros creados por scripts.
- Flujos de trabajo de desarrollo: Entornos temporales que no necesitan conservarse indefinidamente.
Sin expiración automática, estas ramas se acumulan con el tiempo, lo que aumenta los costos de almacenamiento y el desorden del proyecto.
Sugerencia
Duraciones de expiración de ejemplo: canalizaciones de CI/CD (2-4 horas), demostraciones (24-48 horas), desarrollo de características (1 a 7 días), pruebas a largo plazo (30 días).
Cómo funciona la caducidad de las ramas
La caducidad de las ramas utiliza un modelo de tiempo de vida (TTL). Cuando se establece una expiración en una rama, se define cuánto tiempo debe existir la rama antes de la eliminación automática.
Al establecer una marca de tiempo de expiración en una rama:
- El sistema almacena la marca de tiempo de expiración (la fecha y hora programadas en que se eliminará la rama) y el intervalo de TTL (la duración entre la creación o actualización y la expiración).
- Un proceso en segundo plano supervisa las ramas y las elimina después de que se alcance su tiempo de expiración.
- Si restableces una rama desde su rama principal, la cuenta atrás del TTL se reinicia utilizando el intervalo original.
Importante
La eliminación de la rama es permanente y no se puede recuperar. También se eliminan todos los datos asociados y los recursos de proceso. Compruebe cuidadosamente los tiempos de expiración antes de establecerlos.
Restricciones de la caducidad de las ramas
Para mantener la integridad del sistema, no se pueden agregar marcas de tiempo de expiración a:
- Ramas protegidas: No se pueden eliminar ramas protegidas ni proteger ramas con expiración.
- Ramas predeterminadas: No se pueden expirar las ramas predeterminadas ni establecer ramas que expiran como predeterminadas.
- Ramas principales: No se pueden hacer caducar ramas que tengan ramas secundarias ni crear ramas secundarias a partir de ramas que estén a punto de caducar.
Nota:
Cuando una rama expira y se elimina, también se eliminan todos los recursos de proceso asociados. Asegúrese de que las cargas de trabajo críticas se migran antes de la expiración.
Período de expiración máximo
El período de expiración máximo es de 30 días a partir de la hora actual. Si necesita que una rama perdure más de 30 días, puede actualizar la marca temporal de caducidad antes de que expire para prolongar su duración.
Creación y administración de ramas
Creación de una rama
Para crear una rama:
Interfaz de usuario
- Dirígete a la página Ramas de tu proyecto en la aplicación Lakebase.
- Haga clic en Crear rama y configure las opciones de rama:
- Escriba un nombre de rama (obligatorio)
- Seleccione una opción de rama (Datos de rama y esquema o Datos de rama y esquema de un momento pasado)
- Opcionalmente, establezca una expiración mediante la lista desplegable Eliminación automática: elija un valor preestablecido (después de 1 hora, después de 1 día o después de 7 días), un valor personalizado (hasta 30 días) o Nunca sin expiración. Consulte Expiración de la rama para obtener más información.
- Haga clic en Crear para crear la rama.
SDK de Python
Especifique una directiva de expiración mediante una de las siguientes opciones en BranchSpec:
-
ttl: unDurationobjeto (por ejemplo:Duration(seconds=604800)durante 7 días) -
expire_time: una expiración específicadatetime -
no_expiry=True: Para ramas que nunca deben caducar
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Branch, BranchSpec, Duration
w = WorkspaceClient()
# Create branch with 7-day expiration
branch_spec = BranchSpec(
ttl=Duration(seconds=604800), # 7 days
source_branch="projects/my-project/branches/production"
)
branch = Branch(spec=branch_spec)
result = w.postgres.create_branch(
parent="projects/my-project",
branch=branch,
branch_id="development"
).wait()
print(f"Branch created: {result.name}")
print(f"Expires: {result.status.expire_time}")
Para crear una rama permanente sin expiración, establezca no_expiry=True en :BranchSpec
# Create a permanent branch (no expiration)
branch_spec = BranchSpec(
source_branch="projects/my-project/branches/production",
no_expiry=True
)
branch = Branch(spec=branch_spec)
result = w.postgres.create_branch(
parent="projects/my-project",
branch=branch,
branch_id="staging"
).wait()
print(f"Branch created: {result.name}")
SDK de Java
Especifique una directiva de expiración mediante una de las siguientes opciones en BranchSpec:
-
setTtl(Duration): uncom.google.protobuf.Durationobjeto (por ejemplo:Duration.newBuilder().setSeconds(604800L).build()durante 7 días) -
setExpireTime(Timestamp): una expiración específicacom.google.protobuf.Timestamp -
setNoExpiry(true): Para ramas que nunca deben caducar
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
import com.google.protobuf.Duration;
WorkspaceClient w = new WorkspaceClient();
// Create branch with 7-day expiration
BranchSpec branchSpec = new BranchSpec()
.setTtl(Duration.newBuilder().setSeconds(604800L).build()) // 7 days
.setSourceBranch("projects/my-project/branches/production");
Branch branch = new Branch().setSpec(branchSpec);
Branch result = w.postgres().createBranch(
new CreateBranchRequest()
.setParent("projects/my-project")
.setBranch(branch)
.setBranchId("development")
).waitForCompletion();
System.out.println("Branch created: " + result.getName());
System.out.println("Expires: " + result.getStatus().getExpireTime());
Para crear una rama permanente sin expiración, establezca no_expiry=true en :BranchSpec
// Create a permanent branch (no expiration)
BranchSpec branchSpec = new BranchSpec()
.setSourceBranch("projects/my-project/branches/production")
.setNoExpiry(true);
Branch branch = new Branch().setSpec(branchSpec);
Branch result = w.postgres().createBranch(
new CreateBranchRequest()
.setParent("projects/my-project")
.setBranch(branch)
.setBranchId("staging")
).waitForCompletion();
System.out.println("Branch created: " + result.getName());
Interfaz de línea de comandos (CLI)
Especifique una directiva de expiración con uno de los campos siguientes en json spec :
-
ttl: cadena de duración (por ejemplo:"604800s"durante 7 días) -
expire_time: marca de tiempo ISO 8601 (ejemplo:"2025-01-15T10:30:00Z") -
no_expiry: true: Para ramas que nunca deben caducar
# Create a branch with 7-day expiration
databricks postgres create-branch projects/my-project development \
--json '{
"spec": {
"source_branch": "projects/my-project/branches/production",
"ttl": "604800s"
}
}'
# Create a permanent branch (no expiration)
databricks postgres create-branch projects/my-project staging \
--json '{
"spec": {
"source_branch": "projects/my-project/branches/production",
"no_expiry": true
}
}'
curl
Especifique una directiva de expiración mediante uno de los campos siguientes en el json del cuerpo de la solicitud:
-
ttl: cadena de duración (por ejemplo:"604800s"durante 7 días) -
expire_time: marca de tiempo ISO 8601 (ejemplo:"2025-01-15T10:30:00Z") -
no_expiry: true: Para ramas que nunca deben caducar
# Create a branch with 7-day expiration
curl -X POST "$WORKSPACE/api/2.0/postgres/projects/my-project/branches?branch_id=development" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"spec": {
"source_branch": "projects/my-project/branches/production",
"ttl": "604800s"
}
}' | jq
# Create a permanent branch (no expiration)
curl -X POST "$WORKSPACE/api/2.0/postgres/projects/my-project/branches?branch_id=staging" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"spec": {
"source_branch": "projects/my-project/branches/production",
"no_expiry": true
}
}' | jq
Ver ramas
Ver en la interfaz de usuario
Para ver todas las ramas del proyecto de Lakebase, seleccione el proyecto en la aplicación lakebase y vaya a Ramas en el panel de navegación izquierdo.
La tabla de ramas muestra información clave sobre cada rama:
La página de ramas muestra una tabla completa con información sobre cada rama de tu proyecto:
| Columna | Description |
|---|---|
| Rama | Nombre de la rama. La rama predeterminada muestra una etiqueta "DEFAULT". |
| Padre | Indica la rama primaria desde la que se creó esta rama, lo que le ayuda a realizar un seguimiento de la jerarquía de la rama. |
| Tiempo activo | Número de horas que ha estado activo el recurso de proceso de la rama. |
| Computación primaria | Muestra el tamaño actual y el estado (como IDLE o ACTIVE) del proceso de cálculo de la rama. |
| Tamaño de los datos | El tamaño de los datos de la rama. No incluye el historial. |
| Creado por | Usuario o servicio que creó la rama. |
| Último activo | Muestra cuándo los recursos de computación de la rama estuvieron activos por última vez. |
Haga clic en cualquier rama de la tabla para ver la página de información general de la rama, que muestra información detallada sobre la rama seleccionada:
La página de información general de la rama muestra información detallada en la parte superior, incluidas las métricas clave y los metadatos:
| Campo | Description |
|---|---|
| ID | Identificador de rama único (con prefijo br-) |
| Creado en | Fecha y hora en que se creó la rama |
| Horas de cálculo | Total de horas de proceso usadas por la rama |
| Horas activas | Horas de proceso usadas desde una fecha específica |
| Tamaño de los datos | Tamaño de los datos de la rama (no incluye el historial) |
| Creado por | Usuario que creó la rama |
La página de información general de la rama incluye varias pestañas para administrar distintos aspectos de la rama:
| Pestaña | Description |
|---|---|
| Calcula | Vea y administre el recurso de cómputo principal de la sucursal. Consulte Administración de procesos. |
| Roles y bases de datos | Administrar roles de bases de datos y bases de datos asociadas a la rama. Consulte Administración de bases de datos y Administración de roles. |
| Ramas secundarias | Ver todas las ramas que se crearon a partir de esta rama |
Obtención de una rama mediante programación
Para obtener detalles sobre una rama específica mediante postgres API:
SDK de Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# Get branch details
branch = w.postgres.get_branch(
name="projects/my-project/branches/development"
)
print(f"Branch: {branch.name}")
print(f"Protected: {branch.status.is_protected}")
print(f"Default: {branch.status.default}")
print(f"State: {branch.status.current_state}")
print(f"Size: {branch.status.logical_size_bytes} bytes")
SDK de Java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.Branch;
WorkspaceClient w = new WorkspaceClient();
// Get branch details
Branch branch = w.postgres().getBranch("projects/my-project/branches/development");
System.out.println("Branch: " + branch.getName());
System.out.println("Protected: " + branch.getStatus().getIsProtected());
System.out.println("Default: " + branch.getStatus().getDefault());
System.out.println("State: " + branch.getStatus().getCurrentState());
System.out.println("Size: " + branch.getStatus().getLogicalSizeBytes() + " bytes");
Interfaz de línea de comandos (CLI)
# Get branch details
databricks postgres get-branch projects/my-project/branches/development --output json | jq
curl
curl "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/development" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
Listar mediante programación
Para enumerar todas las ramas de un proyecto mediante postgres API:
SDK de Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# List all branches in a project
project_name = "projects/my-project"
branches = list(w.postgres.list_branches(parent=project_name))
for branch in branches:
print(f"Branch: {branch.name}")
print(f" Default: {branch.status.default}")
print(f" Protected: {branch.status.is_protected}")
SDK de Java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
WorkspaceClient w = new WorkspaceClient();
// List all branches in a project
String projectName = "projects/my-project";
for (Branch branch : w.postgres().listBranches(projectName)) {
System.out.println("Branch: " + branch.getName());
System.out.println(" Default: " + branch.getStatus().getDefault());
System.out.println(" Protected: " + branch.getStatus().getIsProtected());
}
Interfaz de línea de comandos (CLI)
# List all branches in a project
databricks postgres list-branches projects/my-project --output json | jq
curl
curl "$WORKSPACE/api/2.0/postgres/projects/my-project/branches" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" | jq
Comparación de esquemas de rama
Revise las diferencias de esquema entre una rama hija y su rama madre antes de fusionar los cambios. La comparación de esquemas muestra una comparación DDL de SQL en paralelo que resalta los objetos de la base de datos añadidos, eliminados o modificados, como tablas, columnas, índices y restricciones.
Para comparar esquemas entre ramas:
- Vaya a la página de descripción general de una sucursal secundaria en la aplicación Lakebase.
- En la sección Rama principal, haga clic en Diferencias de esquema.
- En el cuadro de diálogo Diferencias de esquema:
- Base: seleccione la rama base para la comparación (el valor predeterminado es la rama primaria).
- Base de datos: seleccione la base de datos que se va a comparar.
- Comparar: seleccione la rama que se va a comparar con base (el valor predeterminado es la rama secundaria actual).
- Haga clic en Compare (Comparar).
Interpretación de los resultados de la comparación
Cuando los esquemas difieren, la vista de diferencias muestra una comparación en paralelo de las instrucciones DDL de SQL:
Las líneas rojas muestran lo que se quitó o cambió de la rama base, las líneas verdes muestran lo que se agregó o cambió en la rama de comparación. El diff captura los cambios en las definiciones de tabla, columnas, restricciones, índices y otros objetos de la base de datos.
Si no existen diferencias entre las ramas seleccionadas, verá un mensaje de confirmación de que los esquemas están sincronizados:
Utiliza el 'schema diff' para la validación previa a la combinación, el seguimiento del desarrollo, la detección de desviación y la documentación de cambios. Para ver la diferencia de esquema en un flujo de trabajo de desarrollo completo, consulte Tutorial: Flujo de trabajo de desarrollo basado en rama.
Nota:
La comparación de esquemas solo compara el esquema de la base de datos (DDL), no el contenido de los datos. La comparación utiliza los últimos datos disponibles (cabeza) de ambas ramas.
Actualizar la configuración de la rama
Cambiar el nombre de una rama
El cambio de nombre de una rama no se admite actualmente desde la interfaz de usuario o la API. La opción Renombrar rama aparece en el menú de la rama de la interfaz de usuario, pero está desactivada.
Establecer como valor predeterminado
Cada proyecto de Lakebase se crea con una rama predeterminada denominada production, pero puede designar cualquier rama como predeterminada. La rama predeterminada está exenta del límite de proceso activo simultáneamente, lo que garantiza que permanece disponible en todo momento.
Nota:
No se admite la configuración de una rama como predeterminada mediante la API.
Para establecer una rama como predeterminada:
- Dirígete a la página Ramas de tu proyecto en la aplicación Lakebase.
- Haga clic en el
menú situado junto a la rama que desea establecer como predeterminada.
- Seleccione Establecer como valor predeterminado y confirme la operación.
Establecer como protegido
Las ramas protegidas ayudan a proteger las ramas críticas frente a modificaciones o eliminaciones accidentales. Las ramas protegidas no se pueden eliminar, restablecer ni archivar debido a la inactividad. Los proyectos con ramas protegidas y sus procesos asociados tampoco se pueden eliminar.
Para establecer una rama como protegida:
Interfaz de usuario
- Vaya a Ramas en la aplicación Lakebase y seleccione la rama que desea proteger.
- Haga clic en Proteger y confirme la selección.
La rama ahora está designada como protegida, como se indica en el icono de escudo que aparece junto al nombre de la rama.
SDK de Python
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Branch, BranchSpec, FieldMask
w = WorkspaceClient()
# Set a branch as protected
branch_name = "projects/my-project/branches/production"
updated_spec = BranchSpec(is_protected=True)
updated_branch = Branch(name=branch_name, spec=updated_spec)
update_mask = FieldMask(field_mask=["spec.is_protected"])
update_op = w.postgres.update_branch(
name=branch_name,
branch=updated_branch,
update_mask=update_mask
)
# Wait for the update to complete
result = update_op.wait()
print(f"Branch {result.name} is now protected: {result.status.is_protected}")
Para quitar la protección, establezca is_protected=False en el BranchSpec.
SDK de Java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
import com.google.protobuf.FieldMask;
WorkspaceClient w = new WorkspaceClient();
// Set a branch as protected
String branchName = "projects/my-project/branches/production";
BranchSpec updatedSpec = new BranchSpec().setIsProtected(true);
Branch updatedBranch = new Branch()
.setName(branchName)
.setSpec(updatedSpec);
FieldMask updateMask = FieldMask.newBuilder()
.addPaths("spec.is_protected")
.build();
Branch result = w.postgres().updateBranch(
new UpdateBranchRequest()
.setName(branchName)
.setBranch(updatedBranch)
.setUpdateMask(updateMask)
).waitForCompletion();
System.out.println("Branch " + result.getName() + " is now protected: " +
result.getStatus().getIsProtected());
Para quitar la protección, establezca setIsProtected(false) en el BranchSpec.
Interfaz de línea de comandos (CLI)
# Set a branch as protected
databricks postgres update-branch projects/my-project/branches/production spec.is_protected \
--json '{
"spec": {
"is_protected": true
}
}'
Para quitar la protección, establezca "is_protected": false en json.
curl
curl -X PATCH "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production?update_mask=spec.is_protected" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "projects/my-project/branches/production",
"spec": {
"is_protected": true
}
}' | jq
Para quitar la protección, establezca "is_protected": false en el cuerpo de la solicitud.
Para obtener detalles completos sobre las ramas protegidas, incluida la administración de contraseñas para ramas secundarias, consulte Ramas protegidas.
Fecha de caducidad de la actualización
Puede establecer una marca de tiempo de expiración al crear una rama o actualizarla más adelante.
Al crear una rama
- Dirígete a la página Ramas de tu proyecto en la aplicación Lakebase.
- Haga clic en Crear rama, escriba un nombre de rama (obligatorio), configure las opciones de rama y seleccione una opción De eliminación automática (un valor preestablecido, un valor personalizado de hasta 30 días o Nunca para que no expire).
- Haga clic en Crear.
Actualizar la fecha de caducidad de la rama
Para actualizar o quitar una marca de tiempo de expiración en una rama existente:
Interfaz de usuario
- Dirígete a la página Ramas de tu proyecto en la aplicación Lakebase.
- Haz clic en el menú
situado junto a la rama y selecciona Actualizar fecha de caducidad.
- Selecciona una nueva fecha y hora o desmarca Caducidad de la rama el para eliminar la fecha de caducidad y, a continuación, haz clic en Guardar.
SDK de Python
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Branch, BranchSpec, Duration, FieldMask
w = WorkspaceClient()
# Update branch expiration to 14 days
branch_name = "projects/my-project/branches/development"
branch_spec = BranchSpec(
is_protected=False,
ttl=Duration(seconds=1209600) # 14 days
)
branch = Branch(
name=branch_name,
spec=branch_spec
)
result = w.postgres.update_branch(
name=branch_name,
branch=branch,
update_mask=FieldMask(field_mask=["spec.is_protected", "spec.expiration"])
).wait()
print(f"Updated expiration: {result.status.expire_time}")
Para quitar la expiración, establezca no_expiry=True en BranchSpec e incluya "spec.expiration" en la máscara de actualización.
SDK de Java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
import com.google.protobuf.Duration;
import com.google.protobuf.FieldMask;
WorkspaceClient w = new WorkspaceClient();
// Update branch expiration to 14 days
String branchName = "projects/my-project/branches/development";
BranchSpec branchSpec = new BranchSpec()
.setIsProtected(false)
.setTtl(Duration.newBuilder().setSeconds(1209600L).build()); // 14 days
Branch branch = new Branch()
.setName(branchName)
.setSpec(branchSpec);
Branch result = w.postgres().updateBranch(
new UpdateBranchRequest()
.setName(branchName)
.setBranch(branch)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("spec.is_protected")
.addPaths("spec.expiration")
.build())
).waitForCompletion();
System.out.println("Updated expiration: " + result.getStatus().getExpireTime());
Para quitar la expiración, establezca setNoExpiry(true) en BranchSpec e incluya "spec.expiration" en la máscara de actualización.
Interfaz de línea de comandos (CLI)
# Update branch expiration to 14 days
databricks postgres update-branch projects/my-project/branches/development spec.is_protected,spec.expiration \
--json '{
"spec": {
"is_protected": false,
"ttl": "1209600s"
}
}'
Para quitar la expiración, establezca "no_expiry": true en json.
curl
# Update branch expiration to 14 days
curl -X PATCH "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/development?update_mask=spec.is_protected,spec.expiration" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "projects/my-project/branches/development",
"spec": {
"is_protected": false,
"ttl": "1209600s"
}
}' | jq
Para quitar la expiración, establezca "no_expiry": true en el cuerpo de la solicitud.
Visualización de la expiración de la rama
Para comprobar si una rama tiene un conjunto de expiración, vaya a la página Ramas del proyecto y haga clic en la rama deseada. La información de vencimiento se muestra en los detalles de la sucursal.
Restablecer la rama a partir de la rama principal
Puede restablecer una rama para actualizarla al instante con el esquema y los datos más recientes de su rama primaria. Esto le ayuda a recuperarse de problemas, empezar a desarrollar nuevas características o mantener sincronizadas las distintas ramas del entorno.
Escenario de ejemplo
Al trabajar con ramas, es posible que se encuentre en una situación en la que necesite actualizar la rama de trabajo a los datos más recientes de la rama primaria.
Por ejemplo, supongamos que tienes dos ramas secundarias staging y development creadas a partir de tu rama production. Has estado trabajando en la rama development y te das cuenta de que ahora está demasiado desactualizada con respecto a production.
No tiene cambios de esquema en development que considere o deba conservar; solo desea una actualización rápida de los datos. Puedes realizar un restablecimiento limpio e instantáneo a los datos más recientes de la rama principal en una sola operación, lo que te ahorra la complicación de crear y restaurar ramas manualmente.
Cómo funciona el reinicio desde el elemento principal
Al restablecer una rama a su elemento primario, los datos y el esquema se reemplazan por los datos y el esquema más recientes de su elemento primario.
Puntos clave:
- Solo puedes restablecer una rama con los datos más recientes de su rama principal. Los restablecimientos a un momento dado basados en la marca de tiempo son posibles mediante la restauración a un momento dado, una característica similar con algunas diferencias: la restauración a un momento dado crea una nueva rama y está pensada más para la recuperación de datos que el flujo de trabajo de desarrollo.
- Este restablecimiento es una sobrescritura completa, no una actualización o una combinación. Los cambios locales realizados en la rama secundaria se pierden durante este restablecimiento.
- Las conexiones existentes se interrumpen temporalmente durante el restablecimiento. Sin embargo, los detalles de conexión no cambian. Todas las conexiones se vuelven a establecer en cuanto se realiza el restablecimiento.
- Las ramas raíz (como la rama del
productionproyecto) no se pueden restablecer porque no tienen ninguna rama primaria a la que restablecer.
Restablecer una rama desde su rama principal
Para restablecer una rama a su elemento primario:
- Dirígete a la página Ramas de tu proyecto en la aplicación Lakebase.
- Haga clic en el icono
situado junto a la rama que desea restablecer y seleccione Restablecer desde elemento principal.
- Confirme la operación de restablecimiento.
Nota:
Si la rama tiene a su vez ramas secundarias, el restablecimiento queda bloqueado. Primero debe eliminar las ramas secundarias antes de poder reiniciar la rama principal.
Eliminación de una rama
Importante
Eliminar una rama es una acción permanente que no se puede deshacer. Al eliminar una rama también se quitan:
- Todas las bases de datos que pertenecen a la rama
- Todos los roles asociados a la rama
- Los recursos de cálculo asociados con la rama
- Todos los datos y cambios específicos de esa rama
No se puede eliminar una rama que tenga ramas secundarias. Primero deben eliminarse las ramas secundarias.
Para eliminar una rama:
Interfaz de usuario
- Dirígete a la página Ramas de tu proyecto en la aplicación Lakebase.
- Haga clic en el
menú situado junto a la rama que desea eliminar y seleccione Eliminar rama.
- Escriba el nombre de la rama para confirmar la eliminación y haga clic en Eliminar.
SDK de Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# Delete branch
w.postgres.delete_branch(
name="projects/my-project/branches/development"
).wait()
print("Branch deleted")
La operación de eliminación es asincrónica. El .wait() método se bloquea hasta que se complete la eliminación. Todos los recursos de rama (bases de datos, roles, procesos y datos) se eliminarán permanentemente.
SDK de Java
import com.databricks.sdk.WorkspaceClient;
WorkspaceClient w = new WorkspaceClient();
// Delete branch
w.postgres().deleteBranch("projects/my-project/branches/development")
.waitForCompletion();
System.out.println("Branch deleted");
La operación de eliminación es asincrónica. El waitForCompletion() método se bloquea hasta que se complete la eliminación. Todos los recursos de rama (bases de datos, roles, procesos y datos) se eliminarán permanentemente.
Interfaz de línea de comandos (CLI)
# Delete a branch
databricks postgres delete-branch projects/my-project/branches/development
Este comando devuelve inmediatamente. La rama y todos sus recursos se eliminarán permanentemente.
curl
curl -X DELETE "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/development" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
Respuesta:
{
"name": "projects/my-project/branches/development/operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.protobuf.Empty"
}
}
Archivado automático de ramas
Para optimizar el uso de recursos, Lakebase archiva automáticamente las ramas inactivas. El archivado se administra mediante el sistema. Una rama con un proceso en ejecución nunca se archiva y una rama sin un proceso en ejecución se puede archivar después de un período de inactividad. El archivado no afecta a los datos o la configuración de la rama.
Las ramas protegidas no se archivan. Consulte Ramas protegidas.
Desarchivar una rama
No es necesario desarchivar una rama manualmente. Lakebase desarchiva automáticamente una rama cuando se accede a ella, como al conectarse a ella, consultarla, ver sus tablas o crear una rama secundaria. Cuando una rama no está archivada, sus ramas primarias hasta la rama raíz también se desarchivan.
Las ramas con grandes volúmenes de datos pueden tener tiempos de conexión y de consulta algo más lentos mientras se completa la desarchivación.