平均性能提升70%,蓋雅工場基于騰訊云數據倉庫TCHouse-D構建實時報表平臺

點擊藍字? 關注我們

本文共計3569字 預計閱讀時長11分鐘

導語

騰訊云數據倉庫TCHouse-D助力蓋雅工場構建了架構簡潔、查詢高效的報表平臺。目前該平臺已經支撐了蓋雅工場上千個租戶的實時報表需求,報表查詢時效性整體可達亞秒,相較原架構,查詢耗時平均降低70%,整體開發效率提升50% ,資源成本降低20%,大幅實現了降本提效,深得各業務及數據部門的認可。

作者:蓋雅工場技術中臺

公司簡介

  • 蓋雅工場成立于2009年,是一家以「科技讓勞動力更高效」為使命的中國科技企業,致力于為全球企業提供智能化勞動力管理云服務。通過覆蓋企業人效管理全生命周期的咨詢+SaaS軟件+運營服務解決方案,助力企業實現人效提升與數字化轉型。

  • 目前,蓋雅工場的客戶分布在全球32個國家與地區,每天為全球1,800余家客戶的600余萬員工提供蓋雅的服務。

  • 蓋雅工場專注于解決企業在勞動用工方面的四大問題:「需要多少人」、「實際多少人」、「干得怎么樣」、「怎樣找到人」,利用科技手段預測勞動力需求并排班,優化調度勞動力安排并補充靈活勞動力,管理多樣化勞動力隊伍的出勤與時間,分析并提升勞動力效率與銷售效能,同時連接勞動力市場中的企業與一線員工,實現降本增效、滿意且合規。

業務介紹及早期痛點


聚合報表服務是蓋雅工場最核心的數據服務,為上千SaaS租戶提供實時報表,覆蓋勞動力人員分布、勞動力流動、離職、考勤、薪酬和審批流等關鍵業務環節。隨著蓋雅工場全球化業務的推進,聚合報表服務積累了海量數據,上游數據來自近百個MySQL實例,原始庫表數量超5萬張,然后需要根據不同場景進行實時分析,向B端用戶提供人員分布、流動離職、考勤、薪酬和審批流等實時報表,業務報表數量達到數千張

1. 早期架構

早期使用自建的 TiDB 和 StarRocks 集群進行支持上述需求。

鏈路1:自建 Data Migration -> TiDB

鏈路2:自研 Flink CDC +Kafka -> StarRocks

2. 問題和挑戰

隨著蓋雅工場全球化業務的推進,聚合報表服務積累的數據規模越來越大,查詢并發也越來越高,為應對不斷增長的查詢分析訴求,蓋雅自建了多套集群,運維成本和資源成本不斷提升。但即便這樣,在業務高峰期租戶集中查詢時,還是存在報表服務訪問慢等問題,導致客戶體驗嚴重受損。

1) 為了應對實時計算任務,自建了多套 Flink + TiDB/StarRocks 集群,整體計算和分析鏈路長、維護難度大,且集群異常無原廠支持;

2) 性能不足:月底和月初會帶來周期性的業務高峰,TiDB 數據庫查詢嚴重性能不足,且集群人工擴容流程冗長、擴容過程持續數小時、期間業務讀寫均受到影響;

3) 開發效率低+缺乏資源隔離:歷史 SQL 代碼執行效率低,多張表聯合查詢并通過 SQL 做權限管控,一個租戶 SQL 可能占滿 TiDB 集群 CPU;

4) 自研的數據同步服務覆蓋場景有限:TiDB集群部署較早版本陳舊,與業務側數據庫 MySQL 8.0版本無法完全兼容性,數據同步異常頻率較高;自研的 Flink CDC 同步工具覆蓋技術場景有限,需不斷迭代滿足線上場景;

5) 公司 BI 類產品無統一的數據倉庫,搭建了多套數倉庫,數據沒有實現高效共享,存在資源浪費的情況;

選型思路


為降低集群運維成本、提升實時查詢效率,蓋雅決定引入一款新的實時數倉來搭建新的數據平臺,同時希望新的 OLAP 引擎可以具備以下能力:

1)性能強,可以在海量數據場景下實現快速響應;

2)支持高并發查詢,可滿足日常業務的報表分析需求;

3)支持 Join 操作,可滿足不同業務用戶靈活多變的分析需求;

4)具備良好的資源隔離能力,降低不同租戶間的業務影響;

5)統一數倉構建,運維簡單,縮減運維人力的投入和成本的支出,實現降本提效;

6)社區活躍,在使用過程中遇到問題,可迅速得到解決。

綜合以上要求,蓋雅快速定位了Apache Doris ,Apache Doris具備強悍的多表Join查詢能力、高并發能力,完全可以滿足蓋雅日常的業務報表分析需求。除此之外,Apache Doris可以同時支持實時數據服務、交互數據分析和離線數據處理多種場景,并且架構簡單,可有效降低集群運維成本。

同時,蓋雅也了解到騰訊云數據倉庫 TCHouse-D 這款產品。作為一款云上的實時數倉產品,騰訊云數據倉庫TCHouse-D 100%兼容開源Apache Doris,具備企業級的高可用能力,且提供全托管的產品服務,可很方便的進行精細化集群管理、資源快速伸縮、數據備份恢復、異常監控及巡檢定位等操作,同時在業務開發過程中TCHouse-D還會提供專家指導,蓋雅基本無需關注集群運維,即可快速完成業務開發上線

另外在數據同步方面, 騰訊云數據倉庫TCHouse-D無縫集成了騰訊云WeData的數據集成 ,通過白屏化操作即可高效實現業務庫到TCHouse-D的實時數據同步,并支持自動批量建表、字段類型自動映射、高負載情況下自動限流等功能,有效提升遷移效率并保障業務穩定。

新的架構及方案


基于以上優勢,蓋雅最終選擇與騰訊云大數據合作,并采用騰訊云數據倉庫 TCHouse-D + 騰訊云 WeData 來搭建新的實時報表體系,架構如下:

源端 MySQL 數據經過 WeData 的數據集成進行自動數據轉換后,入庫到 TCHouse-D 中進行聚合分析和實時自定義分析。另外為保障數據安全,針對關鍵業務還創建了主備集群進行容災,若主集群發生業務問題,可快速切換至備集群,避免長時間業務影響。

數據流向如下圖所示:

應用實踐


1.庫表設計

  • 考勤業務是蓋雅產品的核心功能,而考勤中的一個核心點是“時間”,因此在初期設計階段,為了更好地發揮騰訊云數據倉庫 TCHouse-D 的性能,蓋雅技術團隊結合專家建議,參考以下實踐進行了庫表設計:

  • Key列選擇:將最常用的查詢條件字段加到 key 列,區分度越大、頻次越高的查詢字段越往前放;

  • 分區設置:基于時間創建Range動態分區,提升查詢性能的同時,可支持分區的生命周期管理;

  • 分桶設置:先對表的數據量進行預估,視情況配置分桶數,保障每個分桶大小保持在 1-10G 之間;

  • 索引設置-盡量命中前綴索引:最常?的查詢字段盡量放在表的最前面,以此命中前綴索引;如果不能,放到分桶字段?;

  • 索引設置:大基數列(5000以上,如身份證號)進行“in”或者“=”查詢時,選擇 BloomFilter 索引;

  • 索引設置:非主鍵列查詢,引入倒排索引進行加速;

  • 副本設置:考慮數據安全,副本數設置為3。

2.表原子替換

在考勤月結期間,考勤員為了獲得員工本考勤周期最準確的考勤結果,通常會發起批量重算員工考勤記錄的操作。由于此場景下業務表無法設定一個增量字段來存儲數據,后端的處理動作是先刪除歷史數據再寫入最新數據(亦即批量全刪全寫),這給 BI 分析師構建員工每日考勤模型帶來了相同困境。早期他們采用全刪全寫,但勢必會存在后端在刪除、前端客戶在查詢的現象,造成無法查看數據的異常。

為解決此場景痛點,數據工程師使用“表原子替換”功能,通過 CREATE TABLE LIKE 語句創建一個相同結構的新表,將新數據導入新表后,即可通過替換操作原子替換舊表,過程中實現數據版本的秒級切換,全程對業務透明。類似的場景,在蓋雅的業務中還有很多。

----- 創建新表(保留原表結構)
CREATE TABLE new_table LIKE old_table; ?----- 導入新數據(全量):
INSERT INTO new_table SELECT ...; ?----- 原子替換(零中斷切換):
ALTER TABLE old_table REPLACE WITH TABLE new_table 
[PROPERTIES("swap" = "true")]

3.數據管理

數據質量的好壞直接決定了數據同步、數據查詢的效率,對后續業務實施尤為重要,所以在數據管理方面,蓋雅技術中臺制定了約束規范:

  • 數據庫/表命名:不支持以數字開頭,中劃線-命名;

  • 數據表主鍵:必須有獨立的主鍵且主鍵列長度需<160(注:特殊場景,如業務表無獨立主鍵而是聯合主鍵,聯合主鍵第一個欄位需存儲經常變化的數據,且聯合主鍵欄位總數<=3,聯合主鍵欄位總長度需<160)

  • 業務表管理:禁止修改字段名稱(包含欄位字母的大小寫互換)

  • 數據存儲:欄位中存儲的數據總長度需<65533字節,如業務庫表中存有圖片base64、html等超文本的數據,此類的數據表無法進行同步

4.數據同步

使用騰訊云 WeData 進行MySQL數據實時同步,同步過程中無需進行SQL/代碼開發,即可自動進行一鍵自動建表、字段類型映射、數據精度對齊、DML過濾、DDL同步等操作,大幅降低了操作成本,且過程中WeData會實時監控TCHouse-D的集群負載情況,進行自動限速,保障集群健康。

5.數據備份與恢復

使用TCHouse-D的備份恢復功能周期性的將數據導入到對象存儲COS中進行備份,避免數據誤刪除或丟失的情況發生。比如當因某些原因導致Flink同步任務失敗、無法從 Checkpoint進行啟動時,可讀取最新的數據進行同步,歷史缺失數據通過外部表進行修復,使得同步任務能夠快速恢復。

6.監控告警

將騰訊云產品(騰訊云數據倉庫TCHouse-D、WeData數據集成)兩類告警接入蓋雅飛書,做到實時預警。

另外對于重要的單表,我們還會通過程序進行比對,如比對業務庫數據和TCHouse-D的數據,來進行數據質量、報表質量稽查告警。

收益總結


蓋雅工場將自建TiDB+StarRocks完全遷移到騰訊云TCHouse-D上,借助其向量化查詢、數據預聚合、豐富的索引等方式實現了查詢性能的巨大提升,通過TCHouse-D的集群彈性伸縮能力實現快速擴縮容,并配合合理業務拆分+Workload Group資源組的方式對集群內租戶進行資源隔離,充分避免不同租戶見的資源搶占。配合WeData數據集成,實現全程自動化同步與智能限流,避免集群過載。

1.性能提升:同配置下TCHouse-D 2.0比TiDB查詢效率平均提升70%

2.彈性伸縮:基于全托管的TCHouse-D+專線實現多云統一數據報表,業務高峰快速水平擴縮容。

3.開發運維降本:統一技術棧,標準SQL開發,開發效率提升50%;無需關注集群運維,運維成本大幅降低;

4.成本降低:通過性能優化和架構整合,TCHouse-D對比TiDB+StarRocks節省20%成本

未來規劃


截至目前,蓋雅95%的數據分析類業務已遷移至騰訊云數據倉庫TCHouse-D,并得到了很好的效果,深得各數據部門、業務部門的認可。未來蓋雅將繼續深度加強同騰訊云大數據團隊的合作,配合產品的不斷更新迭代,進一步提升實時數據處理的能力。近期關注的重點能力包括:

  • 部分列更新:減少不必要的數據寫入和鎖競爭,降低I/O和CPU開銷,實現數據更新和查詢性能的雙重提升;

  • 異步物化視圖:空間換時間,支持分區級數據自動增量刷新,進一步提升復雜查詢報表的性能;

  • 基于CCR的主備容災:通過CCR實現主備集群間的實時同步,降低集群綜合負載,提升主備容災的及時性和易用性;

  • 存算分離:升級至騰訊云數據倉庫 TCHouse-D的存算分離版本,降本的同時,進一步提升資源彈性、和資源隔離能力,更好的應對業務波峰波谷問題,并提升不同租戶間的資源隔離效果。

最后,感謝騰訊云大數據團隊,感謝其對問題的快速響應和積極的技術支持。

END

關注騰訊云大數據╳探索數據的無限可能

?點擊閱讀原文

了解更多產品詳情

分享給認識的人吧

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/85806.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85806.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85806.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

zynq裸機開發:更改系統時間保存文件到SD卡

1、首先勾選文件系統庫 2、之后導出一個SD卡文件寫demo 3、SD卡創建或修改文件時的創建時間和修改時間是通過調用BSP包的diskio.c文件中的get_fattime函數 4、找到這段函數&#xff0c;先把他注釋掉&#xff0c;之后考到導出demo的最后一行&#xff0c;稍作修改&#xff0c…

“荔枝使”的難題怎么破:A*運輸路徑算法編程實踐

原文首發請訪問&#xff1a;https://cloud.tencent.com/developer/article/2533317 荔枝最初被稱為“離支”&#xff0c;亦作“離枝”。 這是一種非常精貴的水果&#xff0c;一旦離開枝頭&#xff0c;色澤、香氣和味道會在短時間內迅速變質。 但它又是非常美味&#xff0c;宋…

python基礎知識,以及7個練習案例

python的用途 搭建網站網絡爬蟲科學計算與大數據分析人工智能與機器學習設計動畫游戲&#xff1a;例如pygame圖形用戶接口開發&#xff1a;模塊與框架&#xff0c;如tkinter python基礎課程包含內容 自動化運維人工智能應用web開發多媒體處理自動化辦公python爬蟲 python是…

Java 編程之命令模式

什么是命令模式 命令模式Command Pattern 是一種行為型設計模式&#xff0c;它把請求封裝成對象&#xff0c;從而將請求的發送者與執行者完全解耦&#xff0c;支持排隊、撤銷、日志記錄等操作。。 模式目標&#xff1a; 解耦命令的發出者&#xff08;Invoker&#xff09;與執…

TCP 三次握手與四次揮手全流程詳解

TCP(Transmission Control Protocol)是一種面向連接的、可靠的、基于字節流的傳輸層協議。為了建立和終止連接,TCP 使用了 三次握手 和 四次揮手 的機制。本文將從原理到狀態變化,詳細解析 TCP 連接的建立與釋放全過程,力求專業、準確。 一、TCP 三次握手(Three-Way Han…

MySQL 慢 SQL 識別與優化

一、識別慢 SQL 1. 啟用慢查詢日志 -- 查看當前慢查詢配置 SHOW VARIABLES LIKE slow_query%; SHOW VARIABLES LIKE long_query_time;-- 開啟慢查詢日志&#xff08;臨時生效&#xff09; SET GLOBAL slow_query_log ON; SET GLOBAL long_query_time 2; -- 設置慢查詢閾值…

墨記APP:水墨風記事,書寫生活詩意

在快節奏的現代生活中&#xff0c;記錄生活的點滴成為了一種獨特的儀式感。無論是日常的瑣事、突發的靈感&#xff0c;還是對未來的規劃&#xff0c;一款好用的記事軟件都能幫助我們更好地整理思緒&#xff0c;留住美好瞬間。墨記APP正是一款兼具美學與實用性的記事軟件&#x…

龍芯7A1000橋片數據手冊解讀(時序)

RTC是電池&#xff0c;理論上一直是有電的&#xff0c;圖示指的是接上220V電之后切換為系統的電。順序是這樣的&#xff1a;接上220V電之后系統的12V供電就有了&#xff0c;12V轉為5VSB&#xff0c;5VSB供給RTC3V&#xff0c;此時RTC3V轉為系統供電而不是電池供電。這里的5VSB指…

無人機氣壓計模塊技術解析

一、運行方式 1. 基礎原理 氣壓計通過測量大氣壓力間接計算高度。無人機飛行中&#xff0c;氣壓隨高度上升而降低&#xff0c;傳感器將壓力信號轉為電信號&#xff0c;經ADC轉換為數字值。 2. 工作流程 數據采集&#xff1a;同步獲取壓力與溫度值。 原始數據處理&…

第十四節:第三部分:IO流:前置知識-什么是方法遞歸以及遞歸的形式、遞歸算法三要素

什么是方法遞歸以及遞歸的形式 遞歸算法三要素 代碼 代碼一&#xff1a;認識一下遞歸的形式 package com.itheima.Recurtion; //目標:認識一下遞歸的形式 public class RecurtionTest1 {public static void main(String[] args) {test2();}//直接方法遞歸public static void…

論文閱讀筆記:Digging Into Self-Supervised Monocular Depth Estimation

論文閱讀筆記&#xff1a;Digging Into Self-Supervised Monocular Depth Estimation 1 背景2 創新點3 方法4 模塊4.1 自監督訓練4.2 優化自監督深度估計4.2.1 每個像素的最小重建損失4.2.2 自動掩碼靜態像素4.2.3 多尺度估計4.2.4 最終的訓練損失 4.3 額外考慮 5 效果 1 背景 …

YAML 數據格式詳解

1. YAML 概念 YAML (YAML Ain’t Markup Language) 是一種人性化的數據序列化格式&#xff1a; 專注于數據而非標記&#xff08;與 XML 不同&#xff09;使用簡潔的語法表示復雜數據結構可讀性高&#xff0c;適合人類編寫和閱讀廣泛應用于配置文件&#xff08;如 Docker Comp…

react擴展

首先補充一下上個章節的一點結尾內容。reducer是一個純函數&#xff0c;純函數指的是當我們在redux里面定義了我們需要共享的對象后&#xff0c;我們是不可以對共享的對象本身進行改變的。我們在獲取更新后的共享數據時&#xff0c;要去重新定義一個新的變量來獲取更新后的共享…

6.獲取圖片灰度與縮放

目錄 一、Halcon 1. 獲取像素坐標以及灰度 2. 拖動縮放 3.圖像縮放的實現方式 二、VS聯合編程 1.獲取像素坐標和灰度 2.拖動縮放 一、Halcon 1. 獲取像素坐標以及灰度 *1. 獲取像素坐標 * 1. get_mposition * 2. halcon窗口事件自帶坐標數據 * *2. 獲取像素灰度 *…

無人機+AI:革新集裝箱箱號識別的智能解決方案

在現代化物流體系中&#xff0c;集裝箱箱號識別是貨物追蹤與管理的核心環節。然而&#xff0c;傳統的人工巡檢或固定攝像頭識別方式存在效率低、覆蓋范圍有限、易受環境干擾等問題&#xff0c;難以滿足日益增長的物流需求。基于無人機與AI技術的集裝箱箱號識別系統&#xff0c;…

一種新的參數高效微調方法-LoRI

論文&#xff1a;LoRI: Reducing Cross-Task Interference in Multi-Task Low-Rank Adaptation LoRA 具體參考 1. 引言與背景&#xff1a;為什么需要 LoRI&#xff1f; 這篇論文提出了一種新的參數高效微調&#xff08;PEFT&#xff09;方法&#xff0c;名為 LoRA with Reduce…

Go網絡編程:基于TCP的網絡服務端與客戶端

Go 語言的 net 包為網絡編程提供了簡潔高效的接口。我們可以使用它快速構建 TCP 網絡服務&#xff0c;如聊天服務器、RPC、微服務通信等。 一、TCP簡介 TCP&#xff08;Transmission Control Protocol&#xff09;是面向連接的、可靠的傳輸協議&#xff0c;通信模型為客戶端-服…

【StarRocks系列】架構、核心概念

目錄 一、架構&#xff1a;分布式 MPP 列式存儲 向量化引擎 二、存儲&#xff1a;高性能列式存儲引擎 三、表設計&#xff1a;三類模型適配不同場景 四、數據寫入&#xff1a;多種方式支持實時與批量 五、數據讀取&#xff1a;極致優化的查詢引擎 總結&#xff1a;Star…

從源碼到生產:Apache 2.4.57 自動化安裝實戰指南(附腳本)

引言&#xff1a;為何選擇源碼安裝 Apache&#xff1f; 在服務器運維場景中&#xff0c;源碼編譯安裝 Apache HTTP Server 是實現精細化配置的重要方式。相比包管理器安裝&#xff0c;源碼安裝可自定義模塊組合、適配特定依賴環境&#xff0c;并精確控制版本。本文將通過自動化…

iOS開發中的安全實踐:如何通過Ipa混淆與加固確保應用安全

隨著移動應用技術的不斷發展&#xff0c;開發者越來越重視應用的安全性&#xff0c;尤其是iOS應用。無論是面對大規模的數據泄露問題&#xff0c;還是在應用上線后避免被逆向破解&#xff0c;開發者們都需要采取一系列技術手段來保護應用。然而&#xff0c;很多開發者在應用開發…