首批通过分布式安全可靠测评,为关键业务系统打造
日增亿级数据存储:BOSS直聘历史库实现规模化降本
- 70%存储资源节省
- <8sRTO
- 降低运维难度白屏管控工具
一、业务背景
BOSS 直聘的业务场景主要是通过数据库对招聘过程中的聊天记录信息进行存储,数据量极大,且每天都有 5 亿到 10 亿的增量数据。和招聘相关聊天记录往往呈现流水型特征,写入一段时间后即不会再次访问或更新,写多读少。
面对快速增长的在线数据,尤其是访问频率很低甚至为 0 的历史聊天记录,其占用的在线业务库的存储空间达到 PB 级别,造成了大量硬件资源浪费,堆高了企业的 IT 成本。同时,随着数据量的增加,在线数据库体积臃肿、查询效率逐步降低,给后续数据变更、扩展造成阻碍。
需要对历史聊天记录进行冷热数据分离。热数据所在的在线库是多个 MySQL 集群,采用分库分表的方式,每月定期清理过期数据,滚动写入历史归档库,需要一款高压缩能力,并且针对写多读少场景有很好性能的数据库来存储历史归档数据。
二、业务挑战
- 日增数据库量大,存储成本高
- 对BOSS直聘每天聊天记录信息进行存储,数据量极大,且每天都有 5 亿到 10 亿的增量数据。
- 数据量增加,在线库体积臃肿,导致查询效率差
- 随着数据量的增加,在线数据库体积臃肿、查询效率逐步降低,给后续数据变更、扩展造成阻碍
- 分库分表业务复杂度高、维护成本高
- 在线库目前使用的是 MySQL,在 MySQL 中进行分库分表明显比在分布式数据库中使用单表的业务复杂度要高很多,而且数据一致性难以保证,当多个数据表或数据库之间的数据关联较为复杂时,维护数据的一致性难度也会增加很多
- 数据库扩容麻烦,无法动态扩容
- MySQL集群采用分库分表模式,无法平滑实现集群的扩容,扩容操作对业务都有一定影响,并且存在一定的风险
三、解决方案
- 高级压缩技术
- 利用OceanBase对历史数据的编码和通用压缩技术,将原本历史聊天数据进行压缩,解决历史数据量大,导致在线库臃肿、查询性能变慢问题,大幅降低IT成本。
- 高兼容性,数据平滑同步
- OceanBase 对 MySQL 实现了完善的兼容,从MySQL数据库同步归档数据到OceanBase,不需要做任何修改即可完成数据的迁移同步,减少对DBA的工作量以及数据迁移的风险。
- 自研DTS,实现数据归档
- 在线库是主从结构的 MySQL,用于存储热数据,一般是最近一个月内的用户聊天记录;历史库是几个由 OCP 接管的 OceanBase 集群。每个月会通过自研的 DTS 工具从 MySQL 在线库定期归档过期数据到通 OceanBase 搭建的历史库。
四、客户收益
- 高压缩能力,实现成本的大幅降低
- OceanBase 通过数据库内核的高压缩的能力,帮助BOSS直聘轻松完成冷数据归档,并且节省了超过 70% 的存储资源,高压缩能力主要基于OceanBase行列混存特性,以及OceanBase对数据的两种压缩方式,通用压缩及数据编码压缩,可以对一个数据块先进行编码,然后再进行通用压缩,实现更高的压缩率。
- 高可用能力和动态扩缩容,极大降低了数据库对业务的影响
- OceanBase 是原生的分布式数据库,原生就可以保证多个数据副本之间的一致性,基于 Paxos 分布式一致性协议保证了在任一时刻只有当多数派副本达成一致时,才能完成一次数据的落盘,保证了任任一时刻,每条数据至少都有两个完整的副本,在任意一个节点故障时都不影响业务服务。同时,OceanBase具备动态扩容能力,通过简单命令即可完成整个集群的扩容,新增节点之后,数据会自动浮在均衡到新的节点,整体对业务无感,业务不需要停机维护,降低了数据库容量不足造成的各种风险。