ClickHouse veri kaynağı, ClickHouse ile çift yönlü bir kanal üzerinden veri okumanıza ve yazmanıza olanak tanır. Bu konuda, DataWorks tarafından desteklenen ClickHouse veri senkronizasyonu yetenekleri açıklanmaktadır.
Desteklenen sürümler
Aşağıdaki Alibaba Cloud ClickHouse sürümleri, listelenen JDBC sürücü sürümleriyle uyumludur:
|
|
|
|
|
|
|
|
|
Sınırlamalar
ClickHouse veri kaynağı yalnızca toplu iş okuma ve yazma işlemlerini destekler. Ayrıntılar aşağıda verilmiştir:
Bir Serverless kaynak grubu kullanabilirsiniz.
ClickHouse'a JDBC üzerinden bağlanılabilir ancak veriler yalnızca JDBC Statement aracılığıyla okunabilir.
Sütunları belirterek bazı sütunları seçebilir ve sütun sırasını yeniden düzenleyebilirsiniz.
ClickHouse yükünü sınırlamak için, ClickHouse Writer INSERT modunu kullandığında sistem aktarım hızının saniyede en fazla 1.000 işlem (TPS) ile sınırlandırılmasını öneririz.
ClickHouse ile tek tablo toplu iş senkronizasyonu yalnızca Alibaba Cloud ClickHouse için desteklenir.
Desteklenen alan türleri
Aşağıdaki yaygın Alibaba Cloud ClickHouse veri türleri desteklenmektedir. Alibaba Cloud ClickHouse türlerinin tam listesi için bkz. Veri türleri. Açık kaynaklı ClickHouse veri türü kümesindeki diğer türler desteklenmemektedir. Açık kaynaklı türlerin tam listesi için bkz. ClickHouse belgeleri.
Veri türü | ClickHouse Reader | ClickHouse Writer |
Int8 | Desteklenir | Desteklenir |
Int16 | Desteklenir | Desteklenir |
Int32 | Desteklenir | Desteklenir |
Int64 | Desteklenir | Desteklenir |
UInt8 | Desteklenir | Desteklenir |
UInt16 | Desteklenir | Desteklenir |
UInt32 | Desteklenir | Desteklenir |
UInt64 | Desteklenir | Desteklenir |
Float32 | Desteklenir | Desteklenir |
Float64 | Desteklenir | Desteklenir |
Decimal | Desteklenir | Desteklenir |
String | Desteklenir | Desteklenir |
FixedString | Desteklenir | Desteklenir |
Date | Desteklenir | Desteklenir |
DateTime | Desteklenir | Desteklenir |
DateTime64 | Desteklenir | Desteklenir |
Boolean | Desteklenir Not ClickHouse'ta ayrı bir Boolean türü bulunmaz. UInt8 veya Int8 kullanın. | Desteklenir |
Array | Kısmen desteklenir. Dizi öğeleri tamsayı, kayan noktalı sayı, dize veya milisaniye hassasiyetine sahip DateTime64 değerleri olduğunda desteklenir. | Desteklenir |
Tuple | Desteklenir | Desteklenir |
Domain(IPv4,IPv6) | Desteklenir | Desteklenir |
Enum8 | Desteklenir | Desteklenir |
Enum16 | Desteklenir | Desteklenir |
Nullable | Desteklenir | Desteklenir |
Nested | Kısmen desteklenir. İç içe geçmiş veri türleri tamsayı, kayan noktalı sayı, dize veya milisaniye hassasiyetine sahip DateTime64 değerleri olduğunda iç içe geçmiş değerler desteklenir. | Desteklenir |
Veri kaynağı ekleme
DataWorks'te bir senkronizasyon görevi geliştirmeden önce, Veri kaynağı yapılandırması konusundaki talimatları izleyerek gerekli veri kaynağını DataWorks'e eklemeniz gerekir. Bir veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolunda parametre açıklamalarını görüntüleyebilirsiniz.
Veri senkronizasyonu görevleri geliştirme
Bir senkronizasyon görevini yapılandırmaya ilişkin giriş noktası ve yordam hakkında bilgi için aşağıdaki yapılandırma kılavuzlarına bakın.
Tek tablo toplu iş senkronizasyonu görevini yapılandırma
Yordam için bkz. Kodsuz UI yapılandırması ve Betik modu yapılandırması.
Tüm betik modu parametreleri ve örnek betikler için bkz. Ek: Örnek betikler ve parametreler.
Tam veritabanı toplu iş okuma senkronizasyonu görevini yapılandırma
Yordam için bkz. Toplu iş veritabanı senkronizasyonu yapılandırması.
Ek: Örnek betikler ve parametreler
Kod düzenleyici kullanarak toplu iş senkronizasyonu görevini yapılandırma
Bir toplu iş senkronizasyonu görevini kod düzenleyici kullanarak yapılandırmak istiyorsanız, betikteki ilgili parametreleri birleşik betik biçimi gereksinimlerine göre yapılandırmanız gerekir. Daha fazla bilgi için bkz. Betik modu yapılandırması. Aşağıdaki bilgiler, kod düzenleyici kullanarak bir toplu iş senkronizasyonu görevini yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklamaktadır.
Reader örnek betiği
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "clickhouse", //Plug-in name. "parameter": { "fetchSize":1024,//Number of records fetched in each batch by the plug-in and database server. "datasource": "example", "column": [ //Column names. "id", "name" ], "where": "", //Filter condition. "splitPk": "", //Split key. "table": "" //Table name. }, "name": "Reader", "category": "reader" }, { "stepType": "clickhouse", "parameter": { "postSql": [ "update @table set db_modify_time = now() where db_id = 1" ], "datasource": "example", //Data source. "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" //Maximum number of error records during synchronization. }, "speed": { "throttle":true,//When throttle is false, mbps is ignored and throughput is unlimited; when true, throughput is limited. "concurrent":1 //Job concurrency. "mbps":"12",//Rate limit. Here, 1 mbps = 1 MB/s. } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
Reader betiği parametreleri
Parametre | Açıklama | Gerekli | Varsayılan değer |
datasource | Veri kaynağı adı. Betik modunda bir veri kaynağı ekleyebilirsiniz. Değer, eklenen veri kaynağının adıyla eşleşmelidir. | Evet | Yok |
table | JSON olarak tanımlanan senkronize edilecek tablo. Not table, connection yapılandırma birimine dahil edilmelidir. | Evet | Yok |
fetchSize | Eklenti ve veritabanı sunucusu tarafından her toplu işte alınan kayıt sayısı. Bu, Data Integration ile sunucu arasındaki ağ etkileşimlerinin sayısını kontrol eder ve veri çıkarma performansını artırabilir. Not Aşırı büyük bir fetchSize değeri, senkronizasyon sürecinde bellek yetersizliği (OOM) hatasına neden olabilir. ClickHouse yüküne bağlı olarak bu değeri kademeli olarak artırın. | Hayır | 1.024 |
column | Virgülle ayrılmış okunacak ClickHouse alanları. Örnek: Not column ayarı gereklidir ve boş bırakılamaz. | Evet | Yok |
jdbcUrl | Kaynak veritabanı için JDBC bağlantı bilgileri. jdbcUrl ayarı, connection yapılandırma biriminde yer alır.
| Evet | Yok |
username | Veri kaynağı kullanıcı adı. | Evet | Yok |
password | Belirtilen veri kaynağı kullanıcısının parolası. | Evet | Yok |
splitPk | ClickHouse'tan veri çıkarırken splitPk belirtmek, verilerin splitPk tarafından temsil edilen alana göre bölünmesini istediğiniz anlamına gelir. Senkronizasyon daha sonra verimliliği artırmak için eşzamanlı görevler başlatır. Not splitPk yapılandırıldığında fetchSize gereklidir. | Hayır | Yok |
where | Bir filtre koşulu. Pratikte, geçerli günün verilerini senkronize etmek isteyebilirsiniz. where koşulunu where koşulu artımlı senkronizasyonu etkinleştirir. where deyimi yoksa (yani where anahtarı veya değeri eksikse) tüm veriler senkronize edilir. | Hayır | Yok |
Writer örnek betiği
{ "type":"job", "version":"2.0",//Version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"clickhouse",//Plug-in name. "parameter":{ "username": "", "password": "", "column": [//Fields. "id", "name" ], "connection": [ { "table": [//Table name. "ClickHouse_table" ], "jdbcUrl": "jdbc:clickhouse://ip:port/database" } ], "preSql": [ //SQL statements to run before the synchronization task. "TRUNCATETABLEIFEXISTStablename" ], "postSql": [//SQL statements to run after the synchronization task. "ALTERTABLEtablenameUPDATEcol1=1WHEREcol2=2" ], "batchSize": "1024", "batchByteSize": "67108864", "writeMode": "insert" }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"//Number of error records. }, "speed":{ "throttle":true,//When throttle is false, mbps is ignored and throughput is unlimited; when true, throughput is limited. "concurrent":1, //Job concurrency. "mbps":"12"//Rate limit. Here, 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Writer betiği parametreleri
Parametre | Açıklama | Gerekli | Varsayılan değer |
jdbcUrl | Hedef veritabanı için JDBC bağlantı bilgileri. jdbcUrl, connection yapılandırma biriminde yer alır.
| Evet | Yok |
username | Veri kaynağı kullanıcı adı. | Evet | Yok |
password | Belirtilen veri kaynağı kullanıcısının parolası. | Evet | Yok |
table | JSON dizisi olarak tanımlanan yazılacak tablonun adı. Not table, connection yapılandırma birimine dahil edilmelidir. | Evet | Yok |
column | Virgülle ayrılmış yazılacak hedef tablo alanları. Örnek: Not column ayarı gereklidir ve boş bırakılamaz. | Evet | Yok |
preSql | Veriler hedef tabloya yazılmadan önce çalıştırılacak standart SQL deyimleri. | Hayır | Yok |
postSql | Veriler hedef tabloya yazıldıktan sonra çalıştırılacak standart SQL deyimleri. | Hayır | Yok |
batchSize | Tek bir toplu işte gönderilen kayıt sayısı. Bu, senkronizasyon sistemi ile ClickHouse arasındaki ağ etkileşimlerini büyük ölçüde azaltır ve aktarım hızını artırır. Aşırı büyük bir değer, senkronizasyon sürecinde bellek yetersizliği (OOM) hatasına neden olabilir. | Hayır | 1.024 |