Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
Lakebase için deklaratif Otomasyon Paketleri desteği beta aşamasındadır.
Bu sayfada, en yaygın kullanılan özelliklere sahip, üretime hazır bir Lakebase Otomatik Ölçeklendirme projesi için eksiksiz bir Bildirim temelli Otomasyon Paketleri paketi gösterilir:
- Korumalı üretim dalı
- Okunabilir ikincil kopyalara sahip yüksek kullanılabilirlikli (HA) okuma-yazma uç noktası
- Hizmet sorumlusu için satır içi çalışma alanı düzeyi
CAN_MANAGEizni - Unity Catalog’dan sürekli senkronize tablo akışı
- Lakebase veritabanı için Unity Kataloğu bağlaması
- Lakebase projesine bağlı Databricks Uygulaması
Lakebase ile Bildirim temelli Otomasyon Paketleri'ne adım adım giriş için bkz. Bildirim temelli Otomasyon Paketleri ile Lakebase'i Yönetme.
Prerequisites
Başlamadan önce şunları yapmanız gerekir:
- Databricks CLI v1.0.0 veya üzeri. Sürümünüzü denetlemek için komutunu çalıştırın
databricks --version. Yüklemek veya yükseltmek için bkz. Databricks CLI'yı yükleme veya güncelleştirme. - Lakebase'in etkinleştirildiği bir Azure Databricks çalışma alanı.
- OAuth makineden makineye (M2M) kimlik doğrulaması için yapılandırılmış bir hizmet sorumlusu. Paket, projede bu asıl çalışma alanı
CAN_MANAGEiznini verir. Bkz. OAuth ile Azure Databricks'e hizmet sorumlusu erişimini yetkilendirme ve Proje izinlerini yönetme. - Eşitleme kaynağı olarak kullanmak üzere Veri Akışını Değiştir 'in (CDF) etkinleştirildiği Unity Kataloğu Delta tablosu. Veri eşitlemesine ihtiyacınız yoksa
postgres_synced_tablesvepostgres_catalogsbloklarını kaldırın.
Paket yapılandırmasını tamamlama
Paket, çalışma alanına özgü tüm değerler için değişkenleri kullanır. Bunları bir .databricks/bundle/<target>/variables.json dosyasında ayarlayın veya dağıtım sırasında --var ile iletin.
Proje oluşturduğunuzda, Azure Databricks otomatik olarak bir production dal, primary okuma-yazma uç noktası, kimliğinize bağlı bir sahip Postgres rolü ve bir databricks_postgres veritabanı oluşturur. Örtük olarak oluşturulan bu kaynakları yapılandırmak için bunları replace_existing: true ile bildirin.
bundle:
name: lakebase-typical-project
variables:
project_id:
description: 'Lakebase project ID (lowercase, hyphen-delimited)'
default: 'my-lakebase-project'
display_name:
description: 'Human-readable project name shown in the UI'
default: 'My Lakebase project'
pg_version:
description: 'Postgres major version'
default: 17
min_cu:
description: 'Minimum compute units on the default endpoint'
default: 0.5
max_cu:
description: 'Maximum compute units on the default endpoint'
default: 4.0
suspend_timeout:
description: 'Idle time before the default endpoint suspends. Ignored when no_suspension is true.'
default: '300s'
admin_sp_app_id:
description: 'Application ID of the service principal to grant CAN_MANAGE on the project'
default: '<your-sp-application-id>'
source_table:
description: 'Unity Catalog three-part name of the Delta table to sync (catalog.schema.table)'
default: '<catalog>.<schema>.<table>'
primary_key_column:
description: 'Primary key column of the source Delta table'
default: '<pk>'
storage_catalog:
description: 'Unity Catalog catalog where the sync pipeline stores its metadata'
default: '<catalog>'
storage_schema:
description: 'Unity Catalog schema where the sync pipeline stores its metadata'
default: '<schema>'
app_name:
description: 'Databricks App name (must be unique in the workspace)'
default: 'my-lakebase-app'
uc_catalog_id:
description: 'Name to register the Lakebase database in Unity Catalog'
default: 'my_lakebase_uc_catalog'
database_name:
description: 'Postgres-internal name for the app database'
default: 'app_database'
targets:
prod:
default: true
workspace:
host: https://<your-workspace>.cloud.databricks.com
resources:
# Project — top-level container for branches, endpoints, and databases.
# The permissions block grants workspace-level CAN_MANAGE to the service principal.
postgres_projects:
lakebase_project:
project_id: ${var.project_id}
# purge_on_delete: true # Uncomment to permanently delete on destroy (default: soft delete, 7-day retention).
pg_version: ${var.pg_version}
display_name: ${var.display_name}
default_endpoint_settings:
autoscaling_limit_min_cu: ${var.min_cu}
autoscaling_limit_max_cu: ${var.max_cu}
suspend_timeout_duration: ${var.suspend_timeout}
permissions:
- service_principal_name: ${var.admin_sp_app_id}
level: CAN_MANAGE
# Configure the implicitly created production branch as protected.
postgres_branches:
production:
branch_id: production
parent: ${resources.postgres_projects.lakebase_project.name}
no_expiry: true
is_protected: true
replace_existing: true
# Configure the implicitly created primary endpoint with HA.
# HA requires no_suspension: true. group.min: 2 adds a standby for automatic failover.
postgres_endpoints:
primary:
endpoint_id: primary
parent: ${resources.postgres_branches.production.name}
endpoint_type: ENDPOINT_TYPE_READ_WRITE
autoscaling_limit_min_cu: ${var.min_cu}
autoscaling_limit_max_cu: ${var.max_cu}
no_suspension: true
group:
min: 2
max: 2
enable_readable_secondaries: true
replace_existing: true
# Postgres role that owns the app database.
postgres_roles:
app_role:
role_id: app-role # Resource ID: lowercase letters, digits, and hyphens.
parent: ${resources.postgres_branches.production.name}
postgres_role: app_role # Postgres identifier: lowercase letters, digits, and underscores.
# Named Postgres database for the app.
postgres_databases:
app_db:
database_id: app-database
parent: ${resources.postgres_branches.production.name}
postgres_database: ${var.database_name}
role: ${resources.postgres_roles.app_role.id}
# Sync a Unity Catalog Delta table into the project continuously.
postgres_synced_tables:
orders_sync:
synced_table_id: '${var.storage_catalog}.${var.storage_schema}.orders_synced'
branch: ${resources.postgres_branches.production.name}
postgres_database: ${var.database_name}
source_table_full_name: ${var.source_table}
primary_key_columns:
- ${var.primary_key_column}
scheduling_policy: CONTINUOUS
create_database_objects_if_missing: true
new_pipeline_spec:
storage_catalog: ${var.storage_catalog}
storage_schema: ${var.storage_schema}
# Bind the Lakebase database into Unity Catalog so it is queryable as UC data.
postgres_catalogs:
lakebase_uc_catalog:
catalog_id: ${var.uc_catalog_id}
postgres_database: ${var.database_name}
branch: ${resources.postgres_branches.production.name}
create_database_if_missing: true
# Databricks App connected to the project.
# Update source_code_path to point to your app source directory.
apps:
lakebase_app:
name: ${var.app_name}
description: 'App backed by Lakebase autoscaling'
source_code_path: ./app_src
config:
command:
- flask
- run
- --host=0.0.0.0
- --port=8000
resources:
- name: lakebase-db
postgres:
branch: ${resources.postgres_branches.production.name}
database: ${resources.postgres_databases.app_db.name}
permission: CAN_CONNECT_AND_CREATE
Not
Her Lakebase projesi otomatik olarak kimliğinize bağlı bir databricks_postgres Postgres rolüne sahip olan bir veritabanı oluşturur. Bu paket, uygulama verilerini yalıtmak için ayrılmış bir uygulama rolüne ait ayrı bir adlandırılmış veritabanı (${var.database_name}) oluşturur. Örtük veritabanını ve rolü doğrudan kullanmak için postgres_roles ve postgres_databases kaynak bloklarını kaldırın, postgres_database: databricks_postgres değerini doğrudan postgres_synced_tables ve postgres_catalogs üzerinde ayarlayın ve uygulama kaynağını database: ${resources.postgres_branches.production.name}/databases/databricks-postgres olarak güncelleyin.
Bunun yerine, örtük sahip rolü ile databricks_postgres veritabanını paket yönetimine almak için, bunları mevcut kimlikleriyle replace_existing: true kullanarak bildirin. Veritabanı kimliği her zaman databricks-postgresşeklindedir. Rol kimliği, sabit bir ad olmak yerine Databricks kimliğinizden türetilir; bu nedenle önce onu bulun:
databricks postgres list-roles projects/<project-id>/branches/production
Ardından her iki kaynağı da bildirerek rolde zaten ayarlanmış olan her alanı eşleştirin.
membership_roles öğesinin atlanması, rol üstlenildiğinde rolden DATABRICKS_SUPERUSER üyeliğini kaldırır; bu nedenle bunu açıkça belirtin:
postgres_roles:
owner:
role_id: <role-id-from-list-roles>
parent: ${resources.postgres_branches.production.name}
postgres_role: user@databricks.com # Or the service principal application ID.
identity_type: USER # Or SERVICE_PRINCIPAL.
membership_roles:
- DATABRICKS_SUPERUSER
replace_existing: true
postgres_databases:
databricks_postgres:
database_id: databricks-postgres
parent: ${resources.postgres_branches.production.name}
postgres_database: databricks_postgres
role: ${resources.postgres_roles.owner.id}
replace_existing: true
Not
Bu paketin oluşturduğu kaynakları yok etmek için komutunu çalıştırın databricks bundle destroy -t prod. Varsayılan olarak proje, kalıcı olarak silinmeden önce 7 gün boyunca geri alınabilir şekilde silinmiş olarak tutulur; böylece saklama süresi içinde projeyi kurtarabilirsiniz. Yalnızca projeyi hemen silmek için Databricks CLI'yi --purge ile kullanın veya her destroy işleminde kalıcı olarak silmek için yukarıdaki proje kaynağında purge_on_delete: true satırını yorumdan çıkarın:
databricks postgres delete-project projects/<project-id> --purge
Paketi uygulama
Doğrulama ve dağıtma:
databricks bundle validate -t prod
databricks bundle deploy -t prod
İlk çalıştırmada tamamlanmazsa databricks bundle deploy yeniden çalıştırın.
Dağıtıma alınanlar
Paket aşağıdaki kaynakları oluşturur:
- Belirttiğiniz işlem varsayılanlarını içeren bir Lakebase Otomatik Ölçeklendirme projesi.
- Korumalı bir
productiondal. - HA ve okunabilir ikincilleri olan birincil okuma-yazma uç noktası.
- Unity Kataloğu Delta tablosunu proje veritabanına akışla aktaran sürekli eşitleme işlem hattı.
- Lakebase veritabanı tabanlı, Unity Catalog verileri olarak sorgulanabilen bir Unity Catalog kataloğu.
- Proje veritabanına bağlı bir Databricks Uygulaması.
- Belirttiğiniz hizmet sorumlusu için çalışma alanı
CAN_MANAGEizni.
Ek kaynaklar
- Yüksek kullanılabilirlik , HA desenlerini ve bunların üretimde ne zaman kullanılacağını kapsar.
- Eşitlenmiş tablolarla lakehouse verilerini sunma, zamanlama seçeneklerini ve işlem hattı yönetimini kapsar.
- Proje izinlerini yönetme , çalışma alanı düzeyinde ve veritabanı düzeyinde erişim denetimlerini kapsar.
- Özel bir Databricks uygulamasını Lakebase'e bağlama , Databricks Uygulamalarını otomatik ölçeklendirme projelerine bağlamayı gösterir.
- Bildirim temelli Otomasyon Paketleri kaynakları , bildirim temelli Otomasyon Paketleri kaynak başvurusunun tamamını sağlar.