Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tabel yang disinkronkan memungkinkan Anda menyajikan data lakehouse melalui Lakebase Postgres. Tabel Unity Catalog disinkronkan ke Postgres sehingga aplikasi dapat mengkueri data lakehouse secara langsung dengan latensi rendah. Proses ini umumnya dikenal sebagai reverse ETL. Lakehouse dioptimalkan untuk analitik dan pengayaan, sementara Lakebase dirancang untuk beban kerja operasional yang memerlukan kueri gaya pencarian yang cepat dan konsistensi transaksi.
Apa itu tabel yang disinkronkan?
Tabel yang disinkronkan memungkinkan Anda menyajikan data tingkat analitik dari Unity Catalog melalui Lakebase Postgres, membuatnya tersedia untuk aplikasi yang membutuhkan kueri latensi rendah dan transaksi ACID penuh. Mereka menjembatani kesenjangan antara penyimpanan analitik dan sistem operasional dengan memastikan data Anda siap untuk digunakan dalam aplikasi real-time.
Sumber yang didukung
Tabel yang disinkronkan mendukung jenis sumber Katalog Unity berikut ini:
- Tabel Delta terkelola dan eksternal
- Tabel Iceberg terkelola dan eksternal
- Pandangan dan pandangan terwujud
Cara kerjanya
Tabel yang disinkronkan Databricks membuat salinan terkelola data Unity Catalog Anda di Lakebase. Saat membuat tabel yang disinkronkan, Anda mendapatkan:
- Tabel yang disinkronkan di Katalog Unity yang mereferensikan alur sinkronisasi
- Tabel Postgres di Lakebase (baca-saja, dapat dikueri oleh aplikasi Anda)
Misalnya, Anda dapat menyinkronkan tabel emas, fitur rekayasa, atau output ML dari analytics.gold.user_profiles ke dalam tabel analytics.gold.user_profiles_syncedbaru yang disinkronkan . Di Postgres, nama skema Katalog Unity menjadi nama skema Postgres, sehingga muncul sebagai gold.user_profiles_synced:
SELECT * FROM gold.user_profiles_synced WHERE user_id = 12345;
Aplikasi terhubung dengan driver Postgres standar dan mengkueri data yang disinkronkan bersama status operasionalnya sendiri.
Peringatan
Meskipun dimungkinkan untuk memodifikasi tabel yang disinkronkan langsung di Postgres, Azure Databricks secara ketat merekomendasikan untuk menjalankan hanya kueri baca untuk melindungi integritas data dengan sumbernya. Untuk operasi yang didukung pada tabel yang disinkronkan, lihat Operasi yang diizinkan pada tabel yang disinkronkan di Postgres.
Pipeline sinkronisasi menggunakan pipeline Lakeflow terkelola untuk terus memperbarui baik tabel tersinkron di Unity Catalog maupun tabel Postgres dengan perubahan dari tabel sumber. Setiap sinkronisasi dapat menggunakan hingga 16 koneksi ke database Lakebase Anda.
Lakebase Postgres mendukung hingga 1.000 koneksi bersamaan dengan jaminan transaksional, sehingga aplikasi dapat membaca data yang diperkaya sambil juga menangani sisipan, pembaruan, dan penghapusan dalam database yang sama.
Sinkronisasi awal yang dipercepat
LTAP Direct Writes adalah kemampuan beta dari arsitektur LTAP yang mengurangi waktu yang dibutuhkan untuk pemuatan awal dan penyegaran penuh. Aplikasi ini memuat data langsung ke lapisan penyimpanan yang mendukung cabang Lakebase Anda, alih-alih mengarahkan penulisan massal melalui endpoint komputasi langsung. Akibatnya, beban besar selesai lebih cepat dan tidak menambah beban query ke endpoint saat berjalan.
Kemampuan LTAP Direct Writes mempercepat beban awal untuk setiap mode sinkronisasi. Setiap tabel yang disinkronkan diawali dengan memuat salinan penuh sumber, dan pemuatan awal tersebut menggunakan LTAP Direct Writes, baik Anda memilih mode Snapshot, Triggered, atau Continuous. Ini juga mempercepat penyegaran penuh, termasuk pemuatan penuh berulang yang dijalankan oleh mode Snapshot pada setiap sinkronisasi berikutnya.
Nota
LTAP Direct Writes tidak terbatas pada mode Snapshot . Setiap mode sinkronisasi mendapatkan pemuatan awal yang dipercepat. mode Snapshot juga menggunakan penyegaran penuh yang dipercepat pada setiap sinkronisasi berikutnya, sedangkan mode Triggered dan Continuous menerapkan pembaruan berikutnya secara inkremental melalui Change Data Feed, bukan sebagai pemuatan massal.
LTAP Direct Writes masih dalam tahap beta dan memerlukan proyek Lakebase yang menjalankan Postgres 17. Untuk menggunakannya, admin workspace mengaktifkan pratinjau LTAP Direct Writes dari halaman Pratinjau di pengaturan workspace.
Di Azure, LTAP Direct Writes tersedia di semua wilayah kecuali East US, East US 2, West Europe, dan West US 2.
Mode sinkronisasi
Pilih mode sinkronisasi yang tepat berdasarkan kebutuhan aplikasi Anda:
| Modus | Deskripsi | Kapan digunakan | Kinerja |
|---|---|---|---|
| Snapshot | Salin sekali semua data | Sumber mengubah >10% baris per siklus | 10x lebih efisien jika memodifikasi >10% data sumber |
| Diaktifkan | Pembaruan terjadwal yang dijalankan sesuai permintaan atau pada interval | Baris sumber berubah pada frekuensi yang diketahui. Penyisipan, pembaruan, dan penghapusan dilakukan setiap pemutakhiran. | Keseimbangan biaya/keterlambatan yang baik. Mahal jika dijalankan pada interval <5 menit |
| Terus-menerus | Streaming real-time dengan latensi beberapa detik | Perubahan harus muncul di Lakebase dalam waktu hampir real time | Jeda terendah, biaya tertinggi. Interval minimum 15 detik |
Kebutuhan sumber bergantung pada mode sinkronisasi:
-
Snapshot menyalin semua data pada setiap sinkronisasi, sehingga sumber hanya perlu mendukung
SELECT *. -
Triggered dan Continuous menerapkan perubahan tingkat baris secara bertahap, sehingga sumber harus menyediakan feed data perubahan. Aktifkan umpan data perubahan saat penulisan pada sumber, atau gunakan umpan data perubahan otomatis. Jika sumber Triggered atau Continuous tidak memiliki umpan data perubahan, UI akan menampilkan peringatan dengan perintah yang tepat
ALTER TABLEuntuk dijalankan.
Umpan data perubahan otomatis (Pratinjau Publik) menghitung perubahan pada tingkat baris pada saat pembacaan, alih-alih memerlukan umpan data perubahan pada waktu penulisan di sumber. Ini memungkinkan lebih banyak jenis sumber, termasuk tabel Apache Iceberg dan tampilan terwujud, disinkronkan dalam mode Triggered atau Continuous. Untuk tipe sumber yang didukung oleh Automatic change data feed, lihat dokumentasi Automatic change data feed .
Umpan data perubahan otomatis untuk tabel yang disinkronkan masih dalam pratinjau. Saat masih dalam preview, selesaikan dua langkah tambahan:
Aktifkan pratinjau. Admin ruang kerja mengaktifkan fitur pratinjau Automatic change data feed dari halaman Pratinjau di pengaturan ruang kerja.
Atur saluran pipeline ke pratinjau. Saat Anda membuat tabel yang disinkronkan, atur saluran pipeline ke
PREVIEW. Opsi ini saat ini hanya tersedia melalui API:{ "spec": { "new_pipeline_spec": { "pipeline_channel": "PREVIEW" } } }
Contoh kasus penggunaan
Anda dapat menggunakan tabel yang disinkronkan untuk kasus penggunaan penyajian data seperti:
- Mesin personalisasi yang melayani profil pengguna baru ke Aplikasi Databricks
- Aplikasi yang melayani prediksi model atau nilai fitur yang dihitung di lakehouse
- Dasbor yang menghadap pelanggan yang melayani KPI secara real time
- Layanan deteksi penipuan yang melayani skor risiko untuk tindakan segera
- Perangkat pendukung yang menyajikan catatan pelanggan yang diperkaya dari data lakehouse
Membuat tabel yang disinkronkan
Prasyarat
Anda memerlukan:
- Ruang kerja Databricks yang mengaktifkan Lakebase.
- Proyek Lakebase (lihat Membuat proyek).
- Tabel Katalog Unity untuk sinkronisasi.
- Izin untuk membuat tabel yang disinkronkan. Anda memerlukan USE_SCHEMA dan CREATE_TABLE pada skema apa pun yang Anda gunakan.
Untuk mode Triggered atau Continuous , sumber harus menyediakan feed data perubahan. Aktifkan umpan data perubahan saat penulisan pada tabel sumber Delta yang memenuhi syarat, atau gunakan umpan data perubahan otomatis untuk sumber seperti tabel Apache Iceberg dan tampilan terwujud. Feed data perubahan otomatis ada di Public Preview dan memerlukan pengaturan tambahan yang dijelaskan dalam mode Sinkronisasi.
Untuk mengaktifkan umpan data perubahan saat penulisan pada tabel sumber Delta, jalankan perintah berikut:
ALTER TABLE your_catalog.your_schema.your_table
SET TBLPROPERTIES (delta.enableChangeDataFeed = true)
Untuk perencanaan kapasitas dan kompatibilitas jenis data, lihat Jenis data dan kompatibilitas dan Perencanaan kapasitas.
Antarmuka Pengguna
Buka Katalog di bilah samping ruang kerja dan pilih tabel Katalog Unity yang ingin Anda sinkronkan.
Klik Buat>tabel Yang Disinkronkan dari tampilan detail tabel.
Dalam dialog Buat tabel yang disinkronkan :
Daftar katalog dan skema hanya menyertakan skema Katalog Unity di mana pengguna saat ini memiliki hak istimewa USE_SCHEMA dan CREATE_TABLE . Jika Anda tidak melihat skema yang Anda harapkan, konfirmasikan izin Anda dengan admin katalog Anda.
Nama tabel: Masukkan nama untuk tabel yang disinkronkan (dibuat dalam katalog dan skema yang sama dengan tabel sumber Anda). Ini membuat tabel yang disinkronkan dengan Katalog Unity dan tabel Postgres yang dapat Anda kueri.
Jenis database: Pilih Lakebase Serverless (Autoscaling).
Mode sinkronisasi: Pilih Rekam Jepret, Dipicu, atau Berkelanjutan berdasarkan kebutuhan Anda (lihat mode sinkronisasi di atas).
Konfigurasikan pilihan proyek, cabang, dan database Anda.
Verifikasi kunci Primer sudah benar (biasanya terdeteksi otomatis).
Penting
Kolom di kunci primer tidak dapat bernilai null dalam tabel yang disinkronkan. Baris dengan null dalam kolom kunci utama dikecualikan dari sinkronisasi.
(Opsional) Jika dua baris dapat berbagi kunci utama yang sama dalam tabel sumber, pilih kunci Timeseries untuk mengonfigurasi deduplikasi. Saat kunci timeseries ditentukan, tabel yang disinkronkan hanya berisi baris dengan nilai kunci timeseries terbaru untuk setiap kunci utama. Untuk mode kegagalan tanpa kunci timeseries, lihat Kunci duplikat.
Jika Anda memilih mode Terpicu atau Berkelanjutan dan belum mengaktifkan Ubah Umpan Data, Anda akan melihat peringatan dengan perintah yang tepat untuk dijalankan. Untuk pertanyaan kompatibilitas jenis data, lihat Jenis dan kompatibilitas data.
Klik Buat untuk membuat tabel yang disinkronkan.
Pantau tabel yang disinkronkan di Katalog. Tab Gambaran Umum memperlihatkan status sinkronisasi, konfigurasi, status alur, dan tanda waktu sinkronisasi terakhir. Gunakan Sinkronkan sekarang untuk refresh manual.
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
}
}'
Argumen SYNCED_TABLE_ID posisi menggunakan format catalog.schema.table. Di Postgres, tabel {table} dibuat dalam skema {schema}, di dalam database yang Anda atur dengan postgres_database (di sini, mydb). Perintah menunggu operasi selesai secara default. Untuk semua opsi yang tersedia, lihat databricks postgres create-synced-table.
Python SDK
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}")
synced_table_id menggunakan format catalog.schema.table dan menjadi nama tabel yang disinkronkan Katalog Unity. Di Postgres, tabel {table} dibuat dalam skema {schema}, di dalam database yang Anda atur dengan postgres_database (di sini, mydb).
Java SDK
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());
melengkung
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
}
}'
Ini menghasilkan operasi jangka panjang. Lakukan polling pada bagian yang dikembalikan name hingga done: true. Lihat Operasi jangka panjang. Untuk penyiapan autentikasi, lihat Autentikasi.
Menjadwalkan atau memicu sinkronisasi berikutnya
Cuplikan awal akan berjalan secara otomatis saat dibuat. Untuk mode Rekam Jepret dan Terpicu , sinkronisasi berikutnya harus dipicu secara eksplisit. Mode berkelanjutan adalah pengelolaan mandiri.
Tugas alur proses Sinkronisasi Tabel Basis Data
Tugas alur Sinkronisasi Tabel Database di Pekerjaan Lakeflow menjalankan alur tabel yang disinkronkan sebagai langkah alur kerja. Konfigurasikan pekerjaan dengan pemicu pembaruan tabel atau jadwal.
Pemicu pada pembaruan tabel sumber
Mengaktifkan pekerjaan saat tabel Unity Catalog sumber diperbarui. Dengan mode Dipicu, perubahan baru hanya diterapkan secara bertahap, memberikan kesegaran yang hampir real-time tanpa biaya mode Berkelanjutan yang selalu aktif.
- Di bilah samping, klik Alur Kerja.
- Klik Buat pekerjaan atau buka pekerjaan yang sudah ada.
- Pada tab Tugas , klik + Tambahkan tipe tugas lain.
- Di bawah Penyerapan dan Transformasi, pilih alur Sinkronisasi Tabel Database.
- Di bidang Alur , pilih alur yang terkait dengan tabel yang disinkronkan.
- Di bawah Jadwal & Pemicu, klik Tambahkan pemicu.
- Pilih Pembaruan tabel sebagai tipe pemicu.
- Di bawah Tabel, pilih tabel sumber dari Katalog Unity untuk diawasi.
- Kliklah Simpan.
Pemicu otomatis berdasarkan jadwal
Menjalankan sinkronisasi pada irama tetap. Cocok untuk mode Rekam Jepret , di mana refresh penuh malam atau mingguan biasanya merupakan pola yang paling efisien.
- Ikuti langkah 1–5 di atas untuk menambahkan tugas alur Sinkronisasi Tabel Database ke pekerjaan.
- Di bawah Jadwal & Pemicu, klik Tambahkan pemicu.
- Pilih Terjadwal sebagai jenis pemicu.
- Atur jadwal dan zona waktu cron Anda, lalu klik Simpan.
Periksa status sinkronisasi
Untuk memeriksa status saat ini dan waktu sinkronisasi terakhir tabel yang disinkronkan:
Antarmuka Pengguna
Di Katalog, navigasikan ke tabel yang disinkronkan dan pilih tab Gambaran Umum . Ini menunjukkan status sinkronisasi saat ini, status alur, dan tanda waktu sinkronisasi terakhir.
Python SDK
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
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());
melengkung
curl "https://your-workspace.cloud.databricks.com/api/2.0/postgres/synced_tables/my-catalog.sales.orders" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}"
Jenis dan kompatibilitas data
Jenis data Unity Catalog dipetakan ke jenis Postgres saat membuat tabel yang disinkronkan. Jenis kompleks (ARRAY, MAP, STRUCT) disimpan sebagai JSONB di Postgres.
| Jenis kolom sumber | Jenis kolom Postgres |
|---|---|
| BIGINT | BIGINT |
| BINARY | BYTEA |
| BOOLEAN | BOOLEAN |
| DATE | DATE |
| DECIMAL(p,s) | NUMERIK |
| dobel | PRESISI GANDA |
| FLOAT | WAKTU NYATA |
| INT | INTEGER |
| INTERVAL | INTERVAL |
| SMALLINT | SMALLINT |
| string | TEKS |
| TIMESTAMP | PENANDA WAKTU DENGAN ZONA WAKTU |
| TIMESTAMP_NTZ | TANDA WAKTU TANPA ZONA WAKTU |
| TINYINT | SMALLINT |
| ARRAY<elemenTipe> | JSONB |
| MAP<tipeKunci,tipeNilai> | JSONB |
| STRUCT<fieldName:fieldType[, ...]> | JSONB |
Nota
Jenis GEOGRAFI, GEOMETRI, VARIAN, dan OBJEK tidak didukung.
Pemetaan tipe kustom
Saat Anda membuat tabel yang disinkronkan, Anda dapat mengganti pemetaan tipe default dari Delta ke Postgres untuk kolom tertentu dengan type_overrides.
Nota
vector Tipe dan halfvec memerlukan ekstensi vektor di database tujuan. Membuat tabel yang disinkronkan tidak menginstal ekstensi, jadi instal satu sebelum membuat tabel yang disinkronkan. Gunakan lakebase_vector, yang menambahkan pencarian vektor ANN melalui Lakebase Search dan menginstal pgvector sebagai dependensi:
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
Untuk menggunakan tipe vector dan halfvec tanpa Lakebase Search, instal pgvector secara terpisah dengan CREATE EXTENSION IF NOT EXISTS vector;. Tipe ini varchar tidak memerlukan perpanjangan.
| Jenis kolom sumber | Tipe Postgres | Size | Definisi (pg_type) |
Contoh kasus penggunaan |
|---|---|---|---|---|
ARRAY<FLOAT>, ARRAY<DOUBLE> |
vector(n) |
Dimensi pensisipan | PG_SPECIFIC_TYPE_VECTOR |
Simpan embedding sebagai vector pengganti JSONB, siap untuk pencarian kesamaan dengan lakebase_vector |
ARRAY<FLOAT>, ARRAY<DOUBLE> |
halfvec(n) |
Dimensi pensisipan | PG_SPECIFIC_TYPE_HALFVEC |
Penyempurnaan setengah presisi pada sekitar setengah kapasitas penyimpanan vector |
STRING |
varchar(n) |
Panjang maksimum | PG_SPECIFIC_TYPE_VARCHAR |
Petakan ke varchar yang dibatasi panjangnya alih-alih TEXT bawaan |
Nota
size diperlukan untuk setiap tipe dalam tabel ini. Rentang yang valid adalah:
-
vectordanhalfvec: 1 sampai 16.000, jumlah dimensi embedding. -
varchar: 1 hingga 10.485.760, panjang karakter maksimum.
Pemetaan tipe kustom dapat dikonfigurasi melalui API, CLI, dan Databricks SDK saat Anda membuat tabel yang disinkronkan.
Untuk tabel sumber main.docs.chunks(id BIGINT, title STRING, embedding ARRAY<FLOAT>), pemetaan berikut memetakan title ke varchar(256) dan embedding ke vector(1024) di Postgres:
databricks postgres create-synced-table main.docs.chunks_pg \
--json '{
"spec": {
"source_table_full_name": "main.docs.chunks",
"branch": "projects/my-project/branches/production",
"primary_key_columns": ["id"],
"scheduling_policy": "SNAPSHOT",
"postgres_database": "mydb",
"create_database_objects_if_missing": true,
"type_overrides": [
{ "column_name": "title", "pg_type": "PG_SPECIFIC_TYPE_VARCHAR", "size": 256 },
{ "column_name": "embedding", "pg_type": "PG_SPECIFIC_TYPE_VECTOR", "size": 1024 }
]
}
}'
Tanpa override, title akan menjadi TEXT dan embedding akan menjadi JSONB.
Menangani karakter yang tidak valid
Karakter tertentu seperti byte null (0x00) diizinkan di kolom STRING, ARRAY, MAP, atau STRUCT pada Unity Catalog tetapi tidak didukung di kolom Postgres TEXT atau JSONB. Ini dapat menyebabkan kegagalan sinkronisasi dengan kesalahan seperti:
ERROR: invalid byte sequence for encoding "UTF8": 0x00
ERROR: unsupported Unicode escape sequence DETAIL: \u0000 cannot be converted to text
- Kesalahan pertama terjadi ketika byte null muncul di kolom string tingkat atas, yang langsung dipetakan ke Postgres
TEXT. - Kesalahan kedua terjadi saat byte nol muncul dalam string yang tersarang dalam tipe kompleks (
STRUCT,ARRAY, atauMAP), yang diserialkan sebagaiJSONB. Selama serialisasi, semua string ditransmisikan ke PostgresTEXT, di mana\u0000tidak diizinkan.
Solusi:
Membersihkan bidang string: Hapus karakter yang tidak didukung sebelum menyinkronkan. Untuk byte nol dalam kolom STRING:
SELECT REPLACE(column_name, CAST(CHAR(0) AS STRING), '') AS cleaned_column FROM your_tableKonversi ke BINARY: Untuk kolom STRING di mana mempertahankan byte mentah diperlukan, konversi ke jenis BINARY.
Perencanaan kapasitas
Saat merencanakan implementasi tabel yang disinkronkan, pertimbangkan persyaratan sumber daya ini:
- Penggunaan koneksi: Setiap tabel yang disinkronkan menggunakan hingga 16 koneksi ke database Lakebase Anda, yang dihitung untuk batas koneksi proyek.
- Kuota ukuran: Total data logis di semua tabel yang disinkronkan memiliki kuota 16 TB. Hubungi Dukungan Databricks jika Anda memerlukan kuota yang lebih besar. Tabel individual tidak memiliki kuota, tetapi Databricks merekomendasikan tidak melebihi 1 TB untuk tabel yang memerlukan refresh.
- Ukuran refresh penuh: Saat memicu refresh penuh, versi lama di Postgres tidak dihapus hingga sinkronisasi baru selesai. Kedua versi akan sementara diperhitungkan dalam kuota ukuran database logis selama penyegaran.
- Tabel per sumber: Satu tabel sumber dapat memiliki hingga 20 tabel yang disinkronkan.
-
Persyaratan penamaan: Nama database, skema, dan tabel hanya boleh berisi karakter alfanumerik dan garis bawah (
[A-Za-z0-9_]+). - Panduan pengidentifikasi sumber: Hindari menggunakan huruf besar atau karakter khusus dalam nama kolom atau tabel dalam tabel Unity Catalog sumber. Jika menyimpannya, Anda harus mengutip pengidentifikasi tersebut saat mereferensikannya di Postgres.
- Evolusi skema: Hanya perubahan skema aditif (seperti menambahkan kolom) yang didukung untuk mode Dipicu dan Berkelanjutan.
- Mengubah definisi tabel: Memperbarui definisi tabel yang disinkronkan tidak didukung melalui antarmuka apa pun (UI, SDK, CLI, REST API, Terraform, atau DAB). Untuk mengubah kunci utama atau kunci timeseries, atau untuk melakukan perubahan skema non-aditif, hapus tabel yang disinkronkan dan buat tabel baru.
- Kunci duplikat: Jika dua baris memiliki kunci utama yang sama dalam tabel sumber, alur sinkronisasi gagal kecuali Anda mengonfigurasi deduplikasi menggunakan kunci timeseries.
- Idempotensi API: API tabel tersinkronisasi bersifat idempoten, jadi lakukan percobaan ulang saat terjadi kesalahan sementara untuk memastikan operasi tetap tepat waktu.
- Kecepatan pembaruan: Untuk Lakebase, pipeline sinkronisasi mendukung penulisan Continuous dan Triggered dengan kecepatan sekitar 150 baris per detik per Unit Kapasitas (CU), serta penulisan Snapshot dengan kecepatan hingga 2.000 baris per detik per CU.
Operasi yang diizinkan pada tabel yang disinkronkan di Postgres
Azure Databricks merekomendasikan untuk hanya melakukan operasi berikut di Postgres untuk tabel yang disinkronkan untuk mencegah penimpaan atau inkonsistensi data yang tidak disengaja:
- Kueri baca-saja
- Membuat indeks
- Menjatuhkan tabel (untuk mengosongkan ruang setelah menghapus tabel yang disinkronkan dari Katalog Unity)
Meskipun dimungkinkan untuk memodifikasi tabel yang disinkronkan di Postgres dengan cara lain, tabel tersebut mengganggu alur sinkronisasi.
Kepemilikan dan izin
Tabel yang disinkronkan dimiliki oleh peran internal databricks_writer_<dbid> , bukan oleh pengguna yang membuatnya, karena alur sinkronisasi mengelolanya (lihat peran Postgres). Perintah khusus pemilik, seperti mengonfigurasi keamanan tingkat baris, tidak dapat dijalankan langsung pada tabel yang disinkronkan.
Nota
Ini adalah pengecualian untuk aturan Postgres umum, di mana objek yang Anda buat sendiri dimiliki oleh identitas Azure Databricks Anda jika login-nya ada sebagai peran di Postgres. Alur membuat tabel yang disinkronkan atas nama Anda.
Akses untuk pengguna yang membuat tabel yang disinkronkan
Saat Anda membuat tabel yang disinkronkan, identitas Azure Databricks Anda secara otomatis diberikan akses untuk menggunakannya. Tidak diperlukan databricks_superuser tindakan. Identitas Anda diberikan hak istimewa berikut pada tabel yang disinkronkan:
| Objek | Hak istimewa | Kegunaan |
|---|---|---|
| Tabel yang disinkronkan |
SELECT, DELETE, TRUNCATE |
Membaca atau menghapus tabel |
| Schema |
USAGE, CREATE |
Menggunakan skema dan membuat objek seperti indeks |
Anda tidak diberi INSERT atau UPDATE. Pipeline mengelola data tabel, sehingga penulisan langsung akan ditimpa pada penyegaran berikutnya.
DELETE dan TRUNCATE hanya mengosongkan tabel. Refresh berikutnya mengisi ulang tabel dari sumber.
Akses ini berasal dari izin Katalog Unity Anda pada tabel yang disinkronkan dan dikelola di Katalog Unity. Untuk mengubahnya, perbarui izin Unity Catalog pengguna. Anda tidak dapat REVOKE melakukannya secara langsung di Postgres menggunakan identitas Azure Databricks.
Nota
Akses ini terkait dengan identitas yang membuat tabel yang disinkronkan. Mengubah identitas Jalankan sebagai alur tidak akan menetapkannya ulang. Untuk menggunakan identitas pemilik yang berbeda, buat ulang tabel yang disinkronkan di bawah identitas tersebut.
Mengelola akses tabel yang disinkronkan
Setelah tabel yang disinkronkan dibuat, databricks_superuser dapat membaca tabel yang disinkronkan dari Postgres.
databricks_superuser memiliki pg_read_all_data, yang memungkinkan peran ini membaca dari semua tabel. Ini juga memiliki hak istimewa pg_write_all_data, yang memungkinkan peran ini untuk menulis ke semua tabel. Ini berarti bahwa databricks_superuser juga dapat menulis ke tabel yang disinkronkan di Postgres. Lakebase mendukung perilaku penulisan ini jika Anda perlu membuat perubahan mendesak dalam tabel target Anda. Namun, Azure Databricks merekomendasikan untuk membuat perbaikan di tabel sumber Anda sebagai gantinya.
juga
databricks_superuserdapat memberikan hak istimewa ini kepada pengguna lain:GRANT USAGE ON SCHEMA synced_table_schema TO user;GRANT SELECT ON synced_table_name TO user;databricks_superuserdapat mencabut hak istimewa ini:REVOKE USAGE ON SCHEMA synced_table_schema FROM user;REVOKE {SELECT | INSERT | UPDATE | DELETE} ON synced_table_name FROM user;
Mengelola operasi tabel yang disinkronkan
databricks_superuser dapat mengelola siapa saja pengguna yang diizinkan melakukan operasi tertentu pada tabel yang disinkronkan. Operasi yang didukung untuk tabel yang disinkronkan adalah:
CREATE INDEXALTER INDEXDROP INDEXDROP TABLE
Semua operasi DDL lainnya ditolak untuk tabel yang disinkronkan.
Untuk memberikan hak istimewa ini kepada pengguna tambahan, databricks_superuser harus terlebih dahulu membuat ekstensi pada databricks_auth:
CREATE EXTENSION IF NOT EXISTS databricks_auth;
databricks_superuser Kemudian dapat menambahkan pengguna untuk mengelola tabel yang disinkronkan:
SELECT databricks_synced_table_add_manager('"synced_table_schema"."synced_table"'::regclass, '[user]');
databricks_superuser dapat menghapus pengguna dari mengelola tabel yang disinkronkan:
SELECT databricks_synced_table_remove_manager('[table]', '[user]');
databricks_superuser dapat melihat semua manajer:
SELECT * FROM databricks_synced_table_managers;
Menghapus tabel yang disinkronkan
Menghapus tabel yang disinkronkan dari Katalog Unity juga menghilangkan tabel Postgres terkait.
Antarmuka Pengguna
Di Katalog, temukan tabel yang disinkronkan, klik menu, dan pilih Hapus.
Python SDK
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.postgres.delete_synced_table("synced_tables/my-catalog.sales.orders").wait()
Java SDK
import com.databricks.sdk.WorkspaceClient;
WorkspaceClient w = new WorkspaceClient();
w.postgres().deleteSyncedTable("synced_tables/my-catalog.sales.orders").waitForCompletion();
melengkung
curl -X DELETE "https://your-workspace.cloud.databricks.com/api/2.0/postgres/synced_tables/my-catalog.sales.orders" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}"
Pelajari lebih lanjut
| Tugas | Deskripsi |
|---|---|
| Membuat proyek | Menyiapkan proyek Lakebase |
| Menyambungkan ke database Anda | Pelajari opsi koneksi untuk Lakebase |
| Mendaftarkan database di Katalog Unity | Membuat data Lakebase Anda terlihat di Unity Catalog untuk tata kelola terpadu dan kueri lintas sumber |
| Integrasi Katalog Unity | Memahami tata kelola dan izin |
Integrasi katalog
- Duplikasi katalog: Membuat tabel yang disinkronkan dalam katalog standar yang menargetkan database Postgres yang juga terdaftar sebagai katalog database terpisah menyebabkan tabel yang disinkronkan muncul di Katalog Unity di bawah katalog standar dan database.
Opsi lainnya
Untuk menyinkronkan data ke dalam sistem non-Databricks, lihat Solusi ETL terbalik Partner Connect seperti Sensus atau Hightouch.