Sony LIV 把串流分析搬上 ClickHouse Cloud,即時處理數十億筆播放事件
ClickHouse · 2026-08-18
原本的問題
Sony LIV 的原有分析架構把 Elasticsearch、BigQuery 與多套批次管線併在一起,用來處理來自用戶端 SDK、CDN 與廣告系統的遙測資料。這套組合是為批次分析設計,面對每天數十億筆事件與板球等大型賽事的流量尖峰時,查詢常常拖到數十秒甚至數分鐘。營運與 SRE 團隊在直播事件期間難以即時掌握播放品質(QoE)與 CDN 表現,臨時查詢(ad-hoc query)在尖峰時段尤其昂貴且緩慢。
採用的方法
新架構把攝取層改為 Amazon Kinesis 搭配 ClickPipes 將資料即時寫入 ClickHouse Cloud 的分析叢集,取代原本分散的遙測儲存。單一平台同時支援播放 QoE 分析、CDN 效能分析、營運儀表板、點擊流分析與廣告事件分析等多種用途,讓 SRE 團隊在事件排查時只需查一套系統。這個統一管線也讓資料團隊得以移除原本並行維運的多套 pipeline。
實際效果
導入後查詢延遲從原本的數十秒到數分鐘,降到次秒到個位數秒等級,直播期間的營運回應速度明顯改善。文章指出儲存成本結構相較舊系統也有實質改善,團隊得以即時看到播放失敗、緩衝尖峰與區域性劣化等訊號,而不需等待批次報表產出。原文未揭露具體叢集規模、副本數或確切成本數字。
原始來源:ClickHouse Blog
PostgreSQL 19 監控功能一覽:MultiXact 統計、WAL 位元組計數與鎖等待日誌預設開啟
ClickHouse · 2026-08-18
核心改動
PostgreSQL 19 新增 pg_get_multixact_stats() 函式,回傳 num_mxids、num_members、members_size、oldest_multixact 等欄位,讓 DBA 首次能直接觀察 multixact 使用量而不必推算。pg_stat_wal 新增 wal_fpi_bytes 計數器,EXPLAIN (ANALYZE, WAL) 也同步輸出這個欄位,方便判斷 full-page image 對 WAL 量的實際貢獻,該計數器由 Shinya Kato 提交的 patch 實作。
WaitForWalWrite/WaitForWalFlush(後者擴大到 standby,先前僅限 primary)WaitForWalReplay:等待 WAL 重播完成CopyFromRead/CopyToWrite:COPY 對檔案或管線的讀寫等待
這些新等待事件都會出現在 pg_stat_activity 中。設定面也有變動:log_lock_waits 預設由關閉改為開啟(commit 2aac62be8,作者 Laurenz Albe),log_min_messages 支援以逗號分隔的 process_type:level 組合分別設定,並新增 log_autoanalyze_min_duration 參數。
影響範圍
交易 ID 回捲警告門檻從 4000 萬提高到 1 億,減少誤報但也代表既有告警腳本需要重新校準門檻。log_lock_waits 預設開啟會讓升級後的 log 量增加,監控與日誌收集管線需要評估額外負載。pg_stat_lock、pg_stat_recovery、pg_stat_autovacuum_scores 三個新系統視圖在文中被列為後續會再深入介紹的項目,尚未提供欄位細節。
原始來源:ClickHouse Blog
DuckDB 新增四個 JSON 修補函式,直接在 yyjson 樹上做 diff 與合併
DuckDB Engineering Blog · 2026-08-18
核心改動
DuckDB 2.0 針對資料管線中常見的 JSON 對帳問題,新增四個純量函式:json_merge_patch_diff(計算 RFC 7396 merge patch 的反向差異)、json_deep_merge(採 skip-on-null 語意,null 代表保留原值而非刪除)、json_normalize(遞迴排序物件鍵值以產生正規化形式,供雜湊比對使用)與 json_strip_nulls(遞迴移除 null 鍵值)。這些函式解決了多來源資料鍵值順序不一致、partial update 中 null 語意模糊、以及 CDC payload 只有少數欄位變動卻要整包比對的問題。
-- 找出兩個 JSON 版本間的差異,回傳可套用的 merge patch
SELECT json_merge_patch_diff(old_doc, new_doc) FROM cdc_events;
-- 以 skip-on-null 語意套用 patch,null 不會清空既有欄位
SELECT json_deep_merge(base_doc, patch_doc) FROM records;實作上這些函式直接在 yyjson 的 mutable tree 上原地操作,而非走序列化/反序列化流程:用 yyjson_equals 做結構相等比較,用 yyjson_mut_obj_iter_remove 在疊代過程中安全刪除鍵值,json_normalize 則是逐物件排序而非全域排序。PR #23786 提到後續還會加入 json_set、json_remove、json_insert、json_replace 等編輯原語,程式碼位於 extension/json。
影響範圍
官方在 50 萬筆 CDC 事件的基準測試中,這批向量化函式比等效的 Python 實作快上 10.8 倍到 123.4 倍,差異依函式邏輯複雜度而定。對需要在資料庫內完成 JSON 對帳、去重或雜湊的管線來說,這代表可以省去把資料搬到應用層處理再寫回的往返成本,同時讓 CDC 差異計算與正規化直接下推到 SQL 層執行。