1. 概述
1.1 版本
FineDataLink 版本 | 功能變動 |
---|---|
3.2 | 定時任務中支援讀取 ClickHouse |
3.7 | 定時任務支援寫入 ClickHouse |
4.0.28 | 管道任務支援寫入 ClickHouse |
4.1.6.3 | 資料服務支援 ClickHouse |
4.1.13.3 | 資料開發-實時任務寫入支援 ClickHouse |
4.2.1.4 | 資料開發-實時任務中的 DB 匯出功能支援新增流的無主鍵插入 |
4.2.8.4 | 適配高版本驅動 |
1.2 簡介
ClickHouse 是面向列的資料庫管理系統(DBMS),用於對查詢進行聯機分析處理(OLAP)。
FineDataLink 支援連結 ClickHouse,進行定時任務讀寫、管道任務寫入、作為資料服務資料發佈源、實時任務寫入。
注:ClickHouse 資料庫的引擎需要是 Atomic 引擎,才支援寫入時自動建表功能。
2. 準備工作
2.1 前提條件
詳情請參見:前提條件
2.2 版本和驅動
下載驅動,並將其上傳至 FineDataLink,如何上傳可參見:驅動管理 第 2 節。
支援的資料庫版本 | 驅動下載 |
---|---|
20.1 | |
22.6 | clickhouse4j-1.4.4-SNAPSHOT.jar |
Clickhouse 8.5.zip |
2.3 具體連結步驟
建立資料連結步驟請參見:建立並管理資料源
配置資料連結時,驅動需要切換為「自訂」,換為本文 2.2 節的驅動。
3. 使用資料源
3.1 資料開發-定時任務
配置好資料源後即可在「定時任務」中使用資料源,詳情參見:定時任務概述
3.2 資料開發-實時任務
當 DB表匯出選擇 clickhouse:
5.0.0.4 及之後版本,當前任務中存在產生更新流的算子&寫入 clickhouse 時,不支援無主鍵同步;會產生更新流的算子:CDC輸入、分組匯總、資料聯動(多個實時資料源進行聯動)。
選擇去向類型 | 說明 |
---|---|
已存在表 | 表類型為除 collapsingMergeTree 外的其他表引擎
|
表引擎為 collapsingMergeTree 時 欄位映射:
寫入方式:
| |
自動建表 | 僅支援 collapsingMergeTree 的邏輯 欄位映射
寫入方式:
|
1)當匯出到除 collapsingMergeTree 外的其他表引擎時:
將插入事件的資料直接插入到目標表。
遇到刪除事件、更新事件時則報錯。
2)當匯出到 collapsingMergeTree 時,映射說明詳情參見本文 3.3 節內容。
3)目標端使用已存在表時,表中需要有_fdl_sign欄位來標記刪除情況。
3.3 資料管道
配置好資料源後即可在「資料管道」中將使用資料源,詳情參見:資料管道概述
clickhouse 作為寫入端時欄位映射說明
當向目標表寫入資料時,按照 CollapsingMergeTree 表引擎進行寫入。
選擇去向類型 | 說明 |
---|---|
自動建表 | 使用 CollapsingMergeTree 表引擎,將邏輯主鍵設定為 order by 欄位 注:建立表時,來源表欄位不能出現 sign ,會和標識增刪改的 sign 欄位重名導致同步失敗。 |
已存在表 | 當選擇已存在表時,只能選擇由 CollapsingMergeTree 表引擎建立的表,並且要指定 order by 欄位,在邏輯主鍵一欄中進行展示。 注:如果能獲取表的 order by 欄位,則支援設定已存在表為目標表,否則不支援設定為目標表。 |
clickhouse 作為目標端的寫入邏輯為:
對於插入的資料,直接 insert,並標記其 sign 為 1
對於刪除的資料,直接insert一條,邏輯主鍵的資料,並標記其sign為-1 如果是邏輯刪除,insert 更新資料、sign 為 1 的資料即可
對於更新的資料, insert 更新資料、sign 為 1 的資料即可。
注:因為 CollapsingMergeTree 表的合併不定時,所以使用實時同步的表時,需要在使用前手動觸發一次合併,或者在查詢 SQL 使用集合方式,計算時去除掉重複資料的影響。
方式一:直接在 SQL 中使用集合方式,集合範例如下所示:
方式二:在使用前觸發一次合併,「OPTIMIZE TABLE test.ods_real_time_order FINAL」
方式三:直接在查詢的 SQL 。select 表名後加 final ,比如 SELECT * FROM gbn_onl_mix.union_order_onl_all_test final WHERE dt = '2023-05-28'。
3.4 資料服務
配置好資料源後即可在「資料服務」中將使用資料源,詳情參見:資料服務概述