Fountain 砍三層資料管線,改用 ClickPipes CDC 直灌 ClickHouse
ClickHouse Blog · 2026-09-22
原本的問題
Fountain 專做高流量的第一線招募,累計處理超過九千一百萬名應徵者、促成一千四百萬次雇用,客戶橫跨七十五個以上國家。舊架構把十三個 PostgreSQL 資料庫與四個 MongoDB 實例,透過第三方複寫服務送進 S3(Iceberg/Parquet 格式),再用 S3 table function 灌進 BigQuery 與 ClickHouse,整條管線每三小時才刷新一次。三小時的批次延遲對招募決策是致命傷,文中直言應徵者的「半衰期是以分鐘計算,不是以小時計算」。
這條管線還有另外三個病灶。成本會疊加:同一份資料要付複寫、S3 儲存、倉儲寫入、分析運算四筆帳單;架構上,三家供應商各自的 schema 在交界處持續飄移;併發量體上,面對數千名同時上線的使用者,要做到次秒級查詢「根本不可能」,部分表的列數已超過一百億筆,且在交接窗口呈指數成長。
採用的方法
Fountain 把整條管線收斂成「以 ClickPipes 為核心,其餘都疊在上面」,直接砍掉複寫商與 S3 中繼層。新架構的核心組件包括:
- ClickPipes 受管 CDC:直接從十一個 Postgres 部署與四個 MongoDB 資料庫串流進 ClickHouse Cloud
- SharedReplacingMergeTree:Postgres 資料以主鍵為鍵落地,每列打上 _peerdb_synced_at 與 _peerdb_is_deleted 中繼欄位
- 原生 JSON 欄位:MongoDB 文件整份存入,不用先轉字串再解析
- 兩千多個增量物化視圖:CDC 批次一到就自動觸發計算,不再需要 Dagster、Airflow 或 cron
轉換層的模型仍用 dbt 撰寫,但直接建成 ClickHouse 內的物化視圖,資料表引擎以 ReplacingMergeTree 與 MergeTree 為主。針對 Cue 這款要求主管「早上九點零二分看到訊號、九點零五分就要能下決策」的即時招募代理人,查詢層預先把結果算好:用 lagInFrame 視窗函式搭配 ASOF JOIN 抓最近一筆對齊資料,再用 coalesce 調和批次內與已落地資料的差異。
安全模型也重寫過:每個部署各自獨立的服務帳號預設沒有任何權限,搭配依時間戳記版本化的 RBAC 角色控制 SELECT 授權,後端 MCP 依呼叫者設定 session 變數,資料列層級再用 row policy 依租戶鍵過濾。權限判斷完全放在資料庫層,文中強調「LLM 對這套安全模型一無所知」,避免跨客戶資料外洩的風險落在模型身上。
實際效果
| 舊架構 | 新架構 | |
|---|---|---|
| 中繼層 | 第三方複寫服務 → S3(Iceberg/Parquet) | 無中繼層,ClickPipes 直接串流 |
| 倉儲目的地 | BigQuery + ClickHouse(S3 table function) | 只剩 ClickHouse Cloud 一個目的地 |
| 更新頻率 | 3 小時批次 | 2 分鐘內,多數為次秒級 |
| 轉換排程 | 需要 Dagster/Airflow/cron | 2,000+ 增量物化視圖自動觸發 |
遷移後最大的變化是延遲:三小時的批次刷新變成兩分鐘以內完成,其中多數查詢是次秒級回應。整體成本比舊架構下降 66%,等於砍掉四筆帳單裡的大半支出。目前 CDC 每天處理 1,550 張表、共 84.8 億列,壓縮後約 953 GiB;十五個部署加總的分析資料則來到 103 億列。
物化視圖也帶來額外的記憶體壓縮效果:一張存有 8.38 億列的過渡期表,記憶體用量從 778 MiB 降到 153 MiB,降幅達八成;同類手法在其他表上普遍能省下六成到九成八的記憶體。把轉換邏輯搬進資料庫本身,而非依賴外部 ETL,同時省下延遲與硬體成本,這是本案最直接的收穫。
對同樣要撐「高頻寫入+即時查詢」agentic 場景的團隊,這個案例點出幾個具體可抄的做法:
- 用受管 CDC(如 ClickPipes)取代自建複寫加物件儲存中繼層,減少 schema drift 與帳單層數
- 把轉換邏輯用增量物化視圖搬進資料庫,讓計算在寫入當下完成,而不是查詢當下才算
- 用 lagInFrame 搭配 ASOF JOIN,把「對齊最近一筆」的查詢邏輯預先算好
- 多租戶場景把權限判斷放在資料庫層的 row policy,而不是交給呼叫端的 LLM 或應用邏輯
原始來源:ClickHouse Blog — How Fountain rebuilt its data plane on ClickHouse Cloud;延伸閱讀:ClickHouse Docs — Incremental Materialized View