美年大健康黄伟:从选型到迁移,一个月升级核心数据库
核心生产系统的数据库,从接到替换需求到完成分布式升级,需要多久?一个月,这是美年大健康的回答。一个月集中调配各种资源,美年大健康完成了应用程序基本零改造的平滑迁移,新数据库在成本更低的前提下,有力保障了全国数百家分院业务的稳定运行。
美年大健康(以下简称美年)产业控股股份有限公司成立于 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 技术,从而更好地赋能美年的业务、助力美年的数字化转型进程。
相关文章:
美年大健康黄伟:从选型到迁移,一个月升级核心数据库
核心生产系统的数据库,从接到替换需求到完成分布式升级,需要多久?一个月,这是美年大健康的回答。一个月集中调配各种资源,美年大健康完成了应用程序基本零改造的平滑迁移,新数据库在成本更低的前提下&#…...
OpenHarmony应用构建工具Hvigor的构建流程
前言 OpenHarmony 应用和服务使用 Hvigor 作为工程的构建工具。本篇文章将介绍 Hvigor 的构建流程,通过修改脚本配置使 Hvigor 执行自定义任务。 Hvigor 的构建流程 加载命令行参数和环境变量;初始化项目结构,创建 Project 和 Module 实例…...
ChatGPT在金融财务领域的10种应用方法
1.生成报告 在金融领域中,最耗时的任务之一是报告生成。通过ChatGPT,您可以在一定程度上自动化这个过程。这款人工智能工具可以获取关于公司财务表现的结构化数据,并生成一份书面摘要,详细说明关键点、趋势和观察结果。这个功能在…...
全程云OA ajax.ashx SQL注入漏洞复现
0x01 产品简介 全程云OA为企业提供日常办公管理、公文管理、工作请示、汇报、档案、知识体系、预算控制等26个功能,超过100多个子模块。为企业内部提供高效、畅通的信息渠道,同时也能大力推动公司信息系统发展,提高企业的办公自动化程度和综合管理水平,加快企业信息的流通…...
VMware 安装 macOS虚拟机(附工具包)
VMware 安装 macOS虚拟机,在Windows上体验苹果macOS系统! 安装教程:VMware 安装 macOS虚拟机VMware Workstation Pro 是一款强大的虚拟机软件,可让您在 Windows 电脑上运行 macOS 系统。只需简单几步操作,即可轻松安装…...
Tomcat与Servlet是什么关系
Tomcat与Servlet是什么关系 Apache Tomcat和Servlet之间存在密切的关系,可以说它们是一对密切合作的组件。下面是它们的关系: Tomcat是Servlet容器: Tomcat是一个开源的、轻量级的Servlet容器。Servlet容器是一个Web服务器扩展,用…...
C++11_右值引用
文章目录 前言一、右值引用是什么?那么,什么又是右值?右值引用 二、使用步骤和意义1.1.11.2 2.右值引用的最大意义2.1 完美转发2.2 万能折叠 前言 C11 是2011年对C这门语言发布的新标准,并且此次标准引入了十分多的新特性&#x…...
C#使用条件语句判断用户登录身份
目录 一、示例 二、生成 利用条件语句判断用户登录身份,根据用户登录身份的不同,给予相应的操作权限。 一、示例 主要用if语句及ComboBox控件。其中,ComboBox是窗体中的下拉列表控件,在使用ComboBox控件前,可以先向…...
在VM下使用Composer完成快照方式的软件制作
Composer允许您构建软件、应用程序、偏好设置文件或是文档的安装包,安装包可以部署到远程电脑或是作为镜像流程的一部分。构建软件包的第一步就是创建包源,根据要打包的软件,Composer允许您监视软件的安装和使用驱动器上已存在的文件来创建包…...
YOLOv5改进 | Neck篇 | 利用Damo-YOLO的RepGFPN改进特征融合层
一、本文介绍 本文给大家带来的改进机制是Damo-YOLO的RepGFPN(重参数化泛化特征金字塔网络),利用其优化YOLOv5的Neck部分,可以在不影响计算量的同时大幅度涨点(亲测在小目标和大目标检测的数据集上效果均表现良好涨点幅度超级高!)。RepGFPN不同于以往提出的改进模块,其…...
设计模式——最全梳理,最好理解
新年献礼! 设计模式呕心梳理 创建型模式 单例模式(Singleton Pattern)https://blog.csdn.net/qq_34869143/article/details/134874044 整理中... 结构型模式 代理模式(Proxy Pattern)https://blog.csdn.net/qq_34…...
外包干了4个月,技术退步明显了...
先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四…...
rust 注释文档生成 cargo doc
rust的cargo文档生成 只需要在每个函数写清楚注释,就可以自动生成文档,很方便 即不用写文档,又可以快速查看,是开发rust的必备技能 rust安装和开发环境配置,可以参考:链接 1.写注释的方法 连续三个 \ 即…...
大语言模型(LLM)框架及微调 (Fine Tuning)
大语言模型(LLM) 技术作为人工智能领域的一项重要创 新在今年引起了广泛的关注。 LLM 是利用深度学习和大数据训练的人工智能系统,专门 设计来理解、生成和回应自然语言。这些模型通过分析大量 的文本数据来学习语言的结构和用法,…...
速盾高防ip:专业防御ddos
速盾高防IP是速盾网络为企业提供的专业DDoS攻击防御解决方案之一。作为一种先进的网络安全服务,速盾高防IP致力于保护客户的网络资源免受分布式拒绝服务(DDoS)攻击的威胁。以下是速盾高防IP的一些关键特点和优势: 实时攻击监测&am…...
第5章-第8节-Java面向对象中的内部类
1、内部类:属于类的成员之一,类的内部又定义类,外层的class称为外部类,内部的class称为内部类。 设计了某个类,根据需求发现其内部又需要定义一个独立的内部结构,此时就考虑将其定义为内部类,内…...
首次引入大模型!Bert-vits2-Extra中文特化版40秒素材复刻巫师3叶奈法
Bert-vits2项目又更新了,更新了一个新的分支:中文特化,所谓中文特化,即针对中文音色的特殊优化版本,纯中文底模效果百尺竿头更进一步,同时首次引入了大模型,使用国产IDEA-CCNL/Erlangshen-Megat…...
从零学Java - 接口
Java 接口 文章目录 Java 接口1.接口的语法1.1 与抽象类的区别 2.如何使用接口?2.1 接口的使用规范 3.什么是接口?3.1 常见关系 4.接口的多态性5.面向接口编程5.1 接口回调 6.特殊接口6.1 常量接口6.2 标记接口 7.接口的好处 补充面向对象 七大设计原则 1.接口的语法 接口&a…...
安全防御之身份鉴别技术
身份认证技术用于在计算机网络中确认操作者的身份。在计算机网络世界中,用户的身份信息是用一组特定的数据来表示的,计算机也只能识别用户的数字身份。身份认证技术能够作为系统安全的第一道防线,主要用于确认网络用户的身份,防止…...
axios post YII2无法接收post参数问题解决
axios post YII2无法接收post参数问题解决 在yii 配置文件中增加 ‘parsers’ > [“application/json” > “yii\web\JsonParser”] 如下所示: $config [id > basic,language > zh-CN,timeZone > env(TIME_ZONE, PRC),basePath > $basePath,bo…...
性能优化-OpenMP基础教程(三)
本文主要介绍OpenMP并行编程的环境变量和实战、主要对比理解嵌套并行的效果。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC)开发基础教程 🎀CSDN主页 发狂的小花 &…...
[足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-1+2课程介绍+电路系统建模、基尔霍夫定律
本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-动态系统建模与分析 Ch02-12课程介绍电路系统建模、基尔霍夫定律 1. 课程介绍2. 电路系统建模、基尔霍夫定律 1. 课程介绍 2. 电路系统建模、基尔霍夫定律 基本元件: 电量 库伦&…...
VSCode配置C/C++环境
文章目录 1. 安装配置 C 编译器1.1 下载 MinGW1.2 Mingw添加到系统变量1.3 验证 2. 安装和配置VSCode2.1 安装VSCode2.2 VSCode配置C环境2.3. 优化 3.参考文章 本文主要记录在VSCode中配置C环境,非常感谢参考文章中的博主。 1. 安装配置 C 编译器 首先需要安装 C 编…...
ChatGPT绘制全球植被类型分布图、生物量图、土壤概念图、处理遥感数据并绘图、病毒、植物、动物细胞结构图
以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…...
vmware workstation的三种网络模式通俗理解
一、前言 workstations想必很多童鞋都在用,经常会用来在本机创建不同的虚拟机来做各种测试,那么对于它支持的网络模式,在不同的测试场景下应该用哪种网络模式,你需要做下了解,以便可以愉快的继续测(搬&…...
C++程序设计兼谈对象模型(侯捷)笔记
C程序设计兼谈对象模型(侯捷) 这是C面向对象程序设计的续集笔记,仅供个人学习使用。如有侵权,请联系删除。 主要内容:涉及到模板中的类模板、函数模板、成员模板以及模板模板参数,后面包含对象模型中虚函数调用&…...
selenium实现UI自动化
1.selenium简介 selenium是支持web浏览器自动化的一系列工具和库的综合项目。具有支持linux、windows等多个平台,支持Firefox、chrome等多种主流浏览器;支持Java、Python等多种语言。 主要包括的三大工具有: WebDriver(rc 1.0)、…...
【DevOps-03】Build阶段-Maven安装配置
一、简要说明 下载安装JDK8下载安装Maven二、复制准备一台虚拟机 1、VM虚拟复制克隆一台机器 2、启动刚克隆的虚拟机,修改IP地址 刚刚克隆的虚拟机 ,IP地址和原虚拟的IP地址是一样的,需要修改克隆后的虚拟机IP地址,以免IP地址冲突。 # 编辑修改IP地址 $ vi /etc/sysconfig…...
已解决java.lang.ArrayIndexOutOfBoundsException异常的正确解决方法,亲测有效!!!
已解决java.lang.ArrayIndexOutOfBoundsException异常的正确解决方法,亲测有效!!! 目录 报错问题 解决思路 解决方法 总结 Q1 - 报错问题 java.long.ArrayIndexOutOfBoundsException 是Java中的一个运行时异常,…...
Pycharm打包程序为exe文件
Pycharm打包程序为exe文件 【一】导入模块pyinstaller 【1】图片说明 【2】文字说明 根据图片顺序执行 首先点击file进入settings界面,在setting界面找到Project下面的Python Interpretor,点击号进行模块的添加在搜索框中输入pyinstaller,…...
做网站的意义/制作网站的软件
Android权限说明 Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制, Android系统权限相关的内容, (一)linux文件系统上的权限 -rwxr-x--x system system 4156 2012-06…...
如何做seo搜索引擎优化/泰州seo推广
绿豆(cnitpm.com) 11:03:20小李发现其计算机无法连接网络,而办公室其它计算机网络访问正常,为了诊断故障,小李在其计算机操作系统中执行了若干命令,得到的结果如下表所示,根据命令执行结果,小李首先应( )。…...
吉林市教做网站/网站怎样优化文章关键词
门窗报警器主要利用开关型霍尔传感器具有磁感应强度达到一定强度时输出电压才会发生电平转换的特点,我们进行方案设定磁场靠近时霍尔输出低电平不报警,反之磁场离开时霍尔输出高电平为报警。因为门磁开关报警器为了方便安装使用采用电池供电,…...
太原营销型网站建设/网络营销期末总结
http://www.jfox.info/bi-jiao-chang-jian-de-shu-ju-ku-sql-mian-shi-ti-yi-ji-da-an转载于:https://www.cnblogs.com/ydxblog/p/5753575.html...
网站性能容量的收集与分析怎么做/全国疫情地区查询最新
java - char的默认值是什么?char c \u0000;当我打印c时,它在命令行窗口中显示“a”。那么char类型字段的默认值是什么?有人说\ u0000在unicode中表示无效; 是对的吗?user1298336 asked 2019-06-07T07:58:58Z14个解决方案84 votes…...
wordpress参数/一键清理加速
目录 1 SELECT语法 2 查询多列数据 2.1 field 2.2 table.field 3 AS(使用别名) 4 WHERE(条件查询) 4.1 简介 4.2 WHERE的使用 5 GROUP BY (查询结果分组) 5.1 查询结果分组 5.2 使用 6 HAVING…...