作者 : 刘翔华 云天化软件工程师
选型背景
云天化信息科技有限公司,作为云天化集团旗下的高新技术企业,致力于工业互联网产品的研发与实施。我司自主研发的低代码平台,其核心模块之一的流程引擎,长期依赖于Mysql数据库来管理流程的历史数据。然而,随着低代码平台应用的不断扩展,加之我们使用的是Mysql单表,流程归档的历史数据量急剧增长,经过我们的估算如果继续使用Mysql,在未来1年内将会出现严重的读写瓶颈,若对Mysql中流程的历史表进行分表分库操作,将对现有代码造成较大侵入,且维护难度显著增加。
为应对Mysql数据库存在的上述问题,我们经过多轮深入的技术讨论与评估,最终决定采用openGemini时序数据库作为我们流程引擎的历史数据存储方案。此举旨在有效缓解Mysql数据库的存储和读写压力,提升系统整体性能。
使用 openGemini 前后对比
图1-使用前业务架构
图2-基于openGemini的新业务架构
如图1,我们所有的读写压力都放到了Mysql中,历史归档流程查询假如出现锁库的情况,会直接影响到正在运行的流程,这不是我们想看到的。图2所示为使用openGemini后,历史走openGemini查询,当前运行任务还是在Mysql。通过openGemini,我们成功实现了历史归档流程数据与当前正在运行的流程数据的深度解耦。
这一关键举措不仅优化了数据架构,还显著提升了系统性能与扩展性。解耦后的数据结构使得历史数据的查询与分析更为高效,同时减少了对实时运行流程的潜在干扰,保障了系统整体的流畅与稳定。
另外,实际应用openGemini进行流程引擎的历史数据存储后,我们明显感受到查询相关历史数据的速度得到了显著提升(如用户的已办事项、已发起事项以及单个归档流程的信息),存储也得到了大幅缓解,达到了我们的预期效果。这一改变不仅优化了用户体验,也进一步证明了我们在技术选型上的正确性和前瞻性。
查询性能对比:
-
用户已办接口,查询效率提高2.6倍
-
用户已发接口,查询效率提高4倍
-
归档流程记录,查询效率提高3倍
(以上接口在高并发条件下,提升效果更加明显)
存储性能对比:
-
原历史数据存储容量使用82G,迁移后仅使用3G
经验分享
从数据类型的维度来看,流程引擎的数据实质上属于业务数据范畴,与时序数据存在显著差异。首先,其数据量规模通常远小于时序数据。其次,业务数据的一个显著特点是每条数据都与一个特定的业务ID相关联,这一ID唯一标识了一条数据记录。相比之下,时序数据更侧重于特定时间段或特定设备产生的数据集。
鉴于这两点差异,在设计和实施数据库表结构及其分片规则时,我们需要特别注意。如果处理不当,可能会导致openGemini服务器CPU使用率激增,查询性能下降。
从数据量角度考虑,我们将数据库的分片规则调整为每半年一片,而非openGemini默认的每周一片。这是因为我们的数据量相对较小,若采用默认的分片规则,将导致每片数据量过少,进而引发数据碎片化问题。在进行查询时,系统将耗费大量时间在碎片化的数据片上,而且openGemini每片8G的容量已足够满足我们的业务需求。
在表结构设计方面,我们根据查询基础的不同,将表分为两类:一类是以用户为查询基础的表(如用户的已办事项),另一类则是以流程ID为基础(每个历史流程均拥有一个唯一ID)。基于这两类不同的查询需求,我们所设计的表结构也必然有所不同。对于第一类表,我们采用普通表结构,并将userCode设置为tag列(需注意的是,基数过大的字段不宜设置为tag列)。对于第二类表,我们则采用大基数引擎,并将流程ID设置为索引。虽然大基数引擎的性能相较于普通表有显著提升,但需注意其目前尚不支持模糊查询功能,所以在需要模糊查询的业务中,我们使用的是普通表和表达式的结合来实现模糊查询。
总结
历史归档流程数据被安全地迁移至openGemini时序数据库中,其高效的存储与查询机制极大地缩短了数据检索时间,满足了业务对于历史数据快速访问的需求。而当前正在运行的流程数据则继续留在原有的数据库中,确保了业务流程的连续性和实时性。这种分离式的管理策略,不仅简化了数据维护的复杂度,还有效避免了因数据膨胀导致的性能瓶颈。
我们将继续深化与openGemini的集成,探索更多高级功能与应用场景,如基于时间序列的预测分析、智能告警等,以进一步推动业务流程的数字化、智能化转型。同时,我们也将密切关注openGemini的技术发展动态,及时调整与优化我们的数据架构与解决方案,确保始终保持在行业技术前沿。
企业简介
云南云天化信息科技有限公司隶属于云天化集团,于2016年11月在云南昆明注册成立,是一家专业聚焦工业互联网产品研发与实施、ERP咨询与实施、云基础设施建设与运维,集方案提供与实施服务于一体的综合性信创企业。依托人工智能、云计算、物联网等新一代信息技术,云天化信息打造了多个面向化工领域的产品和解决方案,以此助力生产制造企业提质增效,提升运营效率。
openGemini官网:http://www.openGemini.org
Star for me😊:https://github.com/openGemini
openGemini公众号:
欢迎关注~ 诚邀你加入 openGemini 社区,共建、共治、共享未来!