生物医药行业数据平台建设需要保障行业合规要求、数据一致性、项目数据封存归档、痕迹修复等多种特殊需求。云原生数据库PolarDB致力于解决生物医药企业研发数据云上应用安全,其所支持的数据加密、数据脱敏、数据生命周期管理、高性能全局一致性、闪回等能力可以很好满足生物医药行业特殊需求,释放应用开发者定制化开发工作量,助力医药客户通过GDPR、SOC2、HIPAA、GxP等区域安全合规和行业安全合规认证。
—— 太美医疗科技副总裁 黄玉飞
1. 前言
太美医疗科技主要服务于生命科学产业,覆盖医药研发、药物警戒、医药营销等领域,基于AI、大数据、移动互联网、云计算等先进技术,提供覆盖药品全生命周期的技术解决方案,以协作连接行业参与方,助力医药行业实现线上化、数字化和智能化运营管理模式,为创新药研发和药品商业化赋能。
经过十年耕耘,太美坚持自主研发,市场占有率达第一,获得业内认可和好评,并连续三年,中国临床试验信息系统解决方案市场占有率第一。
2. 业务挑战与选型考量
2.1 业务挑战
太美医疗提供覆盖药品全生命周期的数字化产品,包括医院研发(临床数据、临床运营、药物警戒 、数字化 SMO、机构SaaS产品等)、营销数字化(医企互动、客户管理),其核心系统使用开源自建MySQL来承载业务,在多年的医药研发使用场景中,遇到了一些挑战。
- C/A的取舍
自建MySQL的高可用方案存在主备切换丢失数据的风险,业务需要在一致性(Consistency)和可用性(Availability)之间取舍,业务补数据逻辑比较复杂且风险高。
- 扩展性
随着时间的推移,核心业务以租户或者项目为维度的数据量越来越大,部分数据库已经超过10TB。如果按租户/项目ID进行分库,数据倾斜情况非常明显,且单库容量已经达到MySQL上限,扩展困难。
- 监管和安全要求
医药行业对数据有非常强的监管要求,如采用加密机对隐私字段进行加密,加密机存在性能瓶颈。此外需要完整的数据库操作审计日志,满足客户稽查和行业监管的要求。
- 运维管理
对于运维团队来说,自建高可用架构复杂,运维成本高。采用传统全量+增量的数据备份模式,备份和恢复耗时长,另外开源MySQL对DDL变更耗时长,非常不友好。
- 成本
成本上,一方面使用数据库中间件需要昂贵的软件许可和硬件成本,另外多份备份存储冗余也造成成本持续升高。
2.2 选型考量
经过与业务&运维部门多次讨论,数据库的选型重点兼顾以下5个因素,并且需要结合生产业务做严格的业务测试验证。
- 架构设计:契合业务场景的架构设计,云原生+存算分离;
- 扩展能力:横纵向扩展能力,弹性升降配;
- 成熟度:产品成熟稳定,有技术底蕴,有标杆客户案例;
- 高可用:故障切换,支持无感秒切,数据零丢失,跨机房容灾;
- 兼容性:完全兼容MySQL开源协议,业务代码零改动。
3. PolarDB在太美医疗的落地实践
PolarDB是阿里云战略投入多年的数据库产品,经过对多款数据库的选型比较,太美最终选择了阿里云瑶池旗下的云原生数据库PolarDB,并在多个特性上解决了业务的痛点问题。
3.1 高性能全局一致性:解决逻辑核查准确性问题
数据核查是临床试验中关键的质量保证过程,主要用于确保收集的受试者数据准确、一致,并符合项目方案的要求。逻辑核查作用于受试者数据的不同层级,构成了数据质量的全面控制。
传统开源MySQL架构下,RO只读节点需要等待log从主节点同步过来,并解析之后才可以对外提供最新数据的读服务,存在一定的延迟。当触发逐级核查计算时,读请求到只读节点上读数据有一定概率读到的数据不是最新的,造成整体数据计算错误。计算错误后,做数据逐级修复,工作量巨大。
PolarDB MySQL高性能全局一致性技术保证发往集群任意副本的读请求都可以获得全局一致性的结果,同时保障性能与弱一致性读几乎相同。
3.2 闪回查询:解决稽查痕迹一致性问题
为了满足数据可回溯的需求,临床研究中所有受试者数据新增、更新、删除操作的记录都需要保存成稽查痕迹(Audit Trail),稽查痕迹包括数据的旧值和新值,为研究的每一步操作提供透明度的保证。传统开源MySQL架构下,稽查痕迹服务通过Flink CDC订阅受试者数据库的binlog,解析后关联业务数据生成完整操作痕迹日志。此方案的痛点是痕迹数据和其依赖的业务数据时间戳不一致,可能导致痕迹数据记录错误。
PolarDB提供多表闪回查询,根据binlog中的时间戳闪回查询关联的业务数据,这样保证了痕迹数据和业务数据一致性,代码实现简单,改动量少。
3.3 数据生命周期管理:满足业务锁库需求
出于数据安全合规监管考虑,在试验数据清洗与最终核查完成后需要对数据库进行“锁定”。锁库后不允许进行任何数据的修改或更新,并提供只读访问权限应对审计和检查的要求。
传统开源MySQL架构下,通过应用开发代码控制支持锁库需求,涉及数据范围广,增加了代码复杂度。另外DBA等特权账号可以绕开应用权限限制去修改或者删除数据,而且锁库项目和未锁库项目在同一个实例同一张表中,项目不断增加造成数据冗余,性能下降,成本提升。
PolarDB MySQL支持按List字段进行表分区,当项目需要锁库时,可以触发让多张表记录归档到OSS中,归档后任何人(包括DBA)不可对数据进行修改&删除,同时,当需要读取数据时,可直接读取OSS记录或将数据下载到本地。
3.4 数据透明加密:降低隐私保护的成本
为了保护患者隐私安全,满足信息安全法规要求,个人隐私数据在数据库中需进行加密存储。
传统开源MySQL架构下,需要依赖加密机来实现数据加密,并且对代码有侵入性,同时硬件加密机性能存在瓶颈,使用成本和维护成本较高。
PolarDB MySQL支持透明数据加密TDE(Transparent Data Encryption),可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。TDE不会增加数据文件的大小,开发人员无需更改任何应用程序,即可使用TDE功能。
4. 总结
从2023年第四季度开始进行数据库选型及POC验证,在2024年6月启动分批次迁移,并在12月份正式完成太美核心业务数据库系统向PolarDB MySQL版的迁移和割接。通过架构升级,100%兼容原有业务系统,同时提升了业务性能、减轻了运维压力。