Verwalten von Branches

Erstellen und verwalten Sie Verzweigungen, um unterschiedliche Entwicklungsworkflows, Testszenarien und Produktionsumgebungen zu unterstützen. Mit Zweigstellen können Sie mit isolierten Datenbankumgebungen arbeiten, ohne dass sich dies auf die Produktion auswirkt.

Hinweis

Informationen zu Zweigverwaltungsberechtigungen:

  • Zum Erstellen, Löschen oder Aktualisieren von Verzweigungen benötigen Sie die Berechtigung CAN MANAGE für das Projekt. Siehe "Projektberechtigungen verwalten".
  • Zum Erstellen von Datenbanken oder Rollen innerhalb einer Branch oder zum Anzeigen und Auflisten von Branches und deren Ressourcen, benötigen Sie die Berechtigung CAN USE oder CAN MANAGE auf Projektebene.
  • Weitere Informationen zur Funktionsweise von Verzweigungen, einschließlich der Beziehungen zwischen übergeordneten und untergeordneten Elementen, Speicher für die Kopie-bei-Schreibvorgang-Funktion und Verzweigungsstrategien, finden Sie unter Datenbankverzweigungen.

Grundlegendes zu Branches

Zweigübersicht

Eine Verzweigung in Lakebase Postgres ist eine unabhängige Datenbankumgebung, die den Speicher mit ihrer übergeordneten Verzweigung mithilfe der Kopie-bei-Schreibvorgang-Funktion teilt. Verzweigungen ermöglichen Folgendes:

  • Erstellen isolierter Entwicklungs- und Testumgebungen
  • Testen von Anwendungen anhand realistischer Datensätze
  • Implementieren von Datenbankentwicklungsworkflows

Zweigtypen und Strategien

Beim Erstellen einer Verzweigung können Sie je nach Ihren spezifischen Anforderungen aus mehreren Optionen wählen. Jede Option erstellt eine Verzweigung mit unterschiedlichen Datenmerkmalen und Anwendungsfällen.

Option Description
Verzweigungsdaten und Schema Erstellt eine Verzweigung vom aktuellen Zustand Ihrer übergeordneten Verzweigung. Ideal für Entwicklung, Tests mit aktuellen Daten und Featureverzweigungen.
Branch-Daten und Schemata von einem früheren Zeitpunkt Erstellt eine Verzweigung von einem bestimmten Zeitpunkt innerhalb des Wiederherstellungsfensters. Nützlich für die Point-in-Time-Wiederherstellung, historische Analyse und das Abfragen von Daten zu einem bestimmten Zeitpunkt. Verwenden Sie die Datumsauswahl, um den gewünschten Zeitpunkt auszuwählen.

Ablauf von Verzweigungen

Das Ablaufdatum von Branches ermöglicht es Ihnen, Zeitstempel für das automatische Löschen festzulegen. Wenn eine Verzweigung die Ablaufzeit erreicht, wird sie automatisch gelöscht. Dieses Feature hilft bei der Verwaltung temporärer Filialen und reduziert die Speicherkosten.

Gründe für das Ablaufenlassen von Verzweigungen

Ablaufende Verzweigungen eignen sich ideal für temporäre Verzweigungen mit vorhersehbarer Lebensdauer:

  • CI/CD-Umgebungen: Testverzweigungen, die nach Abschluss der Pipeline bereinigt werden sollten.
  • Featureentwicklung: Zeitlich begrenzte Featureverzweigungen mit bekannten Fristen.
  • Automatisierte Tests: Ephemerale Testumgebungen, die von Skripts erstellt wurden.
  • Entwicklungsworkflows: Temporäre Umgebungen, die nicht unbegrenzt beibehalten werden müssen.

Ohne automatischen Ablauf sammeln sich diese Verzweigungen mit der Zeit an, was die Speicherkosten erhöht und das Projekt unübersichtlich macht.

Tipp

Beispiel für Ablaufzeiten: CI/CD-Pipelines (2-4 Stunden), Demos (24-48 Stunden), Featureentwicklung (1-7 Tage), Langzeittests (30 Tage).

Funktionsweise des Ablaufs von Verzweigungen

Der Ablauf von Zweigstellen verwendet ein TTL-Modell (Time-to-Live). Wenn Sie einen Ablauf für eine Verzweigung festlegen, definieren Sie, wie lange die Verzweigung vor dem automatischen Löschen vorhanden sein soll.

Wenn Sie einen Ablaufzeitstempel für eine Verzweigung festlegen:

  1. Das System speichert sowohl den Ablaufzeitstempel (das geplante Datum und die Uhrzeit, zu der die Verzweigung gelöscht wird) als auch das TTL-Intervall (die Dauer zwischen Erstellung oder Aktualisierung und Ablauf)
  2. Ein Hintergrundprozess überwacht Verzweigungen und löscht sie, nachdem ihre Ablaufzeit erreicht wurde.
  3. Wenn Sie eine Verzweigung über ihr übergeordnetes Element zurücksetzen, wird der TTL-Countdown mit dem ursprünglichen Intervall neu gestartet.

Von Bedeutung

Das Löschen eines Branches ist dauerhaft und kann nicht rückgängig gemacht werden. Alle zugeordneten Daten und Computeressourcen werden ebenfalls gelöscht. Überprüfen Sie die Ablaufzeiten sorgfältig, bevor Sie sie festlegen.

Ablaufbeschränkungen für Verzweigungen

Um die Systemintegrität aufrechtzuerhalten, können Ablaufzeitstempel nicht hinzugefügt werden zu:

  • Geschützte Verzweigungen: Es ist nicht möglich, geschützte Verzweigungen ablaufen zu lassen oder Verzweigungen durch Ablaufen zu schützen.
  • Standardzweige: Standardzweige können nicht ablaufen, und ablaufende Zweige können nicht als Standard festgelegt werden.
  • Übergeordnete Verzweigungen: Können keine Verzweigungen mit untergeordneten Elementen ablaufen lassen oder untergeordnete Elemente aus ablaufenden Verzweigungen erstellen.

Hinweis

Wenn eine Verzweigung abläuft und gelöscht wird, werden auch alle zugeordneten Computeressourcen gelöscht. Stellen Sie sicher, dass alle kritischen Workloads vor Ablauf migriert werden.

Maximaler Ablaufzeitraum

Der maximale Ablaufzeitraum beträgt 30 Tage ab der aktuellen Uhrzeit. Wenn eine Verzweigung länger als 30 Tage bestehen soll, können Sie den Ablaufzeitstempel vorher aktualisieren, um die Lebensdauer zu verlängern.

Erstellen und Verwalten von Branches

Erstellen einer Verzweigung

So erstellen Sie eine Verzweigung:

Benutzeroberfläche

  1. Navigieren Sie in der Lakebase-App zur Seite "Branches " Ihres Projekts.
  2. Klicken Sie auf "Verzweigung erstellen ", und konfigurieren Sie Die Verzweigungsoptionen:
    • Geben Sie einen Branch-Namen ein (erforderlich)
    • Wählen Sie eine Verzweigungsoption aus (Verzweigungsdaten und -schema oder Verzweigungsdaten und -schema von einem früheren Zeitpunkt)
    • Legen Sie optional einen Ablauf mithilfe der Dropdownliste zum automatischen Löschen fest: Wählen Sie eine Voreinstellung (nach 1 Stunde, Nach 1 Tag oder nach 7 Tagen), einen benutzerdefinierten Wert (bis zu 30 Tage) oder "Nie " ohne Ablauf aus. Details finden Sie unter Branch-Auslauf .
  3. Klicken Sie auf "Erstellen ", um die Verzweigung zu erstellen.

Dialogfeld „Verzweigung erstellen“

Python SDK

Geben Sie eine Ablaufrichtlinie mithilfe einer der folgenden Optionen an:BranchSpec

  • ttl: Ein Duration Objekt (Beispiel: Duration(seconds=604800) 7 Tage)
  • expire_time: Ein bestimmtes Ablaufdatum datetime
  • no_expiry=True: Für Verzweigungen, die niemals ablaufen sollen
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}")

Um eine dauerhafte Verzweigung ohne Ablaufdatum zu erstellen, legen Sie no_expiry=True in BranchSpec fest:

# 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}")

Java-SDK

Geben Sie eine Ablaufrichtlinie mithilfe einer der folgenden Optionen an:BranchSpec

  • setTtl(Duration): Ein com.google.protobuf.Duration Objekt (Beispiel: Duration.newBuilder().setSeconds(604800L).build() 7 Tage)
  • setExpireTime(Timestamp): Ein bestimmtes Ablaufdatum com.google.protobuf.Timestamp
  • setNoExpiry(true): Für Verzweigungen, die niemals ablaufen sollen
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());

Um eine dauerhafte Verzweigung ohne Ablaufdatum zu erstellen, legen Sie no_expiry=true in BranchSpec fest:

// 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());

Befehlszeilenschnittstelle (CLI)

Geben Sie eine Ablaufrichtlinie mithilfe eines der folgenden Felder im spec JSON-Code an:

  • ttl: Dauerzeichenfolge (Beispiel: "604800s" 7 Tage)
  • expire_time: ISO 8601-Zeitstempel (Beispiel: "2025-01-15T10:30:00Z")
  • no_expiry: true: Für Verzweigungen, die niemals ablaufen sollen
# 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

Geben Sie eine Ablaufrichtlinie mithilfe eines der folgenden Felder im Anforderungstext-JSON an:

  • ttl: Dauerzeichenfolge (Beispiel: "604800s" 7 Tage)
  • expire_time: ISO 8601-Zeitstempel (Beispiel: "2025-01-15T10:30:00Z")
  • no_expiry: true: Für Verzweigungen, die niemals ablaufen sollen
# 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

Filialen anzeigen

Anzeigen in der Benutzeroberfläche

Um alle Verzweigungen in Ihrem Lakebase-Projekt anzuzeigen, wählen Sie Ihr Projekt in der Lakebase-App aus, und navigieren Sie in der linken Navigationsleiste zu Branches.

In der Verzweigungstabelle werden wichtige Informationen zu den einzelnen Verzweigungen angezeigt:

Niederlassungstabelle

Auf der Seite "Verzweigungen" wird eine umfassende Tabelle mit Informationen zu den einzelnen Verzweigungen in Ihrem Projekt angezeigt:

Kolumne Description
Filiale Der Verzweigungsname. Die Standardverzweigung ist mit „DEFAULT“ gekennzeichnet.
Eltern Gibt die übergeordnete Verzweigung an, aus der diese Verzweigung erstellt wurde, wodurch Sie Die Verzweigungshierarchie nachverfolgen können.
Aktive Zeit Die Anzahl der Stunden, die die Rechenressourcen der Zweigstelle aktiv waren.
Primäre Berechnung Zeigt die aktuelle Computegröße und den Status (z. B. IDLE oder ACTIVE) für den Compute der Verzweigung an.
Datengröße Die Größe der Verzweigungsdaten. Enthält keinen Verlauf.
Erstellt von Der Benutzer oder Dienst, der die Verzweigung erstellt hat.
Zuletzt aktiv Zeigt an, wann der Compute der Verzweigung zuletzt aktiv war.

Klicken Sie auf eine beliebige Verzweigung in der Tabelle, um die Verzweigungsübersichtsseite anzuzeigen, auf der detaillierte Informationen zu der ausgewählten Verzweigung angezeigt werden:

Branch-Übersichtsseite

Auf der Seite "Branch-Übersicht" werden detaillierte Informationen oben angezeigt, einschließlich der wichtigsten Kennzahlen und Metadaten:

Feld Description
ID Der eindeutige Branch-Bezeichner (mit br-Präfix)
Erstellt am Datum und Uhrzeit der Erstellung der Verzweigung
Berechnen von Stunden Gesamtanzahl der Computestunden, die von der Verzweigung verwendet werden
Aktive Stunden Verwendete Stunden seit einem bestimmten Datum berechnen
Datengröße Die Größe der Verzweigungsdaten (ohne Verlauf)
Erstellt von Der Benutzer, der die Verzweigung erstellt hat

Die Seite "Filialübersicht" enthält mehrere Registerkarten zum Verwalten verschiedener Aspekte der Filiale.

Registerkarte Description
Berechnet Zeigen Sie den primären Compute für die Verzweigung an und verwalten Sie ihn. Siehe "Compute verwalten".
Rollen und Datenbanken Verwalten Sie Datenbankrollen und Datenbanken, die der Niederlassung zugeordnet sind. Siehe "Datenbanken verwalten" und "Rollen verwalten".
Unterzweige Anzeigen aller Verzweigungen, die ausgehend von dieser Verzweigung erstellt wurden

Programmgesteuertes Abrufen einer Verzweigung

So rufen Sie Details zu einer bestimmten Verzweigung mithilfe der Postgres-API ab:

Python SDK
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")
Java-SDK
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");
Befehlszeilenschnittstelle (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

Programmatisch auflisten

So listen Sie alle Verzweigungen in einem Projekt mithilfe der Postgres-API auf:

Python SDK
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}")
Java-SDK
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());
}
Befehlszeilenschnittstelle (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

Vergleichen von Verzweigungsschemas

Überprüfen Sie die Schemaunterschiede zwischen einer untergeordneten Verzweigung und ihrer übergeordneten Verzweigung, bevor Sie Änderungen zusammenführen. Schema-Diff zeigt einen parallelen SQL-DDL-Vergleich, der hinzugefügte, entfernte oder geänderte Datenbankobjekte wie Tabellen, Spalten, Indizes und Einschränkungen hervorhebt.

So vergleichen Sie Schemas zwischen Zweigniederlassungen:

  1. Navigieren Sie in der Lakebase-App zu der Übersichtsseite einer untergeordneten Verzweigung.
  2. Klicken Sie im Abschnitt Übergeordnete Verzweigung auf Schemaunterschiede.
  3. Im Dialogfeld Schema diff:
    • Basis: Wählen Sie die Basisverzweigung für den Vergleich aus (standardmäßig die übergeordnete Verzweigung).
    • Datenbank: Wählen Sie die datenbank aus, die verglichen werden soll.
    • Vergleichen: Wählen Sie die Verzweigung aus, die mit der Basis verglichen werden soll (standardmäßig die aktuelle untergeordnete Verzweigung).
  4. Klicken Sie auf Vergleichen.

Grundlegendes zu den angezeigten Unterschieden

Wenn sich Schemas unterscheiden, zeigt die Diff-Ansicht einen parallelen Vergleich von SQL DDL-Anweisungen an:

Schema-Diff, das Unterschiede zwischen Branches mit farb-codierten SQL-DDL-Änderungen zeigt

Rote Linien zeigen, was aus dem Basiszweig entfernt oder geändert wurde, grüne Linien zeigen, was in der Vergleichszweigung hinzugefügt oder geändert wurde. Der Diff erfasst Änderungen an Tabellendefinitionen, Spalten, Einschränkungen, Indizes und anderen Datenbankobjekten.

Wenn zwischen den ausgewählten Verzweigungen keine Unterschiede bestehen, wird eine Erfolgsmeldung angezeigt, in der bestätigt wird, dass die Schemas synchronisiert sind:

Schema-Differenz, die zeigt, dass die Schemas synchron sind

Verwenden Sie Schemaunterschiede für die vor der Zusammenführung durchgeführte Überprüfung, die Entwicklungsnachverfolgung, die Drifterkennung und die Dokumentation von Änderungen. Informationen zum Anzeigen von Schema-Diff in einem vollständigen Entwicklungsworkflow finden Sie in der Anleitung: Branch-basierter Entwicklungsworkflow.

Hinweis

Schema diff vergleicht nur Datenbankschema (DDL) und nicht Dateninhalte. Für den Vergleich werden die neuesten verfügbaren Daten (Head) aus beiden Verzweigungen verwendet.

Branch-Einstellungen aktualisieren

Umbenennen einer Verzweigung

Das Umbenennen einer Verzweigung wird derzeit nicht von der Benutzeroberfläche oder API unterstützt. Die Option "Branch umbenennen" erscheint im Kebab-Menüsymbol-Menü in der Benutzeroberfläche, ist aber deaktiviert.

Als Standard festlegen

Jedes Lakebase-Projekt wird mit einem standardverzweigten Namen production erstellt, Sie können jedoch jede Verzweigung als Standard festlegen. Die Standardverzweigung ist vom gleichzeitig aktiven Computelimit ausgenommen, sodass sichergestellt wird, dass sie jederzeit verfügbar bleibt.

Hinweis

Das Festlegen einer Verzweigung als Standard wird nicht mithilfe der API unterstützt.

So legen Sie eine Verzweigung als Standard fest:

  1. Navigieren Sie in der Lakebase-App zur Seite "Branches " Ihres Projekts.
  2. Klicken Sie auf das Kebab-Menüsymbol neben dem Zweig, den Sie als Standard festlegen möchten.
  3. Wählen Sie "Als Standard festlegen" aus, und bestätigen Sie den Vorgang.

Als geschützt festlegen

Geschützte Verzweigungen helfen Ihnen dabei, kritische Verzweigungen vor versehentlichen Änderungen oder Löschungen zu schützen. Geschützte Verzweigungen können aufgrund von Inaktivität nicht gelöscht, zurückgesetzt oder archiviert werden. Projekte mit geschützten Verzweigungen und deren zugeordneten Berechnungen können ebenfalls nicht gelöscht werden.

So legen Sie eine Verzweigung als geschützt fest:

Benutzeroberfläche
  1. Navigieren Sie in der Lakebase-App zu Branches , und wählen Sie den Zuzweig aus, den Sie schützen möchten.
  2. Klicken Sie auf "Schützen ", und bestätigen Sie Ihre Auswahl.

Filialen schützen

Ihr Branch ist nun als geschützt gekennzeichnet, wie durch das Schildsymbol angegeben, das neben dem Branchnamen angezeigt wird.

Python SDK
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}")

Um den Schutz zu entfernen, setzen Sie is_protected=False im BranchSpec.

Java-SDK
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());

Um den Schutz zu entfernen, setzen Sie setIsProtected(false) im BranchSpec.

Befehlszeilenschnittstelle (CLI)
# Set a branch as protected
databricks postgres update-branch projects/my-project/branches/production spec.is_protected \
  --json '{
    "spec": {
      "is_protected": true
    }
  }'

Legen Sie im JSON "is_protected": false fest, um den Schutz zu entfernen.

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

Legen Sie zum Entfernen des Schutzes "is_protected": false im Anforderungstext fest.

Ausführliche Informationen zu geschützten Zweigen, einschließlich der Kennwortverwaltung für untergeordnete Zweige, finden Sie unter "Geschützte Zweige".

Ablaufdatum des Updates

Sie können einen Ablaufzeitstempel festlegen, wenn Sie eine Verzweigung erstellen oder später aktualisieren.

Beim Erstellen einer Verzweigung
  1. Navigieren Sie in der Lakebase-App zur Seite "Branches " Ihres Projekts.
  2. Klicken Sie auf "Verzweigung erstellen", geben Sie einen Verzweigungsnamen ein (erforderlich), konfigurieren Sie Die Verzweigungsoptionen, und wählen Sie eine Option für die automatische Löschung aus (eine Voreinstellung, ein benutzerdefinierter Wert bis zu 30 Tage oder nie für keinen Ablauf).
  3. Klicken Sie auf "Erstellen".
Branch-Ablaufdatum aktualisieren

So aktualisieren oder entfernen Sie einen Ablaufzeitstempel für eine vorhandene Verzweigung:

Benutzeroberfläche
  1. Navigieren Sie in der Lakebase-App zur Seite "Branches " Ihres Projekts.
  2. Klicken Sie auf das Menü Kebab-Menü-Symbol neben der Verzweigung, und wählen Sie Ablaufdatum aktualisieren aus.
  3. Wählen Sie ein neues Datum und eine neue Uhrzeit aus, oder deaktivieren Sie Ablaufdatum, um das Ablaufen zu entfernen, und klicken Sie dann auf Speichern.

Branch-Ablauf aktualisieren

Python SDK
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}")

Um das Ablaufdatum zu entfernen, setzen Sie no_expiry=True in BranchSpec und fügen Sie "spec.expiration" in die Aktualisierungsmaske ein.

Java-SDK
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());

Um das Ablaufdatum zu entfernen, setzen Sie setNoExpiry(true) in BranchSpec und fügen Sie "spec.expiration" in die Aktualisierungsmaske ein.

Befehlszeilenschnittstelle (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"
    }
  }'

Um das Ablaufdatum zu entfernen, setzen Sie "no_expiry": true im JSON-Code.

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

Legen Sie zum Entfernen des Ablaufdatums "no_expiry": true im Anforderungstext fest.

Ablaufdatum der Verzweigung anzeigen

Um zu überprüfen, ob für eine Verzweigung ein Ablaufdatum festgelegt ist, navigieren Sie zur Seite 'Branches' Ihres Projekts und klicken Sie auf die gewünschte Verzweigung. Die Ablaufdatum wird in den Filialdetails angezeigt.

Verzweigung vom übergeordneten Element aus zurücksetzen

Sie können eine Verzweigung zurücksetzen, um sie sofort mit dem neuesten Schema und den neuesten Daten von der übergeordneten Verzweigung aus aktualisieren. Auf diese Weise können Sie Probleme beheben, mit der Entwicklung neuer Features beginnen oder die verschiedenen Verzweigungen in Ihrer Umgebung synchron halten.

Beispielszenario

Wenn Sie mit Branches arbeiten, können Sie sich in einer Situation befinden, in der Sie Ihren Arbeitszweig auf die neuesten Daten aus Ihrem Parent-Branch aktualisieren müssen.

Angenommen, Sie verwenden die zwei untergeordneten Verzweigungen staging und development, die von Ihrer Verzweigung production aus abgezweigt wurden. Sie haben an der Verzweigung development gearbeitet und sind der Ansicht, dass sie im Vergleich zu production zu stark veraltet ist.

Sie haben keine Schemaänderungen in development zu berücksichtigen oder beizubehalten; Sie möchten lediglich die Daten schnell aktualisieren. Sie können in einem einzigen Vorgang vom übergeordneten Element aus eine saubere, sofortige Zurücksetzung auf die neuesten Daten durchführen, sodass Sie sich die Schwierigkeiten beim manuellen Erstellen und Wiederherstellen von Verzweigungen sparen.

So funktioniert das Zurücksetzen vom übergeordneten Element aus

Wenn Sie eine Verzweigung auf das übergeordnete Element zurücksetzen, werden die Daten und das Schema vollständig durch die neuesten Daten und das neueste Schema aus dem übergeordneten Element ersetzt.

Wichtige Punkte:

  • Sie können eine Verzweigung nur auf die neuesten Daten des übergeordneten Elements zurücksetzen. Point-in-Time-Zurücksetzungen basierend auf dem Zeitstempel sind mithilfe der Point-in-Time-Wiederherstellung möglich, ein ähnliches Feature mit einigen Unterschieden: Die Point-in-Time-Wiederherstellung erstellt eine neue Verzweigung und ist eher für die Datenwiederherstellung als für den Entwicklungsworkflow vorgesehen.
  • Diese Zurücksetzung ist eine komplette Überschreibung, keine Aktualisierung oder Zusammenführung. Alle lokalen Änderungen, die an der untergeordneten Verzweigung vorgenommen wurden, gehen während dieser Zurücksetzung verloren.
  • Vorhandene Verbindungen werden während des Zurücksetzens vorübergehend unterbrochen. Ihre Verbindungsdetails werden jedoch nicht geändert. Alle Verbindungen werden wiederhergestellt, sobald der Reset erfolgt.
  • Stammzweige (z. B. die Verzweigung Ihres Projekts production ) können nicht zurückgesetzt werden, da sie keine übergeordnete Verzweigung haben, auf die zurückgesetzt werden soll.

Zurücksetzen einer Verzweigung über ihr übergeordnetes Element

So setzen Sie eine Verzweigung auf ihr übergeordnetes Element zurück:

  1. Navigieren Sie in der Lakebase-App zur Seite "Branches " Ihres Projekts.
  2. Klicken Sie auf das Menü Kebab-Menü-Symbol neben der Verzweigung, die Sie zurücksetzen möchten, und wählen Sie Vom übergeordneten Element aus zurücksetzen aus.
  3. Bestätigen Sie das Zurücksetzen.

Zurücksetzen der Verzweigung vom übergeordneten Element aus

Hinweis

Wenn die Verzweigung über eigene untergeordnete Verzweigungen verfügt, wird das Zurücksetzen blockiert. Sie müssen die untergeordneten Verzweigungen zuerst löschen, bevor Sie die übergeordnete Verzweigung zurücksetzen können.

Löschen einer Verzweigung

Von Bedeutung

Das Löschen eines Branches ist eine dauerhafte Aktion, die nicht rückgängig gemacht werden kann. Durch das Löschen einer Verzweigung wird außerdem Folgendes entfernt:

  • Alle Datenbanken, die zum Zweig gehören
  • Alle Rollen, die der Niederlassung zugeordnet sind
  • Die Rechnerressourcen, die dem Branch zugeordnet sind
  • Alle Daten und Änderungen, die für diese Verzweigung spezifisch sind

Verzweigungen mit untergeordneten Verzweigungen können nicht gelöscht werden. Zuerst müssen die untergeordneten Verzweigungen gelöscht werden.

So löschen Sie eine Verzweigung:

Benutzeroberfläche

  1. Navigieren Sie in der Lakebase-App zur Seite "Branches " Ihres Projekts.
  2. Klicken Sie auf das Kebab-Menüsymbol. Menü neben der Verzweigung, die Sie löschen möchten, und wählen Sie "Verzweigung löschen" aus.
  3. Geben Sie den Verzweigungsnamen ein, um den Löschvorgang zu bestätigen, und klicken Sie auf "Löschen".

Python SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

# Delete branch
w.postgres.delete_branch(
    name="projects/my-project/branches/development"
).wait()

print("Branch deleted")

Der Löschvorgang ist asynchron. Die .wait() Methode blockiert, bis der Löschvorgang abgeschlossen ist. Alle Ressourcen des Branches (Datenbanken, Rollen, Berechnungsressourcen und Daten) werden endgültig gelöscht.

Java-SDK

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");

Der Löschvorgang ist asynchron. Die waitForCompletion() Methode blockiert, bis der Löschvorgang abgeschlossen ist. Alle Ressourcen des Branches (Datenbanken, Rollen, Berechnungsressourcen und Daten) werden endgültig gelöscht.

Befehlszeilenschnittstelle (CLI)

# Delete a branch
databricks postgres delete-branch projects/my-project/branches/development

Dieser Befehl liefert sofort eine Rückmeldung. Die Verzweigung und alle zugehörigen Ressourcen werden dauerhaft gelöscht.

cURL

curl -X DELETE "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/development" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq

Antwort:

{
  "name": "projects/my-project/branches/development/operations/...",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Grenzwert für nicht archivierte Verzweigungen

Die nicht archivierten Verzweigungen begrenzen die Anzahl der Verzweigungen, die gleichzeitig in einem aktiven (nicht archivierten) Zustand verbleiben können. Wenn Branches über einen längeren Zeitraum inaktiv sind, werden sie möglicherweise automatisch archiviert, um die Ressourcennutzung zu optimieren. Der Grenzwert beträgt 10 nicht archivierte Verzweigungen pro Projekt.

Archivierte Verzweigungen können bei Bedarf wiederhergestellt werden, aber die Gesamtzahl der aktiven, nicht archivierten Verzweigungen kann diesen Grenzwert nicht überschreiten.

Wichtig: Geschützte Branches und die Standardbranch sind von der automatischen Archivierung ausgenommen und bleiben jederzeit verfügbar.