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.
Önemli
Bu özellik şu bölgelerde Genel Önizleme aşamasındadır: westus, westus2, eastus, , eastus2, centralus, , southcentralus, northeurope, westeuropeaustraliaeast, brazilsouth, canadacentral, centralindia, southeastasia, . uksouth
Bu sayfada eşitlenmiş tablo oluşturma ve yönetme işlemleri açıklanmaktadır. Senkronize edilen tablo, Unity Catalog tablosundaki verileri Lakebase veritabanı örneğine otomatik olarak eşitleyen bir Unity Catalog salt okunur Postgres tablosudur. Unity Kataloğu tablosunu Postgres ile eşitleme, düşük gecikme süreli okuma sorgularına olanak tanır ve diğer Postgres tablolarıyla sorgu zamanı birleştirmelerini destekler.
Eşitleme, Lakeflow Spark Bildirimli İşlem Hatları tarafından işlenir. Yönetilen işlem hattı Postgres tablosunu kaynak tablodaki değişikliklerle sürekli olarak güncelleştirir. Oluşturulduktan sonra, eşitlenen tablolar doğrudan Postgres araçları kullanılarak sorgulanabilir.
Eşitlenen tabloların temel özellikleri şunlardır:
- Veri bütünlüğünü kaynakla korumak için PostgreSQL'de salt okunur modunu etkinleştirin.
- Yönetilen Lakeflow Spark Bildirimli İşlem Hatları kullanılarak otomatik olarak eşitlenir
- Standart PostgreSQL arabirimleri aracılığıyla sorgulanabilir
- İdare ve yaşam döngüsü yönetimi için Unity Kataloğu aracılığıyla yönetilir
Başlamadan önce
- Herhangi bir katalogda Unity Kataloğu tablonuz var.
- Veritabanı örneği üzerinde izinleriniz var
CAN USE.
Eşitlenmiş tablo oluşturma
Kullanıcı Arayüzü (UI)
Unity Kataloğu tablosunu Postgres ile eşitlemek için aşağıdakileri yapın:
Çalışma alanı kenar çubuğunda Katalog'a tıklayın.
Eşitlenmiş tablo oluşturmak istediğiniz Unity Kataloğu tablosunu bulun ve seçin.
Eşitlenmiş tablo oluştur'a> tıklayın.
Kataloğunuzu, şemanızı seçin ve yeni eşitlenen tablo için bir tablo adı girin.
- Eşitlenmiş tablolar, bazı ek yapılandırmalarla Standart kataloglarda da oluşturulabilir. Standart kataloğunuzu, bir şemayı seçin ve yeni oluşturulan eşitlenmiş tablo için bir tablo adı girin.
Bir veritabanı örneği seçin ve eşitlenen tablonun oluşturulacağı Postgres veritabanının adını girin. Postgres veritabanı alanı varsayılan olarak seçili durumdaki hedef kataloğu kullanır. Bu ad altında bir Postgres veritabanı yoksa Azure Databricks yeni bir veritabanı oluşturur.
Birincil Anahtar seçin. Okuma, güncelleştirme ve silme işlemleri için satırlara verimli erişim sağladığı için birincil anahtar gereklidir .
Önemli
Eşitlenen tabloda birincil anahtarın sütunlarına null değer atanamaz. Bu nedenle, birincil anahtar sütunlarında null değerleri olan satırlar eşitlemenin dışında tutulur.
Kaynak tabloda iki satır aynı birincil anahtara sahipse, yinelenenleri kaldırmayı yapılandırmak için bir Timeseries Anahtarı seçin. Bir Timeseries Anahtarı belirtildiğinde, eşitlenen tablolar yalnızca her birincil anahtar için en son timeseries anahtar değerine sahip satırları içerir.
Anlık Görüntü, Tetiklenen ve Sürekli'den eşitleme modunu seçin. Her eşitleme modu hakkında daha fazla bilgi için bkz. Eşitleme modları açıklandı.
Bu eşitlenmiş tabloyu yeni veya mevcut bir işlem hattından oluşturmak isteyip istemediğinizi seçin.
- Yeni bir işlem hattı oluşturuyor ve yönetilen katalog kullanıyorsanız, hazırlama tablosunun depolama konumunu seçin. Standart katalog kullanılıyorsa, hazırlama tablosu otomatik olarak katalogda depolanır.
- Mevcut bir işlem hattını kullanıyorsanız, yeni eşitleme modunun işlem hattı moduyla eşleşip eşleşmediğini denetleyin.
(İsteğe bağlı) Sunucusuz bütçe ilkesi seçin. Sunucusuz bütçe ilkesi oluşturmak için bkz . Sunucusuz bütçe ilkeleriyle öznitelik kullanımı. Bu, faturalama kullanımını belirli kullanım ilkelerine bağlamanıza olanak tanır.
- Senkronize tablolar için faturalanabilir varlık, temel alınan Lakeflow Spark Deklaratif İşlem Hatları işlem hattıdır. Bütçe ilkesini değiştirmek için temel alınan işlem hattı nesnesini değiştirin. Bkz . Sunucusuz işlem hattı yapılandırma.
Eşitlenen tablo durumuÇevrimiçi olduktan sonra veritabanı örneğinize oturum açın ve yeni oluşturulan tabloyu sorgulayın. SQL düzenleyicisini, dış araçları veya not defterlerini kullanarak tablonuzu sorgulayın.
Python SDK'sı
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.database import SyncedDatabaseTable, SyncedTableSpec, NewPipelineSpec, SyncedTableSchedulingPolicy
# Initialize the Workspace client
w = WorkspaceClient()
# Create a synced table in a database catalog
synced_table = w.database.create_synced_database_table(
SyncedDatabaseTable(
name="database_catalog.schema.synced_table", # Full three-part name
spec=SyncedTableSpec(
source_table_full_name="source_catalog.source_schema.source_table",
primary_key_columns=["id"], # Primary key columns
scheduling_policy=SyncedTableSchedulingPolicy.TRIGGERED, # SNAPSHOT, TRIGGERED, or CONTINUOUS
# Optional: timeseries_key="timestamp" # For deduplication
new_pipeline_spec=NewPipelineSpec(
storage_catalog="storage_catalog",
storage_schema="storage_schema"
)
),
)
)
print(f"Created synced table: {synced_table.name}")
# Create a synced table in a standard UC catalog
synced_table = w.database.create_synced_database_table(
SyncedDatabaseTable(
name="standard_catalog.schema.synced_table", # Full three-part name
database_instance_name="my-database-instance", # Required for standard catalogs
logical_database_name="postgres_database", # Required for standard catalogs
spec=SyncedTableSpec(
source_table_full_name="source_catalog.source_schema.source_table",
primary_key_columns=["id"],
scheduling_policy=SyncedTableSchedulingPolicy.CONTINUOUS,
create_database_objects_if_missing=True, # Create database/schema if needed
new_pipeline_spec=NewPipelineSpec(
storage_catalog="storage_catalog",
storage_schema="storage_schema"
)
),
)
)
print(f"Created synced table: {synced_table.name}")
# Check the status of a synced table
synced_table_name = "database_catalog.schema.synced_table"
status = w.database.get_synced_database_table(name=synced_table_name)
print(f"Synced table status: {status.data_synchronization_status.detailed_state}")
print(f"Status message: {status.data_synchronization_status.message}")
CLI
# Create a synced table in a database catalog
databricks database create-synced-database-table \
--json '{
"spec": {
"name": "database_catalog.schema.synced_table",
"source_table_full_name": "source_catalog.source_schema.source_table",
"primary_key_columns": ["id"],
"scheduling_policy": "TRIGGERED"
},
"new_pipeline_spec": {
"storage_catalog": "storage_catalog",
"storage_schema": "storage_schema"
}
}'
# Create a synced table in a standard UC catalog
# new_pipeline_spec, storage_catalog, and storage_schema are optional
databricks database create-synced-database-table \
--database-instance-name "my-database-instance" \
--logical-database-name "databricks_postgres" \
--json '{
"name": "standard_catalog.schema.synced_table",
"spec": {
"source_table_full_name": "source_catalog.source_schema.source_table",
"primary_key_columns": ["id"],
"scheduling_policy": "CONTINUOUS",
"create_database_objects_if_missing": true
}
}'
# Check the status of a synced table
databricks database get-synced-database-table "database_catalog.schema.synced_table"
Kıvrım
Veritabanı kataloğunda eşitlenmiş tablo oluşturma.
export CATALOG_NAME=<Database catalog>
export SRC_TBL="source_catalog.source_schema.source_table"
export DEST_TBL="$CATALOG_NAME.some_schema.synced_table"
export PKS='["id"]'
export ST_CATALOG = "storage_catalog"
export ST_SCHEMA = "storage_schema"
curl -X POST https://$WORKSPACE/api/2.0/database/synced_tables \
-H "Content-Type: text/json" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--data-binary @- << EOF
{
"name": "$DEST_TBL",
"spec": {
"source_table_full_name": "$SRC_TBL",
"primary_key_columns": $PKS,
"scheduling_policy": "TRIGGERED",
},
"new_pipeline_spec": {
"storage_catalog": "$ST_CATALOG",
"storage_schema": "$ST_SCHEMA",
}
}
EOF
Standart Unity Kataloğu'nda senkronize bir tablo oluşturun.
export CATALOG_NAME=<Standard catalog>
export DATABASE_INSTANCE=<database instance>
export POSTGRES_DATABASE=$CATALOG_NAME
export SRC_TBL="source_catalog.source_schema.source_table"
export DEST_TBL="$CATALOG_NAME.some_schema.sync_table"
export PKS='["id"]'
export ST_CATALOG = "storage_catalog"
export ST_SCHEMA = "storage_schema"
curl -X POST https://$WORKSPACE/api/2.0/database/synced_tables \
-H "Content-Type: text/json" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--data-binary @- << EOF
{
"name": "$DEST_TBL",
"database_instance_name": "$DATABASE_INSTANCE",
"logical_database_name": "$POSTGRES_DATABASE",
"spec": {
"source_table_full_name": "$SRC_TBL",
"primary_key_columns": $PKS,
"scheduling_policy": "TRIGGERED",
},
"new_pipeline_spec": {
"storage_catalog": "$ST_CATALOG",
"storage_schema": "$ST_SCHEMA",
}
}
EOF
Eşitlenen tablonun durumunu denetleyin.
export SYNCEDTABLE='pg_db.silver.sbtest1_online'
curl --request GET \
"https://e2-dogfood.staging.cloud.databricks.com/api/2.0/database/synced_tables/$SYNCEDTABLE" \
--header "Authorization: Bearer dapi..."
Eşitleme modları açıklandı
Aşağıdaki eşitleme modlarından biriyle eşitlenmiş bir tablo oluşturulabilir ve bu da verilerin postgres'te kaynaktan eşitlenen tabloya nasıl eşitleneceğini belirler:
| Eşitleme modu | Description | Performance |
|---|---|---|
| Anlık Görüntü | İşlem hattı bir kez çalıştırılarak kaynak tablonun anlık görüntüsünü alır ve eşitlenen tabloya kopyalar. Sonraki işlem hattı çalıştırmaları, kaynak verilerin tamamını hedefe kopyalar ve atomik olarak yerine yerleştirir. İşlem hattı bir API aracılığıyla veya bir zamanlamaya göre el ile tetiklenebilir. | Bu mod, verileri sıfırdan yeniden oluşturacağından Tetiklenen veya Sürekli eşitleme modlarından 10 kat daha verimlidir. Kaynak tablonun 10%'den fazlasını değiştiriyorsanız bu modu kullanmayı göz önünde bulundurun. |
| Tetiklenmiş | İşlem hattı bir kez çalıştırılarak kaynak tablonun anlık görüntüsünü alır ve eşitlenen tabloya kopyalar. Anlık görüntü eşitleme modundan farklı olarak, eşitlenen tablo yenilendiğinde, yalnızca son işlem hattı yürütmesinin ardından yapılan değişiklikler alınır ve eşitlenen tabloya uygulanır. Artımlı yenileme bir API aracılığıyla veya bir zamanlamaya göre el ile tetiklenebilir. | Bu mod, gecikme ve maliyet arasında iyi bir dengedir çünkü talep üzerine çalışır ve yalnızca son çalıştırmadan bu yana yapılan değişiklikleri uygular. Gecikmeyi en aza indirmek için kaynak tabloyu güncelleştirdikten hemen sonra bu işlem hattını çalıştırın. Bunu her 5 dakikadan daha sık çalıştırırsanız, işlem hattını her seferinde başlatma ve durdurma maliyeti nedeniyle Sürekli moddan daha pahalı olabilir. |
| Devamlı | İşlem hattı bir kez çalıştırılarak kaynak tablonun anlık görüntüsünü alır ve eşitlenen tabloya kopyalar ve işlem hattı sürekli olarak çalışır. Kaynak tabloda yapılan sonraki değişiklikler eşitlenen tabloya gerçek zamanlı olarak artımlı olarak uygulanır. El ile yenileme gerekmez. | Bu mod sürekli çalıştığından en düşük gecikme süresine ancak maliyeti daha yüksektir. |
Uyarı
Tetiklenen veya Sürekli eşitleme modunu desteklemek için, kaynak tabloda Değişiklik verisi akışı etkinleştirilmiş olmalıdır. Bazı kaynaklar (Görünümler gibi) değişiklik veri akışını desteklemez, bu nedenle yalnızca Anlık Görüntü modunda eşitlenebilirler.
Desteklenen işlemler
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)
Bu tabloyu başka şekillerde değiştirebilmenize rağmen, eşitleme işlem hattına müdahale eder.
Eşitlenmiş tabloyu silme
Eşitlenmiş bir tabloyu silmek için unity kataloğundan silmeniz ve sonra tabloyu veritabanı örneğine bırakmanız gerekir. Eşitlenen tablonun Unity Kataloğu'ndan silinmesi, tablonun kaydını kaldırır ve veri yenilemelerini durdurur. Ancak, tablo temel alınan Postgres veritabanında kalır. Veritabanı örneğinizde yer açmak için örneğe bağlanın ve komutunu kullanın DROP TABLE .
Kullanıcı Arayüzü (UI)
- Çalışma alanı kenar çubuğunda Katalog'a tıklayın.
- Silmek istediğiniz eşitlenmiş tabloyu bulun ve seçin.
-
> Sil'i seçin.
- Bağlanmak için
psql, SQL düzenleyicisi veya bir not defteri kullanarak örneğe bağlanın. - PostgreSQL kullanarak tabloyu bırakın.
DROP TABLE synced_table_database.synced_table_schema.synced_table
Python SDK'sı
from databricks.sdk import WorkspaceClient
# Initialize the Workspace client
w = WorkspaceClient()
# Delete a synced table from UC
synced_table_name = "catalog.schema.synced_table"
w.database.delete_synced_database_table(name=synced_table_name)
print(f"Deleted synced table from UC: {synced_table_name}")
# To free up space in your database instance, you need to connect to the
# instance and drop the table using PostgreSQL:
#
# DROP TABLE synced_table_database.synced_table_schema.synced_table;
CLI
# Delete a synced table from UC
databricks database delete-synced-database-table "catalog.schema.synced_table"
# To free up space in your database instance, you need to connect to the
# instance and drop the table using PostgreSQL:
#
# DROP TABLE synced_table_database.synced_table_schema.synced_table;
Kıvrım
# Delete a synced table from UC
curl -X DELETE --header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
https://$WORKSPACE/api/2.0/database/synced_tables/$SYNCED_TABLE_NAME
# To free up space in your database instance, you need to connect to the
# instance and drop the table using PostgreSQL:
#
# DROP TABLE synced_table_database.synced_table_schema.synced_table;
Sahiplik ve izinler
Yeni bir Postgres veritabanı, şema veya tablo oluşturursanız Postgres sahipliği aşağıdaki gibi ayarlanır:
- Sahiplik, Azure Databricks oturum açma bilgileri Postgres'te bir rol olarak mevcutsa veritabanını, şemayı veya tabloyu oluşturan kullanıcıya atanır. Postgres'te Azure Databricks kimlik rolü eklemek için bkz. Postgres rollerini yönetme.
- Aksi takdirde, sahiplik Postgres'teki üst nesnenin sahibine atanır (genellikle ).
databricks_superuser
Eşitlenmiş tablo erişimini yönetme
Eşitlenmiş tablo oluşturulduktan sonra, databricks_superuser Postgres'ten bir eşitlenmiş tablo READ alabilir.
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 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;
Veri türü eşlemesi
Bu tür eşleme tablosu, kaynak Unity Kataloğu tablosundaki her veri türünün Postgres'teki hedef eşitleme tablosuna nasıl eşlenmiş olduğunu tanımlar:
| Kaynak sütun türü | Postgres sütun türü |
|---|---|
| BIGINT | BIGINT |
| İKİLİ | BYTEA |
| BOOLEAN | BOOLEAN |
| TARİH | DATE |
| ONDALıK(p,s) | SAYISAL |
| ÇİFT | ÇIFT DUYARLıK |
| YÜZMEK | GERÇEK |
| INT | INTEGER |
| INTERVAL intervalQualifier | ARA |
| SMALLINT | SMALLINT (Küçük Tamsayı) |
| DİZGİ | METİN |
| ZAMAN DAMGASI | SAAT DILIMI ILE ZAMAN DAMGASı |
| TIMESTAMP_NTZ | SAAT DILIMI OLMADAN ZAMAN DAMGASı |
| TINYINT | SMALLINT (Küçük Tamsayı) |
| GEOGRAPHY(srid) | DESTEKLENMEDİ |
| GEOMETRY(srid) | DESTEKLENMEDİ |
| ARRAY < elementType > | JSONB |
| MAP < keyType,valueType > | JSONB |
| STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, ...]] > | JSONB |
| VARYANT | JSONB |
| NESNE | DESTEKLENMEDİ |
Uyarı
- ARRAY, MAP ve STRUCT türleri için eşleme Mayıs 2025'te değiştirildi. Bundan önce oluşturulan tabloları eşitleme, bu türleri JSON ile eşlemeye devam ediyor.
- TIMESTAMP eşlemesi Ağustos 2025'te değiştirildi. Bundan önce oluşturulan tabloları ZAMAN DILIMI OLMADAN TIMESTAMP ile eşlemeye devam eder.
Geçersiz karakterleri işleme
Null bayt (0x00) gibi bazı karakterlere Delta tablolarındaki STRING, ARRAY, MAPveya STRUCT sütunlarında izin verilir, ancak Postgres TEXT veya JSONB sütunlarda desteklenmez. Sonuç olarak, bu tür verilerin Delta'dan Postgres'e eşitlenmesi ekleme hatalarına neden olabilir.
org.postgresql.util.PSQLException: ERROR: invalid byte sequence for encoding "UTF8": 0x00
org.postgresql.util.PSQLException: 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, Azure Databricks'in olarak
STRUCTserileştirdiği karmaşık bir türün (ARRAY,MAPveyaJSONB) içine yerleştirilmiş bir dizede null bayt görüntülendiğinde oluşur. Serileştirme sırasında tüm dizeler PostgresTEXT'e yayınlanır ve burada\u0000izin verilmez.
Nasıl çözülür?
Bu sorunu aşağıdaki yollardan biriyle çözebilirsiniz:
Dize alanlarını temizle
Postgres ile eşitlemeden önce, karmaşık türlerin içindekiler de dahil olmak üzere tüm dize alanlarından desteklenmeyen karakterleri kaldırın veya değiştirin.
Üst düzey
STRINGbir sütundan null baytları kaldırmak için işlevini kullanınREPLACE:SELECT REPLACE(column_name, CAST(CHAR(0) AS STRING), '') AS cleaned_column FROM your_table;Yalnızca
STRINGsütunları için ikiliye dönüştürHam bayt içeriğinin korunması gerekiyorsa, etkilenen
STRINGsütunları olarakBINARYdönüştürün.
Sınırlamalar ve dikkat edilmesi gerekenler
Desteklenen kaynak tablolar
Eşitlenen tablonun eşitleme moduna bağlı olarak, farklı türlerde kaynak tablo desteklenir:
Anlık görüntü modu için kaynak tablonun desteklemesi
SELECT *gerekir. Örnek olarak Delta tabloları, Iceberg tabloları, görünümler, gerçekleştirilmiş görünümler ve diğer benzer türler verilebilir.Tetiklenen veya Sürekli eşitleme modları için kaynak tabloda değişiklik veri akışınında etkin olması gerekir.
Adlandırma ve tanımlayıcı sınırlamaları
-
İzin verilen karakterler: Eşitlenen tablolar için Postgres veritabanı, şema ve tablo adları yalnızca alfasayısal karakterler ve alt çizgi (
[A-Za-z0-9_]+) içerebilir. Kısa çizgiler (-) ve diğer özel karakterler desteklenmez. - Sütun ve tablo tanımlayıcıları: Kaynak Unity Kataloğu tablosundaki sütun veya tablo adlarında büyük harfler veya özel karakterler kullanmaktan kaçının. Eğer korunursa, Postgres'te bu tanımlayıcılara başvururken onları alıntılamanız gerekir.
Performans ve eşitleme
- Eşitleme hızı: Verileri eşitlenmiş tablolara eşitlemek, ek işlemler nedeniyle verileri yerel bir PostgreSQL istemcisiyle doğrudan veritabanı örneğine yazmaktan daha yavaş olabilir. Sürekli eşitleme modu, Unity Kataloğu yönetilen tablosundaki verileri en az 15 saniyelik bir aralıkta eşitlenen tabloya yeniler.
- Bağlantı kullanımı: Her tablo eşitlemesi, veritabanı örneğine en fazla 16 bağlantı kullanabilir ve bu da örneğin bağlantı sınırına doğru sayılır.
- API idempotensi: Eşitlenen tablo API'leri idempotens davranır ve işlemlerin zamanında gerçekleştirilmesini sağlamak için hatalar oluşursa tekrar denenmesi gerekebilir.
-
Şema değişiklikleri:
Triggeredya daContinuousmodunda eşitlenmiş tablolar için, Unity Katalog tablolarından yalnızca ekleyici şema değişiklikleri (örneğin, yeni bir sütun ekleme) eşitlenmiş tabloya yansıtılır. - 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. Ancak, Timeseries Anahtarı kullanmak bir performans cezası ile birlikte gelir.
- Güncelleştirme hızı: Eşitleme işlem hattı, Kapasite Birimi (CU) başına saniyede yaklaşık 1.200 satır ve CU başına saniyede 15.000 satıra kadar toplu yazma işlemini destekler.
Kapasite ve sınırlar
-
Tablo sınırları:
- Kaynak tablo başına 20 eşitlenmiş tablo sınırı.
- Her tablo eşitlemesi en fazla 16 veritabanı bağlantısı kullanabilir.
-
Boyut sınırları ve tam yenileme:
- Eşitlenmiş bir tabloyu tam olarak yenilerseniz, yeni tablo eşitlenene kadar Postgres'teki eski sürüm silinmez. Yenileme sırasında her iki sürüm de geçici olarak mantıksal veritabanı boyutu sınırına dahil edilir.
- Eşitlenen tek tek tabloların sınırı yoktur, ancak örnekteki tüm tablolarda toplam mantıksal veri boyutu sınırı 2 TB'tır. Ancak, tam tablo rekreasyonu yerine yenilemeler gerekiyorsa, Databricks 1 TB'ı aşmamanızı önerir.
- Unity Kataloğu tablosunun sıkıştırılmamış, satır biçimi boyutu veritabanı örneği boyut sınırını (2 TB) aşarsa eşitleme başarısız olur. Postgres'ten eşitlenmiş tabloyu silmeden önce veritabanı örneğine daha fazla yazamazsınız.
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.