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.
Penting
Lakebase Autoscaling adalah versi terbaru Lakebase, dengan komputasi penskalaan otomatis, skala-ke-nol, percabangan, dan pemulihan instan. Untuk wilayah yang didukung, lihat Ketersediaan wilayah. Jika Anda adalah pengguna Lakebase Provisioned, lihat Lakebase Provisioned.
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 (sub-10ms) 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 didukung.
Alur sinkronisasi menggunakan Alur Deklaratif Lakeflow Spark terkelola untuk terus memperbarui tabel yang disinkronkan Katalog Unity dan 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.
Mode sinkronisasi
Pilih mode sinkronisasi yang tepat berdasarkan kebutuhan aplikasi Anda:
| Modus | Deskripsi | Kapan digunakan | Kinerja |
|---|---|---|---|
| Snapshot | Salin sekali semua data | Perubahan sumber >10% baris per siklus, atau sumber tidak mendukung CDF (tampilan, tabel Iceberg) | 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 |
Mode Terpicu dan Berkelanjutan mengharuskan Umpan Data Perubahan (CDF) diaktifkan pada tabel sumber Anda. Jika CDF tidak diaktifkan, Anda akan melihat peringatan di UI dengan perintah yang tepat ALTER TABLE yang harus dijalankan. Untuk informasi lebih lanjut mengenai Change Data Feed, lihat Gunakan Change Data Feed Delta Lake di Databricks.
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 Dipicu atau Berkelanjutan , Ubah Umpan Data harus diaktifkan pada tabel sumber Anda:
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).
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.
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.
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
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 terhadap batas koneksi instans.
- Batas ukuran: Total batas ukuran data logis di semua tabel yang disinkronkan adalah 8 TB. Tabel individual tidak memiliki batas, tetapi Databricks merekomendasikan tidak melebihi 1 TB untuk tabel yang memerlukan refresh.
-
Persyaratan penamaan: Nama database, skema, dan tabel hanya boleh berisi karakter alfanumerik dan garis bawah (
[A-Za-z0-9_]+). - Evolusi skema: Hanya perubahan skema aditif (seperti menambahkan kolom) yang didukung untuk mode Dipicu dan Berkelanjutan.
- Laju pembaruan:: Untuk penskalaan otomatis Lakebase, alur sinkronisasi mendukung penulisan berkelanjutan dan dipicu pada sekitar 150 baris per detik per Unit Kapasitas (CU) dan penulisan snapshot hingga 2.000 baris per detik per Unit Kapasitas (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.
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.