平均性能提升70%,盖雅工场基于腾讯云数据仓库TCHouse-D构建实时报表平台

发布于:2025-06-19 ⋅ 阅读:(19) ⋅ 点赞:(0)

点击蓝字⬆ 关注我们

本文共计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

关注腾讯云大数据╳探索数据的无限可能

⏬点击阅读原文

了解更多产品详情

分享给认识的人吧


网站公告

今日签到

点亮在社区的每一天
去签到