Eşitlenmiş tablolarla göl evi verilerini sunma

Eşitlenmiş tablolar, Lakebase Postgres aracılığıyla lakehouse verilerini sunmanızı sağlar. Unity Kataloğu tabloları Postgres ile eşitlenir, böylece uygulamalar lakehouse verilerini düşük gecikme süresiyle doğrudan sorgulayabilir. Bu işlem genellikle ters ETL olarak bilinir. Lakehouse analiz ve zenginleştirme için iyileştirilirken, Lakebase hızlı arama stili sorgular ve işlem tutarlılığı gerektiren operasyonel iş yükleri için tasarlanmıştır.

Lakehouse'tan Lakebase'e ve uygulamalara veri akışını gösteren mimari diyagramı

Eşitlenen tablolar nedir?

Eşitlenmiş tablolar, Unity Kataloğu'ndan Lakebase Postgres aracılığıyla analiz sınıfı veriler sunmanızı sağlayarak düşük gecikme süreli sorgulara ve tam ACID işlemlerine ihtiyaç duyan uygulamaların kullanımına sunmanızı sağlar. Verilerinizi gerçek zamanlı uygulamalarda kullanıma hazır tutarak analiz depolama ve işletim sistemleri arasındaki boşluğu kapatır.

Desteklenen kaynaklar

Eşitlenen tablolar aşağıdaki Unity Kataloğu kaynak türlerini destekler:

  • Yönetilen ve harici Delta tabloları
  • Yönetilen ve harici Iceberg tabloları
  • Görünümler ve materyalize edilmiş görünümler

Nasıl çalışır?

Databricks senkronize tablolar, Lakebase'de Unity Kataloğunuzun yönetilen bir kopyasını oluşturur. Eşitlenmiş tablo oluşturduğunuzda şunları elde edersiniz:

  1. Unity Kataloğu'nda senkronizasyon işlem hattına referans veren senkronize edilmiş tablo
  2. Lakebase'de bir Postgres tablosu (salt okunur ve uygulamalarınız tarafından sorgulanabilir)

Eşitlenmiş tablolardaki üç tablo ilişkisini gösteren diyagram

Örneğin, altın tabloları, mühendislik özelliklerini veya ML çıkışlarını analytics.gold.user_profiles yeni bir eşitlenmiş tabloyla analytics.gold.user_profiles_synced eşitleyebilirsiniz. Postgres'te Unity Kataloğu şema adı Postgres şema adı olur, bu nedenle şöyle görünür gold.user_profiles_synced:

SELECT * FROM gold.user_profiles_synced WHERE user_id = 12345;

Uygulamalar standart Postgres sürücülerine bağlanır ve eşitlenen verileri kendi işletim durumlarıyla birlikte sorgular.

Uyarı

Eşitlenmiş bir tabloyu doğrudan Postgres'te değiştirmek mümkün olsa da Azure Databricks kaynakla veri bütünlüğünü korumak için yalnızca okuma sorguları çalıştırmanızı kesinlikle önerir. Eşitlenen tablolarda desteklenen işlemler için bkz. Postgres'te eşitlenen tablolarda izin verilen işlemler.

Eşitleme işlem hatları, hem Unity Kataloğu eşitlenen tablosunu hem de Postgres tablosunu kaynak tablodaki değişikliklerle sürekli güncelleştirmek için yönetilen Lakeflow işlem hatlarını kullanır. Her eşitleme, Lakebase veritabanınıza en fazla 16 bağlantı kullanabilir.

Lakebase Postgres, işlem garantileri ile 1.000'e kadar eşzamanlı bağlantıyı destekler, böylece uygulamalar zenginleştirilmiş verileri okurken aynı veritabanındaki eklemeleri, güncelleştirmeleri ve silmeleri de işleyebilir.

Hızlandırılmış ilk senkronizasyon

Snapshot modu ve tam yenileme senkronizasyonları, LTAP mimarisinin beta özelliği olan LTAP Direct Writes'ı kullanabilir; bu özellik, toplu yazımı canlı hesaplama uç noktası üzerinden yönlendirmek yerine doğrudan Lakebase şubenizi destekleyen depolama katmanına yükler. Bu, büyük ilk yüklemeler ve tam yenilemeler için gereken süreyi azaltır ve toplu kopyalama sırasında çalışan uç noktaya sorgu yükü eklemez.

LTAP Direct Writes beta sürümünde. Çalışma alanınız için etkinleştirmek için, uygunluğu doğrulamak için Azure Databricks hesap ekibinizle iletişime geçin.

Eşitleme modları

Uygulamanızın gereksinimlerine göre doğru eşitleme modunu seçin:

Modu Açıklama Ne zaman kullanılır? Performans
Snapshot Tüm verilerin tek seferlik kopyası Kaynak her döngüde satırların %10'unu değiştirir veya kaynak CDF'yi (görünümler, Iceberg tabloları) desteklemez. 10% kaynak veriyi değiştirirken >10 kat daha verimli
Tetiklenen İsteğe bağlı veya aralıklarla çalışan zamanlanmış güncelleştirmeler Kaynak satırlar bilinen bir ritimde değişir. Ekleme, güncelleme ve silme işlemleri her yenilemede aktarılır. İyi maliyet/gecikme dengesi. Eğer < 5 dakikalık aralıklarla çalıştırılırsa pahalı olur.
Devamlı Saniyeler süren gecikme süresiyle gerçek zamanlı akış Değişikliklerin Lakebase'de gerçek zamanlıya yakın bir şekilde görünmesi gerekir En düşük gecikme, en yüksek maliyet. En az 15 saniyelik aralıklar

Tetiklenen ve Sürekli modlar, kaynak tablonuzda Değişiklik Veri Akışı'nın (CDF) etkinleştirilmesini gerektirir. CDF etkin değilse, kullanıcı arabiriminde tam olarak çalıştırılacak komutu içeren ALTER TABLE bir uyarı görürsünüz. Veri Akışını Değiştirme hakkında daha fazla bilgi için bkz. Databricks'te Delta Lake değişiklik veri akışını kullanma.

Uyarı

CDF'yi desteklemeyen kaynaklar (görünümler, gerçekleştirilmiş görünümler ve Iceberg tabloları gibi) yalnızca Anlık Görüntü modunda eşitlenebilir. Anlık görüntü modu için kaynağın desteklemesi SELECT *gerekir.

Kullanım örnekleri

Aşağıdakiler gibi veri sunma kullanım örnekleri için eşitlenmiş tabloları kullanabilirsiniz:

  • Databricks Uygulamalarına yeni kullanıcı profilleri sunan kişiselleştirme altyapıları
  • Lakehouse'da hesaplanan model tahminlerine veya özellik değerlerine hizmet veren uygulamalar
  • KPI'lere gerçek zamanlı olarak hizmet veren müşteriye yönelik panolar
  • Anında işlem için risk puanlarına hizmet veren sahtekarlık algılama hizmetleri
  • Lakehouse verilerinden zenginleştirilmiş müşteri kayıtları sunan destek araçları

Eşitlenmiş tablo oluşturma

Önkoşullar

Şunlara sahip olmanız gerekir:

  • Lakebase'in etkinleştirildiği bir Databricks çalışma alanı.
  • Bir Lakebase projesi (bkz. Proje oluşturma).
  • Eşitlemek için bir Unity Catalog tablo.
  • Eşitlenmiş tablolar oluşturma izinleri. Kullandığınız herhangi bir şemada USE_SCHEMA ve CREATE_TABLE gerekir.

Tetiklenen veya Sürekli modlar için Kaynak tablonuzda Veri Akışını Değiştir etkinleştirilmelidir:

ALTER TABLE your_catalog.your_schema.your_table
SET TBLPROPERTIES (delta.enableChangeDataFeed = true)

Kapasite planlaması ve veri türü uyumluluğu için bkz. Veri türleri ve uyumluluk ile Kapasite planlaması.

Kullanıcı Arayüzü (UI)

  1. Çalışma alanı kenar çubuğunda Katalog'a gidin ve eşitlemek istediğiniz Unity Kataloğu tablosunu seçin.

    Seçili tabloyu gösteren Katalog Gezgini

  2. Tablo ayrıntıları görünümündeEşitlenmiş Tablo> tıklayın.

    Eşitlenmiş tablo seçeneğini gösteren açılır menü Oluştur düğmesi

  3. Eşitlenmiş tablo oluştur iletişim kutusunda:

    Katalog ve şema listeleri yalnızca geçerli kullanıcının USE_SCHEMA ve CREATE_TABLE ayrıcalıklarına sahip olduğu Unity Kataloğu şemalarını içerir. Beklediğiniz bir şemayı görmüyorsanız katalog yöneticinizle izinlerinizi onaylayın.

    1. Tablo adı: Eşitlenmiş tablonuz için bir ad girin (kaynak tablonuzla aynı katalogda ve şemada oluşturulur). Bu, hem Unity Kataloğu eşitlenmiş tablosu hem de sorgulayabileceğiniz bir Postgres tablosu oluşturur.

    2. Veritabanı türü: Lakebase Sunucusuz (Otomatik Ölçeklendirme) öğesini seçin.

    3. Eşitleme modu: Gereksinimlerinize göre Anlık Görüntü, Tetiklenen veya Sürekli'yi seçin (yukarıdaki eşitleme modlarına bakın).

    4. Proje, dal ve veritabanı seçimlerinizi yapılandırın.

    5. Birincil anahtarın doğru olduğunu doğrulayın (genellikle otomatik olarak algılanır).

      Önemli

      Eşitlenen tabloda birincil anahtarın sütunlarına null değer atanamaz. Birincil anahtar sütunlarında null değerleri olan satırlar eşitlemenin dışında tutulur.

    6. (İsteğe bağlı) Kaynak tabloda iki satır aynı birincil anahtarı paylaşabiliyorsa, yinelenenleri kaldırmayı yapılandırmak için bir Timeseries anahtarı seçin. Zaman çizelgeleri anahtarı belirtildiğinde, eşitlenen tablo yalnızca her birincil anahtar için en son zaman çizelgeleri anahtarı değerine sahip satırı içerir. Zaman aralığı anahtarı olmayan hata modu için bkz. Yinelenen anahtarlar.

    Tetiklenmiş veya Sürekli modu seçtiyseniz ve Veri Akışını Değiştir'i henüz etkinleştirmediyseniz, tam olarak çalıştırılacak komutu içeren bir uyarı görürsünüz. Veri türü uyumluluğu soruları için bkz. Veri türleri ve uyumluluk.

    Eşitlenmiş tabloyu oluşturmak için Oluştur'a tıklayın.

  4. Katalog'da eşitlenmiş tabloyu izleyin. Genel Bakış sekmesinde eşitleme durumu, yapılandırma, işlem hattı durumu ve son eşitleme zaman damgası gösterilir. El ile yenileme için Şimdi eşitle'yi kullanın.

CLI

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": "mydb",
      "create_database_objects_if_missing": true
    }
  }'

SYNCED_TABLE_ID konumsal argümanı şu biçimi kullanır: catalog.schema.table Postgres'te tablo {table}, {schema} ayarladığınız veritabanı içinde, postgres_database şemasında oluşturulur (burada, mydb). Komut, işlemin varsayılan olarak tamamlanmasını bekler. Kullanılabilir tüm seçenekler için bkz. databricks postgres create-synced-table.

Python SDK'sı

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import (
    SyncedTable,
    SyncedTableSyncedTableSpec,
    SyncedTableSyncedTableSpecSyncedTableSchedulingPolicy,
)

w = WorkspaceClient()

synced_table = w.postgres.create_synced_table(
    synced_table=SyncedTable(spec=SyncedTableSyncedTableSpec(
        source_table_full_name="main.sales.orders",
        branch="projects/my-project/branches/production",
        primary_key_columns=["order_id"],
        scheduling_policy=SyncedTableSyncedTableSpecSyncedTableSchedulingPolicy.SNAPSHOT,
        postgres_database="mydb",
        create_database_objects_if_missing=True,
    )),
    synced_table_id="my-catalog.sales.orders",
).wait()

print(f"Synced table created: {synced_table.name}")

biçimi synced_table_idcatalog.schema.table kullanır ve Unity Kataloğu eşitlenmiş tablo adı olur. Postgres'te tablo {table}, {schema} ayarladığınız veritabanı içinde, postgres_database şemasında oluşturulur (burada, mydb).

Java SDK'sı

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
import java.util.List;

WorkspaceClient w = new WorkspaceClient();

SyncedTable syncedTable = w.postgres().createSyncedTable(
    new CreateSyncedTableRequest()
        .setSyncedTableId("my-catalog.sales.orders")
        .setSyncedTable(new SyncedTable()
            .setSpec(new SyncedTableSyncedTableSpec()
                .setSourceTableFullName("main.sales.orders")
                .setBranch("projects/my-project/branches/production")
                .setPrimaryKeyColumns(List.of("order_id"))
                .setSchedulingPolicy(SyncedTableSyncedTableSpecSyncedTableSchedulingPolicy.SNAPSHOT)
                .setPostgresDatabase("mydb")
                .setCreateDatabaseObjectsIfMissing(true))))
    .waitForCompletion();

System.out.println("Synced table created: " + syncedTable.getName());

Kıvrım

curl -X POST "https://your-workspace.cloud.databricks.com/api/2.0/postgres/synced_tables?synced_table_id=my-catalog.sales.orders" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "spec": {
      "source_table_full_name": "main.sales.orders",
      "branch": "projects/my-project/branches/production",
      "primary_key_columns": ["order_id"],
      "scheduling_policy": "SNAPSHOT",
      "postgres_database": "mydb",
      "create_database_objects_if_missing": true
    }
  }'

Bu, uzun süren bir işlemi geri döndürür. Döndürülen name alanını done: true kadar yoklayın. Bkz. Uzun süre çalışan işlemler. Kimlik doğrulaması kurulumu için bkz. Kimlik doğrulaması.

Sonraki eşitlemeleri zamanla veya tetikle

İlk anlık görüntü oluşturulduğunda otomatik olarak çalışır. Anlık Görüntü ve Tetiklenen modlar için sonraki eşitlemelerin açıkça tetiklenmesi gerekir. Sürekli mod kendi kendini yönetir.

Veritabanı Tablo İşlem Hattı Eşitleme Görevi

Lakeflow İşleri'ndeki Veritabanı Tablo Eşitleme işlem hattı görevi, eşitlenmiş bir tablonun işlem hattını iş akışı adımı olarak çalıştırır. İşi tablo güncelleştirme tetikleyicisi veya zamanlamayla yapılandırın.

Kaynak tablo güncelleştirmelerinde tetikleyici

Kaynak Unity Kataloğu tablosu güncelleştirildiğinde görevi tetikler. Tetiklenen mod ile yalnızca yeni değişiklikler artımlı olarak uygulanır ve Sürekli modun her zaman açık maliyeti olmadan neredeyse gerçek zamanlı güncellik sağlar.

  1. Kenar çubuğunda İş Akışları'na tıklayın.
  2. İş oluştur'a tıklayın veya var olan bir işi açın.
  3. Görevler sekmesinde + Başka bir görev türü ekle'ye tıklayın.
  4. Veri Alım ve Dönüştürme altında Veritabanı Tablo Eşitleme işlem hattı'nı seçin.
  5. İşlem hattı alanında, eşitlenmiş tablonuzla ilişkili işlem hattını seçin.
  6. Zamanlamalar ve Tetikleyiciler'in altında Tetikleyici ekle'ye tıklayın.
  7. Tetikleyici türü olarak Tablo güncelleştirmesi'ni seçin.
  8. Tablolar'ın altında, izlenecek kaynak Unity Kataloğu tablosunu seçin.
  9. Kaydet'e tıklayın.

Zamanlanmış bir programa göre tetikleme

Eşitlemeyi sabit bir tempoda çalıştırır. Gecelik veya haftalık tam yenilemenin genellikle en verimli desen olduğu Anlık Görüntü modu için uygundur.

  1. Bir işe Veritabanı Tablo Eşitleme işlem hattı görevi eklemek için yukarıdaki 1-5. adımları izleyin.
  2. Zamanlamalar ve Tetikleyiciler'in altında Tetikleyici ekle'ye tıklayın.
  3. Tetikleyici türü olarak Zamanlanmış'ı seçin.
  4. Cron zamanlamanızı ve saat diliminizi ayarlayın, ardından Kaydet'e tıklayın.

Eşitleme durumunu denetleme

Eşitlenen tablonun geçerli durumunu ve son eşitleme zamanını denetlemek için:

Kullanıcı Arayüzü (UI)

Katalog'da eşitlenmiş tablonuza gidin ve Genel Bakış sekmesini seçin. Geçerli eşitleme durumunu, işlem hattı durumunu ve son eşitleme zaman damgasını gösterir.

Python SDK'sı

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

table = w.postgres.get_synced_table("synced_tables/my-catalog.sales.orders")
print(f"State: {table.status.detailed_state}")
print(f"Last sync: {table.status.last_sync_time}")
print(f"Message: {table.status.message}")

Java SDK'sı

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.SyncedTable;

WorkspaceClient w = new WorkspaceClient();

SyncedTable table = w.postgres().getSyncedTable("synced_tables/my-catalog.sales.orders");
System.out.println("State: " + table.getStatus().getDetailedState());
System.out.println("Last sync: " + table.getStatus().getLastSyncTime());
System.out.println("Message: " + table.getStatus().getMessage());

Kıvrım

curl "https://your-workspace.cloud.databricks.com/api/2.0/postgres/synced_tables/my-catalog.sales.orders" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}"

Veri türleri ve uyumluluk

Unity Kataloğu veri türleri, eşitlenmiş tablolar oluşturulurken Postgres türleriyle eşlenir. Karmaşık türler (ARRAY, MAP, STRUCT) Postgres'te JSONB olarak depolanır.

Kaynak sütun türü Postgres sütun türü
BIGINT BIGINT
BINARY BYTEA
BOOLEAN BOOLEAN
DATE DATE
ONDALıK(p,s) SAYISAL
ÇİFT ÇİFT KESİNLIK
FLOAT GERÇEK
INT INTEGER
INTERVAL INTERVAL
SMALLINT (Küçük Tamsayı) SMALLINT (Küçük Tamsayı)
STRING METİN
TIMESTAMP SAAT DILIMI ILE ZAMAN DAMGASı
TIMESTAMP_NTZ SAAT DILIMI OLMADAN ZAMAN DAMGASı
TINYINT SMALLINT (Küçük Tamsayı)
ARRAY<elemanTürü> JSONB
MAP<anahtarTür, değerTür> JSONB
STRUCT<alanAdı:alanTürü[, ...]> JSONB

Uyarı

GEOGRAPHY, GEOMETRY, VARIANT ve OBJECT türleri desteklenmez.

Senkronize edilmiş tablonun hedef veritabanında Lakebase Search etkinse, yukarıdaki varsayılan tür eşlemesini belirli sütunlar için geçersiz kılabilirsiniz:

  • Vektör sütunları: Bir gömme sütununu (örneğin ARRAY<FLOAT>) varsayılan JSONByerine Postgres vector(n) sütununa eşleyin, böylece lakebase_vector ile hemen sorgulanabilir hale gelir. n değerini embedding boyutuna ayarlayın.
  • BM25 araması için oluşturulan sütunlar: Kaynak metin sütunundan oluşturulan tsvector gibi hesaplanmış bir sütun ekleyin; böylece senkronizasyon tamamlanır tamamlanmaz lakebase_text ile indekslemeye hazır olur.

Senkronize tabloyu oluştururken özel tür eşlemesini yapılandırın.

Geçersiz karakterleri işleme

Unity Catalog STRING, ARRAY, MAP veya STRUCT sütunlarında null bayt (0x00) gibi bazı karakterlere izin verilir, ancak Postgres TEXT veya JSONB sütunlarında desteklenmez. Bu, hatalar aşağıdaki gibi olduğunda eşitleme hatalarına neden olabilir:

ERROR: invalid byte sequence for encoding "UTF8": 0x00
ERROR: unsupported Unicode escape sequence DETAIL: \u0000 cannot be converted to text
  • İlk hata, doğrudan Postgres TEXTile eşlenen bir üst düzey dize sütununda null bayt görüntülendiğinde oluşur.
  • İkinci hata, STRUCT olarak serileştirilen karmaşık bir türün (ARRAY, MAP veya JSONB) içine iç içe geçmiş bir dize null bayt içerdiğinde oluşur. Serileştirme sırasında tüm dizeler Postgres TEXT'e yayınlanır ve burada \u0000 izin verilmez.

Çözümler:

  • Dize alanlarını temizleme: Eşitlemeden önce desteklenmeyen karakterleri kaldırın. STRING sütunlarındaki null baytlar için:

    SELECT REPLACE(column_name, CAST(CHAR(0) AS STRING), '') AS cleaned_column FROM your_table
    
  • binary'ye dönüştür: Ham baytları korumanın gerekli olduğu STRING sütunları için BINARY türüne dönüştürün.

Kapasite planlaması

Eşitlenmiş tablo uygulamanızı planlarken şu kaynak gereksinimlerini göz önünde bulundurun:

  • Bağlantı kullanımı: Senkronize edilen her tablo, örnek bağlantı sınırına dahil olacak şekilde Lakebase veritabanınıza en fazla 16 bağlantı kullanır.
  • Boyut kotası: Eşitlenen tüm tablolardaki toplam mantıksal verinin 16 TB kotası vardır. Daha büyük bir kotaya ihtiyacınız varsa Databricks Desteği'ne başvurun. Tek tek tabloların kotası yoktur, ancak Databricks yenileme gerektiren tablolar için 1 TB'ı aşmamanızı önerir.
  • Tam yenileme boyutu: Tam yenileme tetiklenirken, yeni eşitleme tamamlanana kadar Postgres'teki eski sürüm silinmez. Yenileme sırasında her iki sürüm de mantıksal veritabanı boyutu kotası için geçici olarak sayılır.
  • Kaynak başına tablo: Tek bir kaynak tabloda en fazla 20 eşitlenmiş tablo olabilir.
  • Adlandırma gereksinimleri: Veritabanı, şema ve tablo adları yalnızca alfasayısal karakterler ve alt çizgi ([A-Za-z0-9_]+) içerebilir.
  • Kaynak tanımlayıcı kılavuzu: Kaynak Unity Kataloğu tablosundaki sütun veya tablo adlarında büyük harfler veya özel karakterler kullanmaktan kaçının. Bunları saklarsanız, Postgres'te bunlara başvururken bu tanımlayıcıları alıntılamanız gerekir.
  • Şema evrimi: Tetiklenen ve Sürekli modlar için yalnızca eklemeli şema değişiklikleri (sütun ekleme gibi) desteklenir.
  • Tablo tanımının değiştirilmesi: Senkronize edilmiş bir tablonun tanımını yerinde güncellemek, hiçbir arayüz (UI, SDK, CLI, REST API, Terraform veya DAB) üzerinden desteklenmez. Ana anahtarı veya zaman serisi anahtarını değiştirmek veya ekleme dışı şema değişikliği yapmak için senkronize edilmiş tabloyu silip yenisini oluşturun.
  • Yinelenen anahtarlar: Kaynak tabloda iki satır aynı birincil anahtara sahipse, yinelenenleri kaldırmayı bir timeseries anahtarı kullanarak yapılandırmadığınız sürece eşitleme işlem hattı başarısız olur.
  • API idempotentliği: Eşitlenen tablo API'leri idempotenttir; bu nedenle, işlemlerin zamanında tamamlanmasını sağlamak için geçici hatalarda yeniden deneyin.
  • Güncelleştirme hızı: Lakebase Otomatik Ölçeklendirme'de eşitleme işlem hattı, Sürekli ve Tetiklemeli yazmaları Kapasite Birimi (CU) başına saniyede yaklaşık 150 satır hızında, Anlık görüntü yazmalarını da CU başına saniyede 2.000 satıra kadar destekler.

Postgres'te eşitlenmiş tablolarda izin verilen işlemler

Azure Databricks, yanlışlıkla üzerine yazma veya veri tutarsızlıklarını önlemek amacıyla eşitlenmiş tablolar için Postgres'te yalnızca aşağıdaki işlemlerin gerçekleştirilmesini önerir:

  • Yalnızca okunabilir sorgular
  • Dizin oluşturma
  • Tabloyu silme (eşitlenen tabloyu Unity Kataloğu'ndan kaldırdıktan sonra yer açmak için)

Postgres'te eşitlenmiş tabloları başka şekillerde değiştirmek mümkün olsa da, eşitleme işlem hattına müdahale eder.

Sahiplik ve izinler

Senkronize edilmiş tablo, senkronizasyon işlem hattı tarafından yönetildiği için onu oluşturan kullanıcıya değil, dahili databricks_writer_<dbid> rolüne aittir (bkz. Postgres rolleri). Satır düzeyi güvenliğini yapılandırma gibi yalnızca sahibin çalıştırabileceği komutlar, eşitlenmiş bir tabloda doğrudan çalıştırılamaz.

Uyarı

Bu, kendi oluşturduğunuz nesnelerin, Azure Databricks kimliğinizin Postgres'te bir rol olarak bulunan bir oturum açma hesabı varsa bu kimliğe ait olduğu Postgres'teki genel kuralın bir istisnasıdır. İşlem hattı sizin yerinize eşitlenmiş tablolar oluşturur.

Eşitlenmiş tablo oluşturan kullanıcı için erişim

Eşitlenmiş bir tablo oluşturduğunuzda, Azure Databricks kimliğinize bu tabloyu kullanmak için otomatik olarak erişim verilir. databricks_superuser Herhangi bir işlem gerekmez. Eşitlenen tabloda kimliğinize aşağıdaki ayrıcalıklar verilir:

Nesne Privileges Purpose
Eşitlenmiş tablo SELECT, DELETE, TRUNCATE Tabloyu oku ya da temizle
Schema USAGE, CREATE Şemayı kullanma ve dizinler gibi nesneler oluşturma

INSERT veya UPDATE size verilmedi. İşlem hattı tablonun verilerine sahip olduğundan, tabloya doğrudan yapılan yazmalar bir sonraki yenilemede üzerine yazılır. DELETE ve TRUNCATE yalnızca tabloyu temizleyin. Sonraki yenileme, tabloyu kaynaktan yeniden doldurur.

Bu erişim eşitlenen tablodaki Unity Kataloğu izinlerinden türetilir ve Unity Kataloğu'nda yönetilir. Bunu değiştirmek için kullanıcının Unity Kataloğu izinlerini güncelleştirin. Bunu, Azure Databricks kimliğiyle doğrudan Postgres'te REVOKE yapamazsınız.

Uyarı

Bu erişim, eşitlenen tabloyu oluşturan kimliğe bağlıdır. İşlem hattının Farklı çalıştır kimliğini değiştirmek, işlem hattını yeniden atamaz. Farklı bir sahip kimlik kullanmak için, senkronize edilmiş tabloyu bu kimlik altında yeniden oluşturun.

Eşitlenmiş tablo erişimini yönetme

Eşitlenmiş bir tablo oluşturulduktan sonra, databricks_superuser Eşitlenmiş tabloyu Postgres'ten okuyabilir. databricks_superuser, bu role tüm tablolardan okuma izni veren pg_read_all_data içerir. Bu rol ayrıca, tüm tablolara yazmasına olanak tanıyan pg_write_all_data ayrıcalığına sahiptir. Bu, bir databricks_superuser öğesinin Postgres'te eşitlenmiş bir tabloya da yazabileceği anlamına gelir. Lakebase, hedef tablonuzda acil değişiklikler yapmanız gerekme ihtimaline karşı bu yazma davranışını destekler. Ancak Azure Databricks bunun yerine kaynak tablonuzda düzeltmeler yapmanızı önerir.

  • , databricks_superuser diğer kullanıcılara da şu ayrıcalıkları verebilir:

    GRANT USAGE ON SCHEMA synced_table_schema TO user;
    
    GRANT SELECT ON synced_table_name TO user;
    
  • databricks_superuser şu ayrıcalıkları iptal edebilir:

    REVOKE USAGE ON SCHEMA synced_table_schema FROM user;
    
    REVOKE {SELECT | INSERT | UPDATE | DELETE} ON synced_table_name FROM user;
    

Eşitlenen tablo işlemlerini yönetme

, databricks_superuser eşitlenmiş bir tabloda belirli işlemleri gerçekleştirme yetkisi olan kullanıcıları yönetebilir. Eşitlenen tablolar için desteklenen işlemler şunlardır:

  • CREATE INDEX
  • ALTER INDEX
  • DROP INDEX
  • DROP TABLE

Eşitlenen tablolar için diğer tüm DDL işlemleri reddedilir.

Bu ayrıcalıkları ek kullanıcılara vermek için, databricks_superuser önce üzerinde databricks_authbir uzantı oluşturmalıdır:

CREATE EXTENSION IF NOT EXISTS databricks_auth;

Ardından, databricks_superuser eşitlenmiş tabloyu yönetmek için kullanıcı ekleyebilir:

SELECT databricks_synced_table_add_manager('"synced_table_schema"."synced_table"'::regclass, '[user]');

, databricks_superuser kullanıcının eşitlenmiş tabloyu yönetmesini kaldırabilir:

SELECT databricks_synced_table_remove_manager('[table]', '[user]');

databricks_superuser tüm yöneticileri görüntüleyebilir:

SELECT * FROM databricks_synced_table_managers;

Eşitlenmiş tabloyu silme

Unity Kataloğu'ndan eşitlenmiş bir tablo silindiğinde ilgili Postgres tablosu da düşer.

Kullanıcı Arayüzü (UI)

Katalog'da eşitlenmiş tablonuzu bulun, Kebap menü simgesine tıklayın. menüsüne tıklayın ve Sil'i seçin.

Python SDK'sı

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

w.postgres.delete_synced_table("synced_tables/my-catalog.sales.orders").wait()

Java SDK'sı

import com.databricks.sdk.WorkspaceClient;

WorkspaceClient w = new WorkspaceClient();

w.postgres().deleteSyncedTable("synced_tables/my-catalog.sales.orders").waitForCompletion();

Kıvrım

curl -X DELETE "https://your-workspace.cloud.databricks.com/api/2.0/postgres/synced_tables/my-catalog.sales.orders" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}"

Daha fazla bilgi edinin

Görev Açıklama
Bir proje oluştur Bir Lakebase projesi ayarlayın
Veritabanınıza bağlanma Lakebase için bağlantı seçeneklerini öğrenin
Unity Kataloğu'nda veritabanını kaydetme Birleşik idare ve kaynaklar arası sorgular için Lakebase verilerinizi Unity Kataloğu'nda görünür hale getirme
Unity Kataloğu tümleştirmesi İdareyi ve izinleri anlama

Katalog tümleştirmesi

  • Katalog yinelemesi: Ayrı veritabanı kataloğu olarak da kaydedilmiş bir Postgres veritabanını hedefleyen standart bir katalogda eşitlenmiş tablo oluşturmak, eşitlenen tablonun Unity Kataloğu'nda hem standart hem de veritabanı katalogları altında görünmesine neden olur.

Diğer seçenekler

Verileri Databricks dışındaki sistemlerle eşitlemek için Census veya Hightouch gibi Partner Connect ters ETL çözümleri'ne bakın.