OceanBase《DB大咖说》第 11 期,我们邀请到了三维家的技术总监庄建超,来分享他对数据库技术的理解,以及典型 SaaS 场景在数据库如何实现规模化降本的经验与体会。
庄建超,身为三维家的技术总监,独挑大梁,负责三维家的所有IT系统运维与开发工作,为公司的成长贡献了关键力量。他不仅是一位卓越的技术专家,而且随着角色的转变,他现今更多地从业务价值的视角审视技术,对技术的热情与专注始终未减。
庄建超认为技术人要想在工作中更上一个台阶,首先需要沉下心来认真钻研技术,同时对行业也要深入研究,两者结合才有可能更进一步。对于 DBA 的成长,他建议要多读源码,多参与到社区,多交流,多分享,多动手实践。
三维家是一家以家居产业为依托、依靠云计算、大数据和 AI 人工智能等多项核心技术打造的大家居产业云工业软件服务商,连续 5 年上榜广州“未来独角兽”创新企业,先后完成多轮融资,融资总额超过 10 亿元人民币。其一体化云设计软件(CAD+CAM)、数控系统以及前后端一体化智能制造解决方案 SaaS 服务支持着众多门店的经营,拥有广泛的企业客户。
三维家的一体化解决方案覆盖门店的营销、设计以及工厂生产计划管理、加工制造全流程,为全屋定制企业提供 C2M 柔性生产全链路工具。在整个过程中,同一套数据贯穿全流程,包括从最早的设计效果图、到后来的工厂机器生产、再到最后的交付,因此对其底层的数据库有很高的要求。
为了更好地支持业务发展,降低运维成本,从 2023 年下半年开始,三维家开始启动数据库的升级工作,从原来的 MySQL+某国产数据库(以下简称“XDB”)统一迁移到 OceanBase。
一、业务进一步增长,对数据库有了新需求
三维家成立于 2013 年,正值中国经济快速发展的黄金时期,经济的蓬勃成长带动了家装行业的蓬勃发展,三维家的业务也随之高速增长,对数据库的要求也不断提高。
三维家刚成立的时候采用的是某传统集中式数据库。该数据库功能强大,开发人员也熟悉,开发和运维都比较简单,很好地支持了业务发展。但随着公司业务的成长,数据量不断增加,时常需要对数据库进行扩容,扩容成本随之越来越高,压力之下,2017 年三维家把该数据库换成了 MySQL+ 某国产数据库 XDB 的组合。
庄建超是三维家的技术总监,也是三维家最早的技术人员,曾经一个人承担了三维家所有的 IT 工作,从开发到运维。
庄建超解释说,之所以选择 MySQL+ XDB 是由于三维家业务的复杂性。三维家有很多大客户,每个大客户就是一个数据库,客户对数据隔离性有较高要求,所以选择了 MySQL 的分库分表来满足。同时,三维家也存在合库的需求,比如对数据进行统一分析和统计,而 MySQL 可扩展性不够,同时也不支持太复杂的分析需求,所以分析工作就由 XDB 来完成。没有都采用 XDB 主要是成本上的考虑,该数据库节点多导致前期成本较高。
MySQL+XDB 的组合稳定运行了几年,MySQL 负责写,XDB 负责读,一直非常顺利。去年新的问题出现了,更准确地说——是三维家对数据库有了新的要求。
庄建超进一步解释了三维家更换数据库的原因:
第一,需要支持多基础设施的数据库。此前不止一家云厂商出现过服务中断事故,让三维家对稳定性更为看重。三维家的服务对客户很关键,如果停服将直接影响客户经营。因此,三维家考虑进行多基础设施部署,避免因某云服务中断而影响客户业务。如果继续使用 MySQL 的话,那就要在其他云上再复制一份数据,成本将直接翻倍。
第二,简化运维。MySQL 是用分库分表+中间件来解决数据量大和数据的隔离问题的,然后用 XDB 进行合库来解决数据分析问题。两个数据库之间要做同步,数据流程长,还要借助中间件,技术栈复杂,运维成本随之变高。
第三,云成本持续增长。三维家的业务增长很快,数据量同步增长,成本自然也水涨船高,考虑到未来的可持续发展,三维家对降本增效有了新需求。
基于上面这些考虑,去年三维家决定进行数据库升级,并同步启动新数据库选型。
“那时 OceanBase 已经开源,我们在对 OceanBase 进行评估和测试后,发现功能完全符合要求,同时,OceanBase 对 MySQL 的兼容性非常高,因此很快就敲定了 OceanBase。”庄建超表示。
庄建超补充说:决策的背后另一个重要原因是对 OceanBase 的信任。因为它经过了支付宝大规模金融场景的打磨,完全自研,多年成长,其稳定性和可靠性经过了很多客户验证,值得信赖。
二、分库分表加大迁移难度
从 2023 年 9 月份开始,三维家正式启动数据库的迁移工作。截至到目前,三维家已经完成 80% 的系统迁移,只有一些合库还没有合并,目前,这部分工作也在顺利推进之中。
庄建超介绍,三维家的官网系统是第一个迁移到 OceanBase 的系统。由于这个系统以静态页面为主,即使出现了故障也不会直接影响客户的业务,所以选择其进行首位升级。在官网迁移完成后,三维家开始真正进行其他关键业务系统数据库的升级。
“我们对数据库的切换很谨慎,采取两个系统并跑,也就是新旧系统都要同时写,一旦出问题,马上切换回去,保障尽量减少对业务的影响。”庄建超说。
迁移过程中最大的困难也恰恰是同步写,因为要保持两个数据库系统的数据一致性,这个难度比较大。尤其是多对一的合并迁移难度较高:迁移前分库分库表,迁移后合库合表,要确保能回退,数据就得回写到旧的数据库。
“OceanBase 的数据迁移工具 OMS 可以满足一部分数据迁移需求,对分库分表部分就得其他方式来回写了。我们选择的是 Flink CDC,同时也做了很多定制化开发和配置工作。”庄建超说。
为了确保数据库系统迁移成功,三维家做了很多准备工作,从功能测试、压力测试、到流量回放、SQL 优化、再到试点迁移等,以确保在 SQL 语法上兼容、SQL 性能没有问题。比如,针对三维家复杂的业务场景,在迁移过程中,也做了大量索引和执行计划的优化工作。
庄建超说,整体数据库迁移过程比较顺利。在迁移过程中,他也提议 OceanBase 可以进一步增强其监控和告警能力。比如,提供更细粒度的性能监控和提供监控的 API,这样他们可以把性能数据接入大屏做展示。
三、降本增效,效果看的见
随着数据库迁移工作的推进,升级效果也开始逐渐显露出来。
首先,成本下降明显。原有的 XDB 数据库被直接替换,服务器进一步节省,成本降低显而易见。而且,升级为 OceanBase 后,其对数据的高压缩比使得存储空间需求也降低了不少,整体存储成本下降了 30%。
庄建超解释说,MySQL 的数据迁移回报目前还没有充分体现出来。因为三维家需要保障业务稳定,所以目前还是双跑,为确保回退机制可行,目前整体成本还相对较高。如果双跑结束,成本会直接减少一半。
其次,运维复杂度降低。换成 OceanBase 后,原来的中间件没有了,数据库架构进一步简化,故障点更少,稳定性更好,灵活性能提升,接口响应更快。而且部署更加灵活,扩容也非常方便。
第三,对多租户架构的支持。SaaS 平台需要支持多租户,OceanBase 的多副本和分布式架构能够有效地隔离租户数据,保证租户间的数据安全和隔离,为不同客户规模的租户灵活实现提供了很大方便。
“过去用 MySQL 的时候,这一点非常头疼,采用分库分表也是出于这个方面的考虑。”庄建超说。
第四,对分析能力的支持。之所以此前使用 XDB 就是为了满足数据分析的需求,现在一个 OceanBase,TP、AP 同时都可以满足,不再需要进行数据同步,成本下降,运维也变得简单。
庄建超表示,接下来三维家将继续优化 OceanBase,同时,还会进行多基础设施部署,进一步实现多活。OceanBase 支持多基础设施部署,这为三维家提供更多便利。
另外,庄建超还透露,他对向量数据库非常感兴趣,因为三维家正在研发自己的知识库。“听说 OceanBase 正在研究这个功能,如果未来 OceanBase 能支持向量,我们搭建知识库的工作就会简单许多,将为我们业务开展带来很大方便。”庄建超说。
特别感谢徐戟(白鳝)对本期《DB 大咖说》的特别支持。徐戟老师是业内资深 Oracle 数据库优化专家,南京基石数据的 CTO,在数据库领域深耕 20 余年。同时,也是知名科技公众号《白鳝的洞穴》主理人,热衷于分享他在数据库方面的多面见解。