全部产品
Search
文档中心

Realtime Compute for Apache Flink:Opsi konektor (VVR 8 dan sebelumnya)

更新时间:Jul 06, 2025

Topik ini menjelaskan opsi konektor Hologres dalam klausa WITH untuk Ververica Runtime (VVR) versi 8.0.x atau lebih lama.

Opsi konektor dalam klausa WITH

Umum

Opsi

Deskripsi

Tipe data

Diperlukan?

Nilai default

Catatan

connector

Jenis konektor.

String

Ya

Tidak ada nilai default

Atur opsi ini ke hologres.

dbname

Nama database.

String

Ya

Tidak ada nilai default

Hologres V2.0 memperkenalkan instans gudang virtual sebagai jenis baru dari instans elastis dan high-availability. Sumber daya komputasi dibagi menjadi beberapa gudang virtual untuk mengimplementasikan penyebaran high-availability. Gudang virtual yang berbeda berbagi titik akhir yang sama. Anda dapat menambahkan akhiran tertentu pada nilai opsi dbname untuk menentukan gudang virtual yang ingin Anda sambungkan. Sebagai contoh, jika Anda ingin menyambungkan tabel dimensi ke gudang virtual read_warehouse, tentukan 'dbname' = 'db_test@read_warehouse'.

Catatan

Gudang virtual hanya didukung saat mode terkait JDBC digunakan untuk tabel. Untuk informasi lebih lanjut, lihat opsi sdkMode dari tabel sumber, dimensi, atau sink.

tablename

Nama tabel.

String

Ya

Tidak ada nilai default

Jika skema bukan public, atur tablename ke schema.tableName.

username

  • Nama pengguna akun kustom. Format: BASIC$<user_name>.

  • ID AccessKey dari akun Alibaba Cloud Anda atau pengguna RAM.

String

Ya

Tidak ada nilai default

Penting

Untuk meningkatkan keamanan, gunakan variabel alih-alih melakukan hardcoding pada pasangan AccessKey Anda.

password

  • Kata sandi akun kustom.

  • Rahasia AccessKey dari akun Alibaba Cloud atau pengguna RAM Anda.

String

Ya

Tidak ada nilai default

endpoint

Titik akhir Hologres.

String

Ya

Tidak ada nilai default

Lihat Titik akhir untuk terhubung ke Hologres.

connection.ssl.mode

Menentukan apakah akan mengaktifkan transmisi terenkripsi SSL dan menentukan mode transmisi terenkripsi SSL yang digunakan.

String

Tidak

disable

  • disable: Transmisi terenkripsi SSL dinonaktifkan.

  • require: SSL diaktifkan untuk mengenkripsi tautan data.

  • verify-ca: SSL diaktifkan untuk mengenkripsi tautan data, dan sertifikat CA digunakan untuk memverifikasi keaslian server Hologres.

  • verify-full: SSL diaktifkan untuk mengenkripsi tautan data; dan klien menggunakan sertifikat CA untuk memverifikasi keaslian server Hologres, serta memeriksa kesesuaian antara nama umum (CN) atau Sistem Nama Domain (DNS) dalam sertifikat CA dengan titik akhir Hologres yang dikonfigurasi.

Catatan
  • Hanya VVR 8.0.5 atau versi lebih baru yang mendukung opsi ini.

  • Hologres V2.1 atau versi lebih baru mendukung mode verify-ca dan verify-full. Untuk informasi lebih lanjut, lihat Enkripsi transmisi.

  • Jika Anda mengatur opsi ini ke verify-ca atau verify-full, Anda harus mengonfigurasi connection.ssl.root-cert.location.

connection.ssl.root-cert.location

Path dari Sertifikat jika sertifikat CA digunakan.

String

Tidak

Tidak ada nilai default

Jika Anda mengatur connection.ssl.mode ke verify-ca atau verify-full, opsi ini menjadi wajib. Anda dapat menggunakan fitur artifacts di konsol Realtime Compute for Apache Flink untuk mengunggah sertifikat, yang akan disimpan di direktori /flink/usrlib. Sebagai contoh, jika nama file sertifikat CA adalah certificate.crt, atur opsi ini ke '/flink/usrlib/certificate.crt'.

Catatan
  • Hanya VVR 8.0.5 atau versi lebih baru yang mendukung parameter ini.

  • Untuk informasi tentang cara memperoleh sertifikat CA, lihat Langkah 2: Unduh sertifikat CA.

jdbcRetryCount

Jumlah maksimum percobaan ulang yang diizinkan untuk membaca dan menulis data jika terjadi kegagalan koneksi.

Bilangan Bulat

Tidak

10

jdbcRetrySleepInitMs

Periode tunggu tetap untuk setiap percobaan ulang.

Panjang

Tidak

1000

Periode tunggu aktual untuk setiap percobaan ulang dihitung dengan menggunakan rumus berikut: jdbcRetrySleepInitMs+retry*jdbcRetrySleepStepMs. Satuan: milidetik.

jdbcRetrySleepStepMs

Periode tunggu kumulatif untuk setiap percobaan ulang.

Long

Tidak

5000

Periode tunggu aktual untuk setiap percobaan ulang dihitung dengan menggunakan rumus berikut: jdbcRetrySleepInitMs+retry*jdbcRetrySleepStepMs. Satuan: milidetik.

jdbcConnectionMaxIdleMs

Durasi maksimum koneksi JDBC dapat tetap idle.

Long

Tidak

60000

Jika koneksi JDBC tetap idle selama periode waktu yang melebihi nilai opsi ini, koneksi akan ditutup dan dilepaskan. Satuan: milidetik.

jdbcMetaCacheTTL

Waktu maksimum untuk menyimpan informasi TableSchema dalam cache.

Long

Tidak

60000

Satuan: milidetik.

jdbcMetaAutoRefreshFactor

Faktor untuk memicu penyegaran otomatis cache. Jika waktu tersisa untuk menyimpan data dalam cache kurang dari waktu untuk memicu penyegaran otomatis cache, sistem secara otomatis menyegarkan cache.

Integer

Tidak

4

Waktu tersisa untuk menyimpan data dalam cache dihitung dengan menggunakan rumus berikut:

Waktu tersisa untuk menyimpan data dalam cache = Waktu kedaluwarsa cache - Waktu data telah disimpan dalam cache.

Setelah cache diperbarui secara otomatis, durasi data disimpan di cache dihitung ulang dari 0.

Waktu untuk memicu penyegaran otomatis cache dihitung dengan menggunakan rumus berikut:

jdbcMetaCacheTTL/jdbcMetaAutoRefreshFactor.

type-mapping.timestamp-converting.legacy

Menentukan apakah akan melakukan konversi tipe waktu antara Realtime Compute for Apache Flink dan Hologres.

Boolean

Tidak

true

  • true: Konversi zona waktu dilakukan berdasarkan zona waktu Java Virtual Machine (JVM) dalam lingkungan runtime.

  • false (direkomendasikan): Konversi zona waktu dilakukan berdasarkan zona waktu Realtime Compute for Apache Flink.

Catatan

property-version

Versi opsi konektor.

Integer

Tidak

0

Nilai valid:

  • 0

  • 1 (direkomendasikan)

Catatan
  • Hanya VVR 8.0.6 atau lebih baru yang mendukung opsi ini.

  • Himpunan opsi konektor yang tersedia dan nilai default mereka mungkin bervariasi di versi mayor VVR yang berbeda. Kami akan menjelaskan perbedaan apa pun dalam catatan opsi.

Spesifik sumber

Opsi

Deskripsi

Tipe data

Diperlukan?

Nilai default

Catatan

field_delimiter

Pemisah yang digunakan antar baris saat data diekspor.

String

Tidak

"\u0002"

binlog

Menentukan apakah akan mengonsumsi data log biner.

Boolean

Tidak

false

  • true

  • false

Catatan
  • Jika property-version=0, nilai default adalah false.

  • Jika property-version=1, nilai default adalah true.

sdkMode

Mode SDK.

String

Tidak

holohub

  • holohub: Data log biner dikonsumsi dalam mode HoloHub.

  • jdbc: Data log biner dikonsumsi dalam mode JDBC.

  • jdbc_fixed: Data log biner dikonsumsi dalam mode JDBC tetap, yang tidak tunduk pada batasan koneksi. Mode ini tidak mendukung mengonsumsi log biner dari database dengan penyembunyian data diaktifkan.

Untuk informasi tentang nilai yang direkomendasikan untuk versi berbeda, lihat Tindakan pencegahan.

jdbcBinlogSlotName

Nama slot dari tabel sumber log biner dalam mode JDBC.

String

Tidak

Tidak ada nilai default

Opsi ini hanya berlaku ketika sdkMode diatur ke jdbc. Jika Anda tidak menentukan opsi ini, konektor Hologres secara otomatis membuat slot. Untuk informasi lebih lanjut, lihat Konsumsi log biner dalam mode JDBC.

Catatan

Jika Anda menggunakan Hologres V2.1 atau yang lebih baru dan VVR 8.0.5 atau yang lebih baru, lewati konfigurasi opsi ini, dan konektor tidak akan mencoba untuk secara otomatis membuat slot.

binlogMaxRetryTimes

Jumlah percobaan ulang setelah Realtime Compute for Apache Flink gagal membaca data log biner.

Integer

Tidak

60

binlogRetryIntervalMs

Interval antara percobaan ulang setelah Realtime Compute for Apache Flink gagal membaca data log biner.

Panjang

Tidak

2000

Satuan: milidetik.

binlogBatchReadSize

Jumlah baris di mana data log biner dibaca dalam satu waktu.

Integer

Tidak

100

cdcMode

Menentukan apakah akan membaca data log biner dalam mode CDC.

Boolean

Tidak

false

  • true: Data log biner dibaca dalam mode CDC.

  • false: Data log biner tidak dibaca dalam mode CDC.

Catatan
  • Jika property-version=0, nilai default adalah false.

  • Jika property-version=1, nilai default adalah true.

upsertSource

Menentukan apakah tabel sumber membaca aliran changelog yang berisi pesan UPSERT.

Boolean

Tidak

false

Opsi ini hanya berlaku dalam mode CDC.

  • true: Hanya pesan UPSERT yang didukung, termasuk pesan INSERT, DELETE, dan UPDATE_AFTER.

  • false: Semua jenis pesan didukung, termasuk pesan INSERT, DELETE, UPDATE_BEFORE, dan UPDATE_AFTER.

Catatan

Jika operator retraction ada di tabel sink, seperti fungsi ROW_NUMBER() digunakan bersama dengan klausa OVER untuk deduplikasi, Anda harus mengatur upsertSource ke true.

binlogStartupMode

Mode konsumsi log biner.

String

Tidak

earliestOffset

  • initial: Mengonsumsi semua data terlebih dahulu, kemudian Log biner dikonsumsi.

  • earliestOffset: Mengonsumsi Log biner dari yang paling awal.

  • timestamp: Mengonsumsi Log biner dari waktu yang ditentukan oleh opsi startTime.

Catatan

Opsi startTime memiliki prioritas lebih tinggi. Ini berarti jika Anda mengonfigurasi opsi startTime atau memilih titik waktu mulai saat memulai pekerjaan, opsi binlogStartupMode secara paksa diatur ke timestamp.

Catatan
  • Jika property-version=0, nilai defaultnya adalah false.

  • Jika property-version=1, nilai defaultnya adalah true.

startTime

Waktu mulai ketika data Hologres dikonsumsi.

String

Tidak

Tidak ada nilai default

Formatnya adalah yyyy-MM-dd hh:mm:ss. Jika opsi ini tidak dikonfigurasi dan pekerjaan tidak dilanjutkan dari suatu state, Realtime Compute for Apache Flink mulai mengonsumsi data Hologres dari log biner paling awal.

jdbcScanFetchSize

Jumlah catatan data yang dapat diproses sekaligus selama operasi pemindaian.

Integer

Tidak

256

jdbcScanTimeoutSeconds

Periode batas waktu untuk operasi pemindaian.

Bilangan Bulat

Tidak

60

Satuan: detik.

jdbcScanTransactionSessionTimeoutSeconds

Periode waktu habis untuk transaksi yang menjadi bagian dari operasi pemindaian.

Integer

Tidak

600

Opsi ini sesuai dengan parameter GUC Hologres GUC parameter idle_in_transaction_session_timeout.

Nilai 0 berarti waktu habis tidak diizinkan.

enable_filter_push_down

Menentukan apakah akan melakukan filter pushdown selama fase pembacaan data penuh.

Boolean

Tidak

false

  • false: Filter pushdown tidak dilakukan.

  • true: Kondisi filter yang didukung didorong ke Hologres selama fase pembacaan data penuh. Operasi filter pushdown dilakukan dalam skenario pembacaan data penuh berikut: pembacaan data penuh dari tabel sumber Hologres di mana fitur binary logging dinonaktifkan, dan pembacaan data penuh dalam tabel log biner ketika konektor Hologres mengonsumsi data penuh dan inkremental dalam tabel sumber.

    Penting

    Kami menyarankan Anda menggunakan VVR 6.0.7 atau versi lebih baru dan menentukan opsi ini dalam pernyataan DDL tabel sumber untuk mengaktifkan filter pushdown, meningkatkan kinerja keseluruhan.

partition-binlog.mode

Mode di mana log biner dalam tabel terpartisi dikonsumsi.

Enum

Tidak

DISABLE

  • DISABLE: Tabel sumber bukan merupakan tabel terpartisi. Jika tabel Hologres yang ditentukan adalah tabel terpartisi, pengecualian akan dilaporkan.

  • DYNAMIC: Partisi terbaru dari tabel terpartisi terus dikonsumsi. Fitur partisi dinamis harus diaktifkan untuk tabel terpartisi. Dalam mode dinamis, partisi dikonsumsi secara kronologis, dari yang tertua hingga yang terbaru. Ketika data dalam partisi sebelum yang terbaru sedang dikonsumsi, konektor mulai mengonsumsi data dalam partisi terbaru ketika unit waktu baru tiba.

  • STATIC: Partisi tetap dari tabel terpartisi dikonsumsi. Beberapa partisi dapat dikonsumsi pada saat yang bersamaan. Partisi tidak dapat ditambahkan atau dihapus selama proses konsumsi. Secara default, semua partisi dari tabel terpartisi dikonsumsi.

partition-binlog-lateness-timeout-minutes

Lateness maksimum yang diizinkan sebelum timeout dipicu ketika data dalam tabel partisi dikonsumsi secara dinamis.

Boolean

Tidak

60

  • Satuan: menit.

  • Dalam mode dinamis, konektor Hologres mulai mengonsumsi data dari partisi terbaru ketika unit waktu baru tiba. Namun, ia tidak segera berhenti mengonsumsi partisi sebelumnya. Sebaliknya, ia terus memantau partisi sebelumnya untuk memastikan semua data terlambat dikonsumsi.

    Sebagai contoh, dalam tabel berpartisi harian dengan lateness maksimum 60 menit, konsumsi data untuk partisi 20240920 akan diperpanjang hingga 01:00:00 pada 21 September 2024, bukan berakhir pada 00:00:00.

  • Nilai opsi ini tidak boleh melebihi waktu unit partisi.

    Untuk tabel yang dipartisi per hari, nilai maksimum opsi ini adalah 24 × 60 = 1440 menit. Dalam mode dinamis, biasanya konektor mengonsumsi satu partisi pada satu waktu. Namun, ia dapat mengonsumsi dua partisi secara paralel selama periode lateness maksimum yang ditentukan.

partition-values-to-read

Partisi yang akan dikonsumsi ketika data dalam tabel partisi dikonsumsi dalam mode statis.

String

Tidak

Tidak ada nilai default

  • Jika Anda tidak mengonfigurasi opsi ini, konektor Hologres mengonsumsi semua partisi tabel yang ditentukan dalam mode statis. Jika Anda mengonfigurasi opsi ini, konektor hanya mengonsumsi partisi yang ditentukan.

  • Berikan nilai partisi untuk opsi ini, bukan nama partisi lengkap. Pisahkan beberapa nilai partisi dengan koma (,). Ekspresi reguler tidak didukung.

Spesifik sink

Opsi

Deskripsi

Tipe data

Diperlukan?

Nilai default

Catatan

sdkMode

Mode SDK.

String

Tidak

jdbc

  • jdbc: Data ditulis menggunakan driver JDBC.

  • jdbc_copy: Data ditulis dalam mode jdbc_copy.

    Mode ini sangat performa dalam menulis data streaming dan berguna untuk skenario throughput tinggi, latensi rendah. Mode ini tidak mendukung penghapusan data, penulisan ke tabel partisi, atau opsi ignoreNullWhenUpdate.

  • rpc: Data ditulis dalam mode RPC. Data tipe JSONB atau RoarinBitmap tidak dapatditulis ke Hologres.

  • jdbc_fixed (dalam pratinjau publik): Data ditulis dalam mode JDBC tetap.

    Dibandingkan dengan mode JDBC, mode JDBC tetap tidak memakan koneksi. Data tipe JSONB atau RoarinBitmap tidak dapat ditulis ke Hologres. Mode ini tidak mendukung menulis data ke database dengan penyembunyian data diaktifkan.

Untuk informasi tentang nilai yang direkomendasikan dalam versi VVR berbeda, lihat Tindakan pencegahan.

bulkload

Menentukan apakah akan menulis data dalam mode bulkload.

Boolean

Tidak

false

Opsi ini berlaku hanya ketika opsi sdkMode diatur ke jdbc_copy. Aktifkan mode ini saat menulis data ke tabel tanpa kunci utama; untuk menulis data ke tabel dengan kunci utama, pastikan nilai unik dari kunci utama untuk menghindari pengecualian. Dibandingkan dengan mode jdbc_copy, lebih sedikit sumber daya Hologres yang dikonsumsi saat Anda menulis data dalam mode bulkload.

Catatan

Opsi ini didukung saat Anda menggunakan VVR 8.0.5 atau lebih baru dan Hologres V2.1 atau lebih baru.

useRpcMode

Menentukan apakah akan menggunakan konektor Hologres dalam mode RPC.

Boolean

Tidak

false

  • true: Gunakan mode RPC.

  • false: Gunakan mode JDBC.

    Driver JDBC memerlukan koneksi SQL, meningkatkan jumlah koneksi JDBC.

Catatan
  • Mengatur opsi ini ke true memiliki efek yang sama dengan mengatur sdkMode ke rpc. Dalam mode RPC, jumlah koneksi SQL berkurang. Untuk informasi lebih lanjut tentang konfigurasi yang direkomendasikan, lihat Tindakan pencegahan.

  • Ketika property-version=1, opsi ini tidak tersedia.

mutatetype

Mode penulisan data.

String

Tidak

insertorignore

  • insertorignore: Mengabaikan catatan duplikat.

  • insertorreplace: Mengganti baris yang ada dengan catatan duplikat.

  • insertorupdate: Memperbarui bidang tertentu untuk catatan duplikat, mempertahankan nilai di bidang lainnya.

    Pertimbangkan tabel dengan empat bidang: a (kunci utama), b, c, dan d. Hanya bidang a dan b yang didefinisikan dalam tabel sink. Ketika nilai kunci utama dari catatan masuk adalah duplikat, hanya bidang b yang diperbarui sementara bidang c dan d tetap tidak berubah.

Catatan
  • Jika property-version=0, nilai default adalah insertorignore.

  • Jika property-version=1, nilai default adalah insertorupdate.

partitionrouter

Menentukan apakah akan menulis data ke tabel partisi.

Boolean

Tidak

false

createparttable

Menentukan apakah akan secara otomatis membuat tabel terpartisi yang tidak ada berdasarkan nilai partisi.

Boolean

Tidak

false

Dalam mode RPC, jika nilai partisi mengandung tanda hubung (-), tabel partisi baru tidak dapat dibuat secara otomatis.

Catatan
  • Untuk VVR 8.0.3 atau yang lebih baru, tabel partisi dapat dibuat secara otomatis saat Anda menggunakan bidang bertipe DATE sebagai kunci partisi.

  • Pastikan bahwa nilai partisi tidak mengandung data kotor. Jika data kotor ada, terjadi failover karena tabel partisi tidak valid dibuat. Berhati-hatilah saat menggunakan opsi ini.

  • Jika Anda mengatur opsi sdk_mode ke jdbc_copy, data tidak dapat ditulis ke tabel partisi induk.

ignoredelete

Menentukan apakah akan mengabaikan pesan retraksi.

Boolean

Tidak

true

Catatan
  • Opsi ini hanya berlaku ketika opsi mutatetype diatur ke insertorupdate.

  • Untuk VVR 8.0.8 atau yang lebih baru, kami sarankan Anda menggunakan opsi sink.delete-strategy sebagai gantinya. Jika kedua opsi dikonfigurasi, hanya opsi sink.delete-strategy yang akan berlaku.

  • Jika property-version=0, nilai defaultnya adalah true.

  • Jika property-version=1, nilai defaultnya adalah false.

sink.delete-strategy

Menentukan strategi untuk memproses pesan retraction.

String

Tidak

Tidak ada nilai default

Nilai yang valid:

  • IGNORE_DELETE: Mengabaikan pesan UPDATE_BEFORE dan DELETE. Ini ideal untuk skenario yang berfokus pada penyisipan dan pembaruan data serta tidak memerlukan penghapusan.

  • NON_PK_FIELD_TO_NULL: Mengabaikan pesan UPDATE_BEFORE, dan menangani pesan DELETE dengan memperbarui nilai non-primary key menjadi null. Strategi ini memungkinkan Anda menghapus data tertentu tanpa memengaruhi kolom lain selama partial update.

  • DELETE_ROW_ON_PK: Mengabaikan pesan UPDATE_BEFORE dan memproses pesan DELETE dengan menghapus seluruh baris berdasarkan nilai primary key-nya. Strategi ini memungkinkan Anda menghapus seluruh baris selama partial update.

  • CHANGELOG_STANDARD: Mematuhi standar changelog Flink SQL: Tidak mengabaikan pesan DELETE dan memperlakukan pesan UPDATE sebagai DELETE diikuti oleh INSERT, memastikan akurasi data. Strategi ini berlaku untuk skenario tanpa partial update.

Catatan
  • Hanya VVR 8.0.8 atau versi lebih baru yang mendukung opsi ini.

  • Mengatur opsi ini ke NON_PK_FIELD_TO_NULL dapat mengakibatkan catatan dengan nilai non-primary key disetel menjadi null.

connectionSize

Ukuran pool koneksi JDBC yang dibuat dalam penyebaran Realtime Compute for Apache Flink.

Bilangan Bulat

Tidak

3

Ukuran pool koneksi JDBC sebanding dengan throughput data. Jika performa deployment buruk, tingkatkan ukuran pool koneksi.

jdbcWriteBatchSize

Jumlah maksimum baris data yang dapat diproses oleh operator sink aliran Hologres sekaligus saat menggunakan driver JDBC.

Bilangan Bulat

Tidak

256

Unit: baris.

Catatan

Jika Anda menentukan semua parameter sebelumnya (jdbcWriteBatchSize, jdbcWriteBatchByteSize, dan jdbcWriteFlushInterval), sistem akan menulis data ke tabel sink Hologres ketika salah satu kondisi terkait terpenuhi.

jdbcWriteBatchByteSize

Jumlah maksimum byte data yang dapat diproses oleh node sink streaming Hologres sekaligus saat menggunakan driver JDBC.

Panjang

Tidak

2097152 (2 × 1024 × 1024 byte = 2 MB)

Catatan

Anda hanya dapat menentukan satu dari opsi berikut: jdbcWriteBatchSize, jdbcWriteBatchByteSize, dan jdbcWriteFlushInterval. Jika Anda menentukan semuanya, sistem akan menulis data ke tabel sink Hologres ketika salah satu kondisi terpenuhi.

jdbcWriteFlushInterval

Periode waktu maksimum yang diperlukan untuk menunggu node sink streaming Hologres menulis data dari beberapa baris ke Hologres secara bersamaan saat menggunakan JDBC driver.

Panjang

Tidak

10000

Unit: milidetik.

Catatan

Anda hanya dapat menentukan salah satu dari opsi berikut: jdbcWriteBatchSize, jdbcWriteBatchByteSize, dan jdbcWriteFlushInterval. Jika Anda menentukan semuanya, sistem akan menulis data ke tabel sink Hologres ketika salah satu kondisi terpenuhi.

ignoreNullWhenUpdate

Menentukan apakah akan mengabaikan nilai null dalam data yang ditulis ketika mutatetype='insertOrUpdate' ditentukan.

Boolean

Tidak

false

  • false: Nilai null ditulis ke tabel sink Hologres.

  • true: Nilai null dalam data yang ditulis diabaikan.

Catatan

Jika Anda mengatur opsi sdk_mode ke jdbc_copy, opsi ini tidak didukung.

connectionPoolName

Nama dari kolam koneksi. Di dalam TaskManager yang sama, tabel yang dikonfigurasi dengan kolam koneksi yang sama dapat berbagi kolam koneksi.

String

Tidak

Tidak ada nilai default

Atur opsi ini ke string apa pun selain 'default'. Jika Anda menetapkan kumpulan koneksi yang sama untuk beberapa tabel, Anda juga harus menetapkan opsi connectionSize ke nilai yang sama untuk tabel-tabel tersebut.

Catatan
  • VVR 8.0.3 dan sebelumnya: Secara default, setiap tabel menggunakan kumpulan koneksi miliknya sendiri.

  • VVR 8.0.4 atau lebih baru: Secara default, tabel yang menggunakan titik akhir yang sama dalam pekerjaan yang sama berbagi satu kumpulan koneksi. Jika jumlah tabel dalam sebuah pekerjaan tinggi, koneksi dalam kumpulan koneksi mungkin tidak mencukupi, yang memengaruhi kinerja pekerjaan. Dalam kasus ini, kami sarankan Anda menetapkan opsi connectionPoolName ke nilai yang berbeda untuk tabel yang berbeda.

  • Tentukan opsi ini sesuai kebutuhan. Pertimbangkan pekerjaan yang melibatkan tabel berikut: tabel dimensi A dan B dan tabel sink C, D, dan E. Anda dapat mengonfigurasi kumpulan koneksi pool1 untuk A dan B, kumpulan koneksi pool2 untuk C dan D, dan kumpulan koneksi pool3 untuk E di mana sejumlah besar data diproses.

jdbcEnableDefaultForNotNullColumn

Menentukan apakah akan mengizinkan konektor Hologres mengisi nilai default jika nilai null ditulis ke kolom non-null yang tidak memiliki nilai default yang dikonfigurasi dalam tabel Hologres.

Boolean

Tidak

true

  • true: Konektor mengisi nilai default berdasarkan aturan berikut:

    • Jika kolom bertipe STRING, kolom dibiarkan kosong.

    • Jika kolom bertipe NUMBER, nilai null diubah menjadi 0.

    • Jika kolom bertipe DATE, TIMESTAMP, atau TIMESTAMPTZ, nilai null diubah menjadi 1970-01-01 00:00:00.

  • false: Konektor tidak mengisi nilai default. Jika nilai null ditulis ke kolom non-null, pengecualian akan dilaporkan.

remove-u0000-in-text.enabled

Menentukan apakah akan mengizinkan konektor Hologres menghapus karakter tidak valid \u0000 dari data STRING yang ditulis ke tabel sink.

Boolean

Tidak

false

  • false: Konektor tidak menghapus karakter yang tidak valid, tetapi dapat melaporkan kesalahan, seperti ERROR: invalid byte sequence for encoding "UTF8": 0x00, saat mengidentifikasi data kotor.

    Untuk menyelesaikan kesalahan ini, hapus secara manual data kotor dari tabel sumber atau definisikan cara memproses data kotor dalam kode pekerjaan.

  • true: Konektor menghapus karakter tidak valid \u0000.

Penting
  • Untuk VVR 8.0.1 atau yang lebih baru, opsi ini didukung hanya ketika sdkMode='jdbc'.

  • Untuk VVR 8.0.8 atau yang lebih baru, opsi ini didukung hanya ketika sdkMode='jdbc_copy' atau sdkMode='jdbc' ditentukan.

  • Jika data berisi konten seperti aaa\00bbb, mengaktifkan opsi ini dapat menyebabkan ketidaksesuaian data. Lanjutkan dengan hati-hati.

partial-insert.enabled

Menentukan apakah hanya bidang yang dideklarasikan dalam pernyataan INSERT yang disisipkan.

Boolean

Tidak

false

  • false: Semua bidang yang didefinisikan dalam pernyataan DDL tabel sink diperbarui. Nilai bidang yang tidak dideklarasikan dalam pernyataan INSERT diperbarui menjadi null.

  • true: Bidang yang didefinisikan dalam pernyataan INSERT didorong ke konektor. Dengan cara ini, hanya bidang yang dideklarasikan yang diperbarui atau disisipkan.

Catatan

Opsi ini berlaku hanya jika opsi mutatetype diatur ke InsertOrUpdate.

deduplication.enabled

Menentukan apakah akan melakukan deduplikasi saat data ditulis secara batch dalam mode JDBC atau jdbc_fixed.

Boolean

Tidak

true

  • true: Menyimpan catatan terbaru di antara yang memiliki nilai kunci utama identik. Asumsikan kolom pertama berfungsi sebagai kunci utama:

    • Jika INSERT (1,'a') dan INSERT (1,'b') tiba secara berurutan, hanya (1,'b') yang disimpan dan ditulis ke Hologres.

    • Jika catatan (1,'a') sudah ada di tabel sink Hologres dan DELETE (1,'a') dan INSERT (1,'b') tiba secara berurutan, hanya (1,'b') yang disimpan dan ditulis ke Hologres. Ini setara dengan operasi pembaruan langsung, bukan penghapusan diikuti oleh penyisipan.

  • false: Deduplikasi tidak dilakukan selama proses pengelompokan data. Jika catatan data baru tiba dengan kunci utama yang menduplikasi salah satu yang sudah ada dalam batch saat ini, catatan lama ditulis sebelum yang baru.

Catatan
  • Hanya VVR 8.0.5 atau versi lebih baru yang mendukung opsi ini.

  • Dalam kasus ekstrem di mana semua data memiliki kunci utama yang sama, jika deduplikasi tidak dilakukan, catatan data ditulis satu per satu, bukan dalam batch. Hal ini memengaruhi kinerja pekerjaan.

check-and-put.column

Menentukan apakah akan mengaktifkan fitur pembaruan bersyarat dan mengonfigurasi nama bidang yang ingin Anda periksa.

String

Tidak

Tidak ada nilai default

Anda harus mengatur opsi ini ke nama bidang dalam tabel Hologres.

Penting
  • Hanya VVR 8.0.11 atau lebih baru yang mendukung opsi ini.

  • Opsi ini didukung hanya ketika opsi sdkMode diatur ke jdbc_fixed atau jdbc.

  • Tabel sink harus memiliki kunci utama, dan opsi mutateType harus diatur ke Insertorupdate atau insertorreplace.

  • Kami merekomendasikan agar Anda membuat tabel sink berbasis baris atau tabel sink hibrida baris-kolom saat pencarian balik diperlukan.

  • Dalam data dengan banyak duplikat, operasi check-and-put akan merosot menjadi penulisan tunggal, yang akan mengurangi performa penulisan.

check-and-put.operator

Operator perbandingan untuk operasi pembaruan bersyarat.

String

Tidak

GREATER

Opsi ini memungkinkan Anda membandingkan bidang pemeriksaan dalam catatan data baru dengan bidang pemeriksaan dalam catatan data lama di tabel. Jika hasil perbandingan memenuhi nilai opsi ini, Anda dapat melakukan operasi pembaruan bersyarat.

Nilai valid: GREATER, GREATER_OR_EQUAL, EQUAL, NOT_EQUAL, LESS, LESS_OR_EQUAL, IS_NULL, dan IS_NOT_NULL.

Catatan

Hanya VVR 8.0.11 atau lebih baru yang mendukung opsi ini.

check-and-put.null-as

Ketika Anda melakukan operasi pembaruan bersyarat, jika catatan data lama bernilai null, nilai null dianggap sebagai nilai valid dari opsi ini.

String

Tidak

Tidak ada nilai default

Dalam PostgreSQL, hasil dari membandingkan nilai apa pun dengan NULL adalah FALSE. Oleh karena itu, ketika data asli dalam tabel adalah NULL, Anda harus menetapkan NULL-AS sebagai parameter saat melakukan operasi pembaruan bersyarat. Parameter NULL-AS sama dengan fungsi COALESCE dalam Flink SQL.

Catatan

Hanya VVR 8.0.11 atau yang lebih baru yang mendukung opsi ini.

aggressive.enabled

Menentukan apakah akan mengaktifkan mode commit agresif.

Boolean

Tidak

false

Jika Anda mengatur opsi ini ke true, koneksi idle akan dipaksa untuk melakukan commit meskipun jumlah catatan data yang dapat diproses sekaligus tidak mencapai jumlah yang diharapkan. Latensi penulisan data dapat dikurangi ketika lalu lintas rendah.

Catatan
  • Hanya VVR 8.0.11 atau versi lebih baru yang mendukung opsi ini.

  • Opsi ini hanya didukung ketika opsi sdkMode diatur ke jdbc_fixed, jdbc, atau jdbc_copy.

Spesifik tabel dimensi

Opsi

Deskripsi

Tipe data

Diperlukan?

Nilai default

Catatan

sdkMode

Mode SDK.

String

Tidak

jdbc

  • jdbc: Data diquery menggunakan driver JDBC. Baik query titik berdasarkan kunci utama maupun query yang tidak berdasarkan kunci utama didukung. Namun, query yang tidak berdasarkan kunci utama sangat memengaruhi performa dan lambat.

  • rpc: Data diquery dalam mode RPC. Hanya query titik berdasarkan kunci utama yang didukung. Saat Anda menggabungkan tabel dimensi Hologres dengan tabel lain, Anda harus menentukan semua bidang dalam kunci utama tabel dimensi dalam klausa ON. Perbedaan antara mode RPC dan mode JDBC adalah bahwa mode RPC tidak memakan koneksi dan tidak mendukung membaca data tipe JSONB atau RoarinBitmap dari Hologres.

  • jdbc_fixed: Data diquery dalam mode JDBC tetap. Perbedaan antara mode JDBC tetap dan mode JDBC adalah bahwa mode JDBC tetap tidak memakan koneksi dan tidak mendukung membaca data tipe JSONB atau RoarinBitmap dari Hologres. Hanya query titik berdasarkan kunci utama yang didukung. Saat Anda menggabungkan tabel dimensi Hologres dengan tabel lain, Anda harus menentukan semua bidang dalam kunci utama tabel dimensi dalam klausa ON. Mode ini tidak mendukung query database yang fitur penyembunyian data diaktifkan.

Untuk informasi lebih lanjut tentang nilai yang direkomendasikan untuk versi VVR berbeda, lihat Catatan.

useRpcMode

Menentukan apakah akan menyambungkan ke konektor Hologres menggunakan RPC.

Boolean

Tidak

false

Nilai valid:

  • true: Konektor Hologres disambungkan menggunakan RPC. Efek pengaturan ini sama dengan efek saat Anda mengatur opsi sdkMode ke rpc. Jika RPC digunakan, jumlah koneksi SQL berkurang.

  • false: Konektor Hologres disambungkan menggunakan JDBC.

    Driver JDBC memerlukan koneksi SQL. Ini meningkatkan jumlah koneksi JDBC.

Catatan

Jika Anda mengatur opsi ini ke true, efeknya sama dengan efek saat Anda mengatur opsi sdkMode ke rpc. Untuk informasi lebih lanjut tentang operasi yang direkomendasikan, lihat Tindakan pencegahan.

connectionSize

Ukuran pool koneksi JDBC yang dibuat dalam sebuah job.

Bilangan Bulat

Tidak

3

Jika pekerjaan memiliki kinerja yang buruk, kami sarankan Anda meningkatkan ukuran kolam koneksi. Ukuran kolam koneksi JDBC sebanding dengan throughput data.

connectionPoolName

Nama kolam koneksi. Dalam TaskManager yang sama, tabel yang dikonfigurasikan dengan kolam koneksi yang sama dapat berbagi kolam koneksi.

String

Tidak

Tidak ada nilai default

Atur opsi ini ke string apa pun selain 'default'. Jika Anda mengatur kolam koneksi yang sama untuk beberapa tabel, Anda juga harus mengatur opsi connectionSize ke nilai yang sama untuk tabel-tabel tersebut.

Catatan
  • VVR 8.0.3 dan sebelumnya: Secara default, setiap tabel menggunakan kolam koneksinya sendiri.

  • VVR 8.0.4 atau lebih baru: Secara default, tabel yang menggunakan titik akhir yang sama dalam pekerjaan yang sama berbagi kolam koneksi. Jika jumlah tabel dalam pekerjaan tinggi, koneksi dalam kolam koneksi mungkin tidak cukup, yang memengaruhi performa pekerjaan. Dalam hal ini, kami merekomendasikan agar Anda mengatur opsi connectionPoolName ke nilai yang berbeda untuk tabel yang berbeda.

  • Tentukan opsi ini sesuai kebutuhan. Pertimbangkan pekerjaan yang melibatkan tabel berikut: tabel dimensi A dan B dan tabel sink C, D, dan E. Anda dapat mengonfigurasi kolam koneksi pool1 untuk A dan B, kolam koneksi pool2 untuk C dan D, dan kolam koneksi pool3 untuk E di mana jumlah data besar diproses.

jdbcReadBatchSize

Jumlah maksimum catatan data yang dapat diproses pada saat yang sama untuk query titik dalam tabel dimensi Hologres.

Integer

Tidak

128

jdbcReadBatchQueueSize

Jumlah maksimum permintaan yang diizinkan dalam antrian di thread untuk melakukan query titik dalam tabel dimensi Hologres.

Integer

Tidak

256

jdbcReadTimeoutMs

Periode timeout untuk melakukan query titik dalam tabel dimensi Hologres.

Long

Tidak

0

Nilai default 0 berarti timeout tidak diizinkan.

jdbcReadRetryCount

Jumlah percobaan ulang ketika query titik dalam tabel dimensi Hologres mengalami timeout.

Integer

Tidak

  • Versi VVR lebih awal dari 8.0.5: 1

  • VVR 8.0.5 atau lebih baru: 10

Opsi ini berbeda dari jdbcRetryCount. Opsi jdbcRetryCount menentukan jumlah maksimum percobaan ulang yang diizinkan untuk membaca dan menulis data jika terjadi kegagalan koneksi.

jdbcScanFetchSize

Jumlah maksimum catatan data yang dapat diproses pada saat yang sama dengan memanggil operasi scan saat Anda melakukan join tabel satu-ke-banyak. Dalam join tabel satu-ke-banyak, tidak ada kunci utama lengkap yang digunakan.

Integer

Tidak

256

jdbcScanTimeoutSeconds

Periode timeout maksimum untuk operasi scan.

Integer

Tidak

60

Satuan: detik.

cache

Kebijakan cache.

String

Tidak

None

Nilai valid:

  • None

  • LRU

cacheSize

Jumlah maksimum baris data yang dapat disimpan dalam cache.

Integer

Tidak

10000

Opsi ini tersedia setelah Anda mengatur cache ke LRU. Satuan: baris.

cacheTTLMs

Interval sistem menyegarkan cache.

Long

Tidak

Lihat kolom catatan.

Satuan: milidetik. Nilai default opsi cacheTTLMs bervariasi berdasarkan nilai parameter cache:

  • Jika opsi cache diatur ke LRU, opsi cacheTTLMs menentukan periode timeout cache. Secara default, entri cache tidak kedaluwarsa.

  • Jika opsi cache diatur ke None, Anda tidak perlu mengonfigurasi opsi cacheTTLMs, yang menunjukkan bahwa cache tidak kedaluwarsa.

cacheEmpty

Menentukan apakah akan menyimpan hasil query JOIN yang kosong dalam cache.

Boolean

Tidak

true

  • true: Query JOIN yang hasilnya kosong disimpan dalam cache.

  • false: Query JOIN yang hasilnya kosong tidak disimpan dalam cache.

    Jika kondisi sebelum AND terpenuhi tetapi kondisi setelah AND tidak terpenuhi dalam pernyataan JOIN, query JOIN yang hasilnya kosong juga disimpan dalam cache. Contoh kode berikut memberikan contoh:

    LEFT JOIN latest_emergency FOR SYSTEM_TIME AS OF PROCTIME() AS t2
     ON t1.alarm_id = t2.alarm_id -- Jika peringatan dinamis dikonfigurasikan, tambahkan id peringatan selama pencocokan.
     AND CASE
     WHEN alarm_type = 2 THEN t1.dynamic_id = t2.dynamic_alarm_id
     ELSE true
     END

async

Menentukan apakah akan mengaktifkan sinkronisasi data dalam mode asinkron.

Boolean

Tidak

false

  • true

  • false

Catatan

Data tidak diurutkan saat data disinkronkan dalam mode asinkron.

Zona waktu Realtime Compute for Apache Flink dan Hologres

Tipe waktu

Layanan

Tipe

Deskripsi

Flink

Flink TIMESTAMP

Tanggal dan waktu tanpa zona waktu. Data tipe TIMESTAMP adalah timestamp yang mewakili tahun, bulan, hari, jam, menit, detik, dan fraksi detik. Data tipe TIMESTAMP dapat berupa string, seperti 1970-01-01 00:00:04.001.

Flink TIMESTAMP_LTZ

Digunakan untuk menggambarkan titik waktu absolut pada garis waktu. Data tipe LONG menunjukkan jumlah milidetik yang telah berlalu sejak waktu epoch. Data tipe INT menunjukkan jumlah nanodetik dalam milidetik. Waktu epoch merujuk pada 00:00:00 UTC pada 1 Januari 1970 dalam Java. Data tipe TIMESTAMP_LTZ ditafsirkan untuk perhitungan dan visualisasi berdasarkan zona waktu yang dikonfigurasi dalam sesi saat ini. Tipe TIMESTAMP_LTZ dapat digunakan untuk perhitungan lintas zona waktu karena ia mewakili titik waktu absolut yang sama dalam zona waktu berbeda berdasarkan waktu epoch.

Nilai TIMESTAMP_LTZ yang sama dapat mencerminkan nilai TIMESTAMP lokal yang berbeda dalam zona waktu berbeda. Sebagai contoh, jika nilai TIMESTAMP_LTZ adalah 2024-03-19T04:00:00Z, timestamp lokal di zona waktu Shanghai (UTC+8) akan ditampilkan sebagai 2024-03-19T12:00:00, sedangkan di zona waktu Greenwich (UTC+0) akan ditampilkan sebagai 2024-03-19T04:00:00.

Hologres

TIMESTAMP

Tanggal dan waktu tanpa zona waktu, yang mirip dengan tipe TIMESTAMP dari Realtime Compute for Apache Flink. Data tipe TIMESTAMP dalam Hologres tidak berubah meskipun zona waktu klien Hologres berubah. Sebagai contoh, data tipe TIMESTAMP dapat dinyatakan sebagai 2022-01-01 01:01:01.123456.

TIMESTAMP WITH TIME ZONE (TIMESTAMPTZ)

Tanggal dan waktu dengan zona waktu, yang mirip dengan tipe TIMESTAMP_LTZ dari Realtime Compute for Apache Flink. Saat Hologres menyimpan data TIMESTAMPTZ, Hologres mengonversi data menjadi nilai zona waktu dalam UTC. Saat Anda mengquery data, Hologres mengonversi nilai zona waktu dalam UTC menjadi nilai zona waktu pada klien berdasarkan parameter zona waktu klien.

Sebagai contoh, jika timestamp zona waktu Beijing (UTC+8) adalah 2022-02-01 10:33:20.125+08 dan timestamp disimpan sebagai tipe TIMESTAMPTZ dalam Hologres, timestamp dinyatakan sebagai 2022-02-01 10:33:20.125+08.

Pemetaan zona waktu

  • Jika Anda mengatur opsi type-mapping.timestamp-converting.legacy ke false di VVR 8.0.6 atau lebih baru, Anda dapat melakukan konversi semua tipe waktu antara Realtime Compute for Apache Flink dan Hologres.

    Flink

    Hologres

    Deskripsi

    TIMESTAMP

    TIMESTAMP

    Konversi tipe waktu dilakukan tanpa konversi zona waktu. Kami merekomendasikan Anda menggunakan jenis konversi tipe waktu ini untuk membaca data dari atau menulis data ke Hologres.

    TIMESTAMP LTZ

    TIMESTAMPTZ

    TIMESTAMP

    TIMESTAMPTZ

    Konversi tipe waktu dilakukan dengan konversi zona waktu. Untuk menjaga akurasi selama konversi, Anda perlu mengatur zona waktu Flink melalui table.local-time-zone. Untuk informasi lebih lanjut, lihat Bagaimana cara mengonfigurasi parameter kustom untuk deployment running?.

    Sebagai contoh, Anda menentukan 'table.local-time-zone': 'Asia/Shanghai' untuk mengatur zona waktu Realtime Compute for Apache Flink ke zona waktu Shanghai (UTC+8). Setelah Anda menulis data 2022-01-01 01:01:01.123456 dari tipe TIMESTAMP dari Realtime Compute for Apache Flink ke Hologres, data tersebut dikonversi menjadi 2022-01-01 01:01:01:01.123456+8 dari tipe TIMESTAMPTZ.

    TIMESTAMP LTZ

    TIMESTAMP

  • Di VVR 8.0.6 atau lebih baru dengan pengaturan type-mapping.timestamp-converting.legacy=true, atau di VVR 8.0.5 atau lebih lama, deviasi data mungkin terjadi selama konversi tipe waktu, kecuali untuk konversi tipe TIMESTAMP.

    Flink

    Hologres

    Catatan

    TIMESTAMP

    TIMESTAMP

    Konversi tipe waktu dilakukan tanpa konversi zona waktu. Kami merekomendasikan Anda menggunakan jenis konversi tipe waktu ini untuk membaca data dari atau menulis data ke Hologres.

    TIMESTAMP LTZ

    TIMESTAMPTZ

    Data tipe TIMESTAMP LTZ dan TIMESTAMPTZ dinyatakan sebagai waktu tanpa zona waktu saat Realtime Compute for Apache Flink membaca data dari atau menulis data ke Hologres. Ini dapat menyebabkan deviasi data.

    Sebagai contoh, jika data tipe TIMESTAMP_LTZ dalam Realtime Compute for Apache Flink adalah 2024-03-19T04:00:00Z, waktu tanpa zona waktu di Shanghai (UTC+8) adalah 2024-03-19T12:00:00. Namun, ketika data ditulis ke Hologres, 2024-03-19T04:00:00 digunakan sebagai waktu tanpa zona waktu dan dikonversi menjadi 2024-03-19T04:00:00+08 dari tipe TIMESTAMPTZ dalam Hologres. Ini menyebabkan deviasi data selama 8 jam.

    TIMESTAMP

    TIMESTAMPTZ

    Konversi zona waktu dilakukan berdasarkan zona waktu JVM dalam lingkungan runtime alih-alih zona waktu Realtime Compute for Apache Flink. Ini berbeda dari konversi zona waktu dalam Realtime Compute for Apache Flink. Jika zona waktu Realtime Compute for Apache Flink berbeda dari zona waktu JVM, deviasi data mungkin terjadi. Kami merekomendasikan agar Anda membaca data dari dan menulis data ke Hologres berdasarkan zona waktu Realtime Compute for Apache Flink.

    TIMESTAMP LTZ

    TIMESTAMP