Compartir a través de


Ramas

Importante

El escalado automático de Lakebase está en Beta en las siguientes regiones: eastus2, westeurope, westus.

El escalado automático de Lakebase es la versión más reciente de Lakebase con proceso de escalado automático, escalado a cero, bifurcación y restauración instantánea. Para ver la comparación de características con Lakebase Provisioned, consulte Elección entre versiones.

La bifurcación en Lakebase le permite crear versiones, probar y evolucionar el entorno de datos de forma segura, de forma similar a la bifurcación del código en Git. Puede crear de forma instantánea ramas aisladas y totalmente funcionales para los cambios de esquema de desarrollo, experimentación o pruebas, sin afectar a las cargas de trabajo de producción.

De forma predeterminada, Lakebase crea una sola production rama al crear un nuevo proyecto. Esta es la rama predeterminada, diseñada para hospedar los datos de producción de la aplicación.

Puede crear ramas adicionales según sea necesario para ajustarse al flujo de trabajo. Por ejemplo, agregue una development rama para compilar y probar, una staging rama para pruebas de preproducción o cree ramas por desarrollador para un aislamiento completo. Cada rama funciona de forma independiente: los cambios en un nodo hijo nunca afectan a su nodo padre. Con el restablecimiento de rama, puede actualizar cualquier rama secundaria de su elemento primario para obtener el esquema y los datos más recientes, sin scripts de propagación o desmontaje de datos.

Funcionamiento de las ramas

Relaciones entre padres e hijos

Cada rama (excepto la rama raíz) tiene un padre. Esto crea una jerarquía:

production (root branch)
├── staging (child of production)
│   └── feature-test (child of staging)
└── development (child of production)
    └── bugfix-branch (child of development)

Esta jerarquía proporciona un aislamiento importante: los cambios que realices en una rama secundaria no afectan a su rama principal, y los cambios en una rama principal no se reflejan automáticamente en las ramas secundarias. Cuando necesite datos actualizados del padre, puede restablecer la rama hija. También puede crear ramas desde cualquier punto del historial del padre, lo que resulta útil para la recuperación en un momento específico, las pruebas con datos históricos o escenarios de cumplimiento.

Al crear una rama, puede elegir si se va a inicializar a partir de los datos actuales o desde un momento dado específico. Consulte Creación de una rama para obtener instrucciones paso a paso y detalles sobre cada opción.

Almacenamiento de copia en escritura

Lakebase utiliza la tecnología de copia en escritura (copy-on-write) para hacer que la bifurcación entre padre e hijo sea eficiente. Al crear una nueva rama, hereda tanto el esquema como los datos de su rama padre, pero comparte el almacenamiento subyacente a través de punteros a la misma información. Solo cuando se modifican los datos, Lakebase escribe datos nuevos. Esto significa lo siguiente:

  • Las ramas aparecen al instante; el tamaño de la base de datos no tiene ningún impacto en el tiempo de creación de la rama.
  • Solo se paga por los datos que realmente cambian entre las ramas.
  • La creación de ramas no tiene ningún impacto en el rendimiento en la carga de trabajo de producción
production branch                child branch (at creation)
┌─────────────────┐       ┌─────────────────┐
│  [Data A]       │◄──────│  → Data A       │  (shared)
│  [Data B]       │◄──────│  → Data B       │  (shared)
│  [Data C]       │◄──────│  → Data C       │  (shared)
└─────────────────┘       └─────────────────┘

After modifying data in child branch:
┌─────────────────┐       ┌─────────────────┐
│  [Data A]       │◄──────│  → Data A       │  (shared)
│  [Data B]       │       │  [Data B']      │  (changed)
│  [Data C]       │◄──────│  → Data C       │  (shared)
└─────────────────┘       └─────────────────┘
                          Only changed data is stored separately

Trabajar con ramas

Restablecimiento de rama

El restablecimiento de rama actualiza instantáneamente una rama secundaria para que coincida con el estado actual de su rama padre. Esto resulta útil cuando desea actualizar la rama de desarrollo o de prueba con los datos más recientes de su rama padre. La operación se completa al instante mediante la tecnología de copia en escritura y los detalles de conexión siguen siendo los mismos.

El restablecimiento de rama solo funciona en una dirección (elemento primario → secundario). Para mover los cambios de hijo a padre, use las herramientas de migración estándar para aplicar los cambios de esquema. Consulte Restablecer una rama para obtener pasos y escenarios detallados.

Restauración a un momento dado

Puede crear una rama desde un momento dado dentro de la ventana de restauración, lo que resulta útil para recuperarse de errores de datos, como eliminaciones accidentales, investigar problemas pasados o acceder a datos históricos con fines de auditoría y cumplimiento. Por ejemplo, si se eliminó ayer una tabla crítica a las 10:23 a.m., puede crear una rama configurada a las 10:22 a.m. para extraer los datos que faltan. Del mismo modo, puede crear ramas que reflejen el estado de la base de datos en fechas específicas para reconciliaciones financieras, auditorías normativas o análisis forense. A diferencia del restablecimiento de rama (que actualiza una rama existente), la recuperación a un momento dado crea una nueva rama a partir de datos históricos. Consulte Restauración a un momento dado para obtener más información.

Tipos de rama especiales

Rama predeterminada

Al crear un proyecto de Lakebase, obtendrá automáticamente una sola production rama como la rama predeterminada. Comienza vacío, listo para tus datos. Puede crear ramas secundarias para desarrollo y pruebas: pruebe los cambios de esquema en una rama secundaria y, a continuación, ejecute las mismas migraciones con production cuando esté seguro de que funcionan.

La rama predeterminada nunca escala a cero, lo que garantiza que permanece disponible incluso cuando otras instancias de rama se escalan hacia abajo durante períodos de inactividad.

Ramas protegidas

Las ramas protegidas tienen medidas de seguridad para evitar cambios accidentales. No se pueden eliminar ni restablecer desde su elemento primario y están exentos de ser archivados automáticamente debido a la inactividad. Las ramas protegidas también bloquean la eliminación del proyecto mientras existen, lo que garantiza que no se puede quitar accidentalmente la infraestructura crítica. Use ramas protegidas para datos críticos como producción. Consulte Ramas protegidas para obtener más información.

Cómo afecta la bifurcación al consumo de recursos

Con las sucursales, solo pagas por lo que realmente usas.

Almacenamiento: solo paga por los datos que cambian. Si crea una rama de desarrollo y modifica 1 GB de datos en una base de datos de 100 GB, paga aproximadamente 1 GB de almacenamiento, no 200 GB. Los 99 GB sin cambios se comparten entre ramas.

Cómputo: Cada rama tiene su propio cómputo que puedes escalar de forma independiente. Solo paga por las horas de cómputo activas. Calcula la escala a cero cuando está inactiva. Esto significa que una rama de desarrollo que se usa en ocasiones cuesta mucho menos que ejecutar un servidor de desarrollo dedicado 24/7.

Rama predeterminada: su rama computacional predeterminada nunca escala a cero, lo que garantiza que la carga de trabajo de producción permanezca disponible.

Estrategias de rama

Estas son algunas formas comunes en que los equipos organizan sus ramas:

Simple (individuos y equipos pequeños)

** Utiliza tu rama por defecto con una única rama de desarrollo.

production
└── development

Tu development rama es donde se crean nuevas características de forma segura. Puede realizar cambios de esquema, agregar datos de prueba y experimentar sin ningún riesgo para la rama de producción. Cuando esté listo, ejecute las migraciones de esquemas probadas contra production (usando su herramienta de migración), y luego restablezca development para comenzar la siguiente funcionalidad con datos nuevos.

Con almacenamiento provisional

Agregue una rama de ensayo para las pruebas de preproducción:

production
├── staging
└── development

Si necesita pruebas de preproducción, mantenga una staging rama que refleje los datos de la rama de producción. Implemente la aplicación allí, ejecute pruebas de integración y rendimiento con datos realistas y obtenga confianza antes de continuar. Restablezca staging periódicamente desde production para actualizar sus datos de prueba.

Ramas por desarrollador

Cada desarrollador trabaja completamente aislado.

production
└── development
    ├── dev-alice
    ├── dev-bob
    └── dev-charlie

Este patrón impide que los desarrolladores interfieran con el trabajo del otro y permite a todos probar los cambios de esquema de forma independiente. Cada desarrollador puede experimentar con sus propios cambios de esquema y modificaciones de datos sin afectar a otros, y, a continuación, aplicar migraciones probadas a la development rama production compartida cuando esté listo.

Pasos siguientes