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.
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.
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:
- Unity Kataloğu'nda senkronizasyon işlem hattına referans veren senkronize edilmiş tablo
- Lakebase'de bir Postgres tablosu (salt okunur ve uygulamalarınız tarafından sorgulanabilir)
Ö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)
Çalışma alanı kenar çubuğunda Katalog'a gidin ve eşitlemek istediğiniz Unity Kataloğu tablosunu seçin.
Tablo ayrıntıları görünümündeEşitlenmiş Tablo> tıklayın.
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.
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.
Veritabanı türü: Lakebase Sunucusuz (Otomatik Ölçeklendirme) öğesini seçin.
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).
Proje, dal ve veritabanı seçimlerinizi yapılandırın.
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.
(İ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.
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.
- Kenar çubuğunda İş Akışları'na tıklayın.
- İş oluştur'a tıklayın veya var olan bir işi açın.
- Görevler sekmesinde + Başka bir görev türü ekle'ye tıklayın.
- Veri Alım ve Dönüştürme altında Veritabanı Tablo Eşitleme işlem hattı'nı seçin.
- İşlem hattı alanında, eşitlenmiş tablonuzla ilişkili işlem hattını seçin.
- Zamanlamalar ve Tetikleyiciler'in altında Tetikleyici ekle'ye tıklayın.
- Tetikleyici türü olarak Tablo güncelleştirmesi'ni seçin.
- Tablolar'ın altında, izlenecek kaynak Unity Kataloğu tablosunu seçin.
- 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.
- Bir işe Veritabanı Tablo Eşitleme işlem hattı görevi eklemek için yukarıdaki 1-5. adımları izleyin.
- Zamanlamalar ve Tetikleyiciler'in altında Tetikleyici ekle'ye tıklayın.
- Tetikleyici türü olarak Zamanlanmış'ı seçin.
- 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.
Lakebase Search için özel tip haritalama
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ılanJSONByerine Postgresvector(n)sütununa eşleyin, böylece lakebase_vector ile hemen sorgulanabilir hale gelir.ndeğerini embedding boyutuna ayarlayın. -
BM25 araması için oluşturulan sütunlar: Kaynak metin sütunundan oluşturulan
tsvectorgibi 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,
STRUCTolarak serileştirilen karmaşık bir türün (ARRAY,MAPveyaJSONB) içine iç içe geçmiş bir dize null bayt içerdiğinde oluşur. Serileştirme sırasında tüm dizeler PostgresTEXT'e yayınlanır ve burada\u0000izin 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_tablebinary'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_superuserdiğ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 INDEXALTER INDEXDROP INDEXDROP 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, 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.