Sumber data ClickHouse menyediakan saluran dua arah untuk membaca dari dan menulis ke ClickHouse. Topik ini menjelaskan kemampuan sinkronisasi data yang didukung oleh DataWorks untuk ClickHouse.
Versi yang didukung
Tabel berikut menjelaskan kompatibilitas antara versi Alibaba Cloud ClickHouse dan versi driver JDBC.
Versi driver JDBC | Versi Alibaba Cloud ClickHouse |
0.2.4 | 20.8, 21.8 |
0.4.0, 0.4.2 | 22.8, 23.8 |
Batasan
Sumber data ClickHouse hanya mendukung operasi baca dan tulis offline. Batasan berikut berlaku:
Anda dapat menggunakan kelompok sumber daya serverless (disarankan) dan kelompok sumber daya eksklusif untuk Data Integration.
Anda dapat menghubungkan ke ClickHouse menggunakan JDBC dan hanya membaca data melalui pernyataan JDBC.
Anda dapat memilih dan mengatur ulang kolom serta menentukan kolom yang akan digunakan.
Untuk menghindari beban berlebih pada ClickHouse, batasi throughput sistem (TPS) maksimal hingga 1.000 saat ClickHouse Writer menggunakan mode INSERT.
Tipe data yang didukung
Tipe data umum Alibaba Cloud ClickHouse didukung. Untuk daftar lengkap tipe data Alibaba Cloud ClickHouse, lihat Tipe data. Tipe data lain yang dijelaskan dalam dokumentasi open source ClickHouse tidak didukung. Untuk daftar lengkap tipe data open source ClickHouse, lihat ClickHouse Doc.
Tipe data | ClickHouse Reader | ClickHouse Writer |
Int8 | Support | Support |
Int16 | Support | Supported |
Int32 | Supported | Support |
Int64 | Support | Supported |
UInt8 | Support | Supported |
UInt16 | Supported | Support |
UInt32 | Support | Support |
UInt64 | Support | Support |
Float32 | Supported | Support |
Float64 | Support | Support |
Decimal | Support | Support |
String | Support | Support |
FixedString | Support | Support |
Date | Supported | Support |
DateTime | Support | Support |
DateTime64 | Support | Support |
Boolean | Support Catatan ClickHouse tidak memiliki tipe Boolean khusus. Gunakan UInt8 atau Int8 sebagai gantinya. | Support |
Array | Partially supported. Hanya didukung ketika elemen array berupa bilangan bulat, bilangan titik mengambang, string, atau DateTime64 dengan presisi milidetik. | Supported |
Tuple | Supported | Supported |
Domain(IPv4,IPv6) | Supported | Support |
Enum8 | Supported | Support |
Enum16 | Support | Support |
Nullable | Support | Support |
Nested | Partially supported. Tipe data Nested mendukung bilangan bulat, bilangan titik mengambang, string, dan nilai DateTime64 dengan presisi milidetik. | Support |
Tambahkan sumber data
Sebelum mengembangkan task sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk di Manajemen Sumber Data. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.
Pengembangan task sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi task sinkronisasi, lihat panduan konfigurasi berikut.
Konfigurasikan task sinkronisasi offline satu tabel
Untuk informasi lebih lanjut tentang prosedurnya, lihat Konfigurasikan task di Antarmuka tanpa kode dan Konfigurasikan task di editor kode.
Untuk informasi lebih lanjut tentang semua parameter dan contoh skrip dalam mode editor kode, lihat Lampiran: Demo skrip dan deskripsi parameter.
Konfigurasikan sinkronisasi baca offline seluruh database
Untuk informasi lebih lanjut tentang prosedurnya, lihat Konfigurasikan task sinkronisasi database penuh secara real-time.
Lampiran: Demo skrip dan deskripsi parameter
Konfigurasikan task sinkronisasi batch menggunakan editor kode
Jika ingin mengonfigurasi task sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai dengan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasikan task di editor kode. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat mengonfigurasi task sinkronisasi batch menggunakan editor kode.
Demo skrip Reader
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "clickhouse", // Nama plug-in.
"parameter": {
"fetchSize":1024,// Jumlah catatan yang diambil per batch dari server database.
"datasource": "example",
"column": [ // Nama kolom.
"id",
"name"
],
"where": "", // Kondisi filter.
"splitPk": "", // Kunci shard.
"table": "" // Nama tabel.
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "clickhouse",
"parameter": {
"postSql": [
"update @table set db_modify_time = now() where db_id = 1"
],
"datasource": "example", // Sumber data.
"batchByteSize": "67108864",
"column": [
"id",
"name"
],
"writeMode": "insert",
"encoding": "UTF-8",
"batchSize": 1024,
"table": "ClickHouse_table",
"preSql": [
"delete from @table where db_id = -1"
]
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"executeMode": null,
"errorLimit": {
"record": "0" // Jumlah maksimum catatan error yang diizinkan selama sinkronisasi.
},
"speed": {
"throttle":true,// Saat throttle bernilai false, mbps diabaikan (tanpa pembatasan kecepatan). Saat throttle bernilai true, pembatasan kecepatan diaktifkan.
"concurrent":1 // Konkurensi pekerjaan.
"mbps":"12",// Laju pembatasan kecepatan. 1 mbps = 1 MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Parameter skrip Reader
Parameter | Deskripsi | Wajib | Nilai default |
datasource | Nama sumber data. Dalam mode skrip, Anda dapat menambahkan sumber data. Nilainya harus persis sama dengan nama sumber data yang ditambahkan. | Ya | Tidak ada |
table | Tabel yang akan disinkronkan, dijelaskan dalam format JSON. Catatan Parameter table harus disertakan dalam blok konfigurasi connection. | Ya | Tidak ada |
fetchSize | Jumlah catatan yang diambil per batch dari server database. Nilai ini menentukan seberapa sering sistem sinkronisasi berkomunikasi dengan server dan memengaruhi kinerja ekstraksi. Catatan Nilai fetchSize yang terlalu besar dapat menyebabkan error kehabisan memori (OOM). Tingkatkan nilai ini secara bertahap berdasarkan beban ClickHouse. | Tidak | 1.024 |
column | Kolom yang akan dibaca dari ClickHouse. Pisahkan nama kolom dengan koma. Contoh: Catatan Parameter column harus ditentukan dan tidak boleh kosong. | Ya | Tidak ada |
jdbcUrl | URL koneksi JDBC untuk database sumber. jdbcUrl harus disertakan dalam blok konfigurasi connection.
| Ya | Tidak ada |
username | Username untuk sumber data. | Ya | Tidak ada |
password | Password untuk username yang ditentukan. | Ya | Tidak ada |
splitPk | Saat mengekstraksi data dari ClickHouse, menentukan splitPk berarti Anda ingin melakukan sharding data menggunakan bidang yang diwakili oleh splitPk. Ini memungkinkan task sinkronisasi konkuren dan meningkatkan efisiensi. Catatan Saat splitPk dikonfigurasi, fetchSize menjadi wajib. | Tidak | Tidak ada |
where | Kondisi filter. Dalam praktiknya, Anda sering hanya menyinkronkan data hari ini dengan mengatur where menjadi Kondisi where memungkinkan sinkronisasi inkremental yang efektif. Jika Anda tidak menentukan pernyataan where, termasuk tidak memberikan kunci atau nilai untuk where, maka sinkronisasi data penuh akan dilakukan. | Tidak | Tidak ada |
Demo skrip Writer
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"clickhouse",// Nama plug-in.
"parameter":{
"username": "",
"password": "",
"column": [// Bidang.
"id",
"name"
],
"connection": [
{
"table": [// Nama tabel.
"ClickHouse_table"
],
"jdbcUrl": "jdbc:clickhouse://ip:port/database"
}
],
"preSql": [ // Pernyataan SQL yang dieksekusi sebelum task sinkronisasi dijalankan.
"TRUNCATETABLEIFEXISTStablename"
],
"postSql": [// Pernyataan SQL yang dieksekusi setelah task sinkronisasi dijalankan.
"ALTERTABLEtablenameUPDATEcol1=1WHEREcol2=2"
],
"batchSize": "1024",
"batchByteSize": "67108864",
"writeMode": "insert"
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error.
},
"speed":{
"throttle":true,// Saat throttle bernilai false, mbps diabaikan (tanpa pembatasan kecepatan). Saat throttle bernilai true, pembatasan kecepatan diaktifkan.
"concurrent":1, // Konkurensi pekerjaan.
"mbps":"12"// Laju pembatasan kecepatan. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip Writer
Parameter | Deskripsi | Wajib | Nilai default |
jdbcUrl | URL koneksi JDBC untuk database tujuan. jdbcUrl harus disertakan dalam blok konfigurasi connection.
| Ya | Tidak ada |
username | Username untuk sumber data. | Ya | Tidak ada |
password | Password untuk username yang ditentukan. | Ya | Tidak ada |
table | Nama tabel tujuan, dijelaskan sebagai array JSON. Catatan Parameter table harus disertakan dalam blok konfigurasi connection. | Ya | Tidak ada |
column | Bidang dalam tabel tujuan tempat menulis data. Pisahkan nama bidang dengan koma. Contoh: Catatan Parameter column harus ditentukan dan tidak boleh kosong. | Ya | Tidak ada |
preSql | Pernyataan SQL yang dieksekusi sebelum menulis data ke tabel tujuan. | Tidak | Tidak ada |
postSql | Pernyataan SQL yang dieksekusi setelah menulis data ke tabel tujuan. | Tidak | Tidak ada |
batchSize | Jumlah catatan yang dikirimkan per batch. Nilai yang tepat sangat mengurangi interaksi jaringan antara sistem sinkronisasi dan ClickHouse serta meningkatkan throughput keseluruhan. Nilai yang terlalu besar dapat menyebabkan error kehabisan memori (OOM). | Tidak | 1.024 |