美年大健康黄伟:从选型到迁移,一个月升级核心数据库

核心生产系统的数据库,从接到替换需求到完成分布式升级,需要多久?一个月,这是美年大健康的回答。一个月集中调配各种资源,美年大健康完成了应用程序基本零改造的平滑迁移,新数据库在成本更低的前提下,有力保障了全国数百家分院业务的稳定运行。

美年大健康(以下简称美年)产业控股股份有限公司成立于 2004 年,是一家集健康咨询、健康评估、健康管理为一体的健康体检与医疗集团,旗下“美年”、“慈铭”、“奥亚”、“美兆”四大品牌,目前,在全国 300 多个城市有 600 多家分院,每年体检人数超过 3000 万。

如此大的业务量背后需要一套功能强大的体检系统来支持。实际上,美年不仅业务量大,业务类型也很多,集团需要根据用户需求的变化和体检设备的升级不断推出新的业务类型,比如,2022 年 9 月新推出的“脑睿佳”专项脑检产品就颇受欢迎。

2023 年 3 月,美年 SOA 系统(Sale & Order Assistant System,销售制单辅助系统)原来使用的 RDS 告急,监控告警信息显示,随着新体检系统的部署上线,带来数据量的增长很快将突破 RDS 上限。黄伟表示:“如果再不更换数据库,SOA 系统随时有可能崩盘,为了保证新的体检系统顺利上线到各个分院,必须马上进行数据库升级。”在美年 SOA 系统数据库升级至 OceanBase 后,有效保障了各个分院销售制单业务的稳定运行,也为美年的数字化转型提供了坚实的支撑。

图片

随着人们生活水平的提高和健康保健意识的增强,健康体验行业保持高速增长态势。同时,健康领域的消费升级和品质的提升也成为主要消费趋势。针对市场变化, 2019 年,美年提出了“医疗导向、品质驱动、服务支撑、创新引领”十六字核心战略,随后又提出“All in 数字化”来大力推动公司的数字化转型。

作为美年生产系统的体检软件是美年数字化转型的重要支撑。然而,这套业务系统已经很老旧了,该系统用十多年前比较流行的编程语言 PowerBulider(PB)开发,采用的也是当年流行的 C/S 架构。随着网络环境的改善和软件技术的不断进步,这套 C/S 架构系统逐步落后。2021 年,美年决定重新开发一套新的健康体检系统,这才有了今天的「扁鹊」和「SOA」系统。

扁鹊系统是美年新一代智慧体检管理 SaaS 平台。相比前一代系统,扁鹊在功能上有很大提升,它能实现分时预约、快速登记、智慧导诊、数据实时互通、样本追踪、检查类异常结果自动上报等功能,是美年提升医疗质量、客户体验、精细化管理水平以及创新能力的主要平台。

SOA 是美年为销售提供订单报价和落单的系统,用以提升订单的过程效率及管理规范,实现本地单、全国单、多品牌订单和实体卡等关键订单的业务在线化和管理协同。

SOA 是扁鹊系统的一部分,它作为扁鹊系统的一个独立功能模块,于 2020 年 6 月 30 日先行开发完成,并开始在各个分院上线。随着 2022 年中,新一代扁鹊智慧体检 Saas 系统的正式上线,SOA 系统也产生了新的版本迭代升级需求,例如:老系统订单、套餐数据的同步等,这类需求很明显带来了大量业务数据的增长。初期扁鹊系统上线比较慢,到去年年底共上线了 10 家分院。进入 2023 年,扁鹊上线节奏明显加快,到 3 月份上线了近 200 家分院。正当研发部门准备在剩下的 300 多家分院开始上线时——作为扁鹊业务支撑的 SOA 系统数据库报警了。原来,SOA 最早选的数据库是 RDS,到 3 月份的时候数据库容量逐渐承受不住。

“有一天 DBA 来告诉我,SOA 系统的 RDS 存储空间已经超过上限。后面还有 300 多家分院等着上,按目前的增长速度很快就要接近 RDS 极限。”美年高级研发总监黄伟表示。一旦数据库崩溃告急,所有订单都无法处理,美年的业务也将面临停摆风险。黄伟意识到替换数据库已经是当务之急,并给自己定了一个目标:在一个月内解决数据库升级的问题。

图片

扁鹊系统和 SOA 两个系统都是关乎美年未来业务发展的关键项目。相比扁鹊系统而言,SOA 系统设计要早两年,有些设计没有考虑到后来业务大规模增长的情况。当黄伟仔细审视 SOA 数据库系统的时候才发现,SOA 的数据库设计存在一些不合理的地方,否则就不会出现眼下的局面。

比如,有超过 2 亿行的单表存在,这样的设计原本可以优化;目前数据库存储的数据量达数 TB,但其中存在很多应该归档的冷数据和一些无用数据……“过去有些分院对数据管理没有严格要求,订单没有很好地维护,有些订单早该结束了也不结束,还有些无主数据,需要进行清理和分类。” 黄伟说。不过,这些工作现在暂时顾不上,只能等到新数据库上线后再进行补救了,现在最要紧的把这个 MySQL 数据库替换下来。

黄伟介绍:“我们对于新的数据库第一个要求是要能承受得住不断增长的数据量,也就是要高度可扩展。其次,新数据库要能高度兼容 MySQL,否则就要对应用程序进行大量改造,时间上不允许。第三,不能比 MySQL 慢。最后,成本希望能与 MySQL 持平,如有增加也应该是有少许增加。” 

基于以上几点需求,美年进行了数据库的测试、对比、选型,通过全面的评估和比较,OceanBase 满足了美年对数据库的各项要求,最终确认选型 OceanBase。何晶是美年后端开发专家,具体负责从 MySQL 数据库升级到 OceanBase 的工作。何晶介绍,为了评估 OceanBase 对 MySQL 的兼容性,美年对 OceanBase 用生产中的流量进行了全流量的回放,结果表明,99% 以上的语句是兼容的。而在性能方面,评估结果显示 OceanBase 80% 优于 MySQL。

SOA 系统中原来有一些非常复杂的 SQL 语句。比如,有多表聚合,还有很多子查询,在数据量不大的时候,性能降低不明显,一旦数据量达到一定程度,性能就明显下来了。针对剩下的 20% 不如 MySQL 的地方,开发人员做了针对性的优化以后,数据库的性能也有明显的改进。

图片

在完成了对 SQL 语句的优化后,美年在 OceanBase 的支持下制订了详细的迁移规划,并在测试环境和预发布环境中进行了演练。最后在今年 4 月份,即下半年体检旺季到来之前顺利地完成了从 MySQL 到 OceanBase 的迁移。

图片

数据库迁移的结果让美年非常满意。黄伟表示,作为一款分布式数据库,OceanBase 能稳定应对目前的 SOA 订单数据及未来的业务增长,在性能上也满足了需求。同时,在成本上也有节省,尤其在存储费用上。借助数据压缩技术,原来 TB 级的数据量经过数据的清理和压缩,现在只有 GB 级,数据压缩了 5/6,存储成本下降非常明显。

此外,上线 OceanBase 还降低了运维人员的负担,在一定程度上也等于降低成本。黄伟介绍,OceanBase 提供的工作台和一些工具,可以自动诊断数据库的问题,能对 SQL 进行审查并提出修改建议。另外,以往很多工作需要开发人员与 DBA 进行沟通,现在有了工作台和工具,研发人员自己就可以利用它们来进行业务的优化。

OceanBase 上线还有一个让黄伟感到很高兴的是:OceanBase 的主备集群也非常完美地契合了美年体检系统两地三中心的容灾架构。现在,美年的 SOA 系统在北京和上海两地各部署一套,上海为生产中心(两个可用区分开部署),北京为灾备中心,生产中心和容灾中心可以实现一键切换。相比美年其他一些系统灾备数据需要通过中间件来传输,SOA 将逻辑复制变成了物理复制,非常方便。

图片

另外,OceanBase 数据库采用多副本,支持读写分离,其只读节点可以专门用作数据的统计和分析任务,供数据团队使用,避免了对正常业务的干扰。同时,因为不用再单独部署一个数据库,降低了系统的复杂性。比如 BI 部门就可以很好地利用只读节点进行日常的数据抽取。

鉴于 OceanBase 在 SOA 系统中的良好表现,另一核心系统「扁鹊」也采用了OceanBase 来进行数据归档和定制化改造。用 OceanBase 进行数据聚合后,一些查询可以直接接入到 OceanBase 中进行,相当于利用 OceanBase 做了扁鹊全量的数据聚合,保证了一些 2C 的业务数据直接查询。另外,美年还利用 OceanBase 来保存一些非热点数据,如过往三年的体检数据,为客户提供一些定制化改造服务,借助 OceanBase 至少保存 3 年以上的数据随时调用,方便客户拿到体检报告时,可以及时调取以前的数据来对比身体健康的变化。

图片

对于未来的规划,黄伟表示,美年会结合 OceanBase 的特点对现有架构进行优化,提高可用性,以及进一步优化公司的数据存储体系,降低成本。另外,黄伟透露,他对 Serverless 数据库技术非常感兴趣。因为体检行业具有明显的潮汐特征,上午业务量高,下午业务量很少,非常适合 Serverless,希望能尽快引入 Serverless 技术,从而更好地赋能美年的业务、助力美年的数字化转型进程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/296504.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第8课 将推流端与播放端合并为一对一音视频聊天功能

在第二章的第7课,我们实现了一个推流端,可以把音视频推送到rtmp服务器;在第一章的第4课,我们实现了一个播放器,可以正常播放rtmp音视频流。聪明的你应该可以想到了:把推流端和播放端合并在一起,…

【UE Niagara学习笔记】01 - 浮动的蒲公英

目录 效果 步骤 一、创建材质 二、创建Niagara粒子 2.1 创建Niagara模板 2.2 通过用户参数设置粒子大小 2.3 设置数量、风速、透明度变化 效果 步骤 一、创建材质 1. 在虚幻商城中把“Realistic Starter VFX Pack Vol 2”添加到项目中,该资产中所包含的…

博客的简介

博客的简介 大家可以把这个当做目录,从中选择自己需要的内容进行阅览,欢迎大家一键三连!!!! 话题讨论专栏 点击进入话题讨论专栏 主要文章: 神奇的代码——可随意修改复制页面内容 Python…

工会排队规则:深度解析

工会排队规则:深度解析在当今的消费市场中,工会排队规则作为一种创新的营销策略,正逐渐受到广大商家和消费者的青睐。这一规则不仅为商家带来了可观的利润,同时也为消费者提供了一种全新的购物体验。本文将对工会排队规则进行深入…

跨国制造业组网方案解析,如何实现总部-分支稳定互联?

既要控制成本,又要稳定高效,可能吗? 在制造企业积极向“智造”发展、数字化转型的当下,物联网、人工智能、机器人等新型设备加入到生产、管理环节,为企业内部数据传输提出了更高的要求。而当企业规模扩大,数…

使用Docker-compose快速构建Nacos服务

在微服务架构中,服务的注册与发现扮演着至关重要的角色。Nacos(Naming and Configuration Service)是阿里巴巴开源的服务注册与发现组件,致力于支持动态配置管理和服务发现。最近,一位朋友表达了对搭建一套Nacos开发环…

php 数组中的元素进行排列组合

需求背景:计算出数组[A,B,C,D]各种排列组合,希望得到的是数据如下图 直接上代码: private function finish_combination($array, &$groupResult [], $splite ,){$result [];$finish_result [];$this->diffArrayItems($array, $…

分布式协调系统

分布式协调系统 分布式协调系统解决的进程间的通信和协作,根据是否在同一时间和是否相互引用分为四个模型。 示例系统Chubby 主功能:让客户端实现同步,方法是加锁服务 介绍一下系统: 系统由五台服务器构成,通过pax…

odoo17 | 视图操作按钮

前言 到目前为止,我们主要通过声明字段和视图来构建我们的模块。在上一章中,我们刚刚通过计算字段和onchanges引入了业务逻辑。在任何真实的业务场景中,我们都会希望将一些业务逻辑链接到操作按钮。在我们的房地产示例中,我们希望…

案例092:基于微信小程序的二手闲置交易市场系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

Linux学习之系统编程5(信号)

写在前面: 我的Linux的学习之路非常坎坷。第一次学习Linux是在大一下的开学没多久,结果因为不会安装VMware就无疾而终了,可以说是没开始就失败了。第二次学习Linux是在大一下快放暑假(那个时候刚刚过完考试周)&#xf…

2024年初级会计资格考试报名照片要求,千万不要直接上传哦

2024年初级会计资格考试照片要求,千万不要直接上传哦。 第一步:支付宝搜索"亿鸣证件照"或者微信搜索”随时照“,然后进入小程序的搜索列表搜索"初级会计",然后上传一张生活照或者自拍一张,就能制…

【计算机毕业设计】SSM企业工资管理系统

项目介绍 本项目包含管理员与普通员工两种角色, 管理员角色包含以下功能: 管理员登录,员工管理,部门管理,岗位管理,职称管理,工龄奖金管理,工资项管理,考勤管理,工资查询,统计图表等功能。 员工角色包含以下功能: 员工登录,个人信息管理…

lotus-farcaster 搭建

lotus 开源监控仪表盘 安装修改配置文件监听钱包地址指定安装目录可以修改脚本指定miner配置文件路径执行安装脚本 修改修改端口为9200修改安装脚本 9100改为9200,重新安装修改检查脚本 端口 9200,重新安装 安装成功prometheus 安装创建存储目录 配置文件…

SESV:通过预测和纠错实现精确的医学图像分割

SESV: Accurate Medical Image Segmentation by Predicting and Correcting Errors SESV:通过预测和纠错实现精确的医学图像分割背景贡献实验方法Thinking SESV:通过预测和纠错实现精确的医学图像分割 286 IEEE TRANSACTIONS ON MEDICAL IMAGING, VOL. …

[C#]基于deskew算法实现图像文本倾斜校正

【算法介绍】 让我们开始讨论Deskeweing算法的一般概念。我们的主要目标是将旋转的图像分成文本块,并确定它们的角度。为了让您详细了解我将使用的方法: 照常-将图像转换为灰度。应用轻微的模糊以减少图像中的噪点。现在,我们的目标是找到带…

2023 hnust 湖南科技大学 大四上 商务智能 课程 期末考试 复习资料

前言 《听了课就能及格》由于老师发的复习PPT内容过多(近两万字),因此在此大幅删减由于老师透露太少,删减全凭主观意志,请谨慎参考!!!猜测逻辑 过于细碎概念的不考(不算…

Vue2 - 数据响应式原理

目录 1,总览2,Observer3,Dep4,Watcher5,Schedule 1,总览 vue2官网参考 简单介绍下上图流程:以 Data 为中心来说, Vue 会将传递给 Vue 实例的 data 选项(普通 js 对象&a…

HackTheBox - Medium - Linux - Awkward

Awkward Awkward 是一款中等难度的机器,它突出显示了不会导致 RCE 的代码注入漏洞,而是 SSRF、LFI 和任意文件写入/追加漏洞。此外,该框还涉及通过不良的密码做法(例如密码重用)以及以纯文本形式存储密码来绕过身份验…

Python轴承故障诊断 (九)基于VMD+CNN-BiLSTM的故障分类

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Python轴承故障诊断 (一)短时傅里叶变换STFT Python轴承故障诊断 (二)连续小波变换CWT_pyts 小波变换 故障-CSDN博客 Python轴承故障诊断 (三)经验模态分解EMD_轴承诊断 …