三层架构在新版一体化医护工作站中的应用
2018-03-30任爱玲李晓明鲁传东郭欣睿
任爱玲,李晓明,柳 勇,鲁传东,郭欣睿
(1.解放军第251医院,张家口 075000;2.解放军第251医院信息科,张家口 075000;3.解放军第251医院院长办,张家口 075000;4.解放军第251医院医务处,张家口 075000;5.浙江和仁科技股份有限公司项目服务部,杭州 310053)
随着社会的发展和技术的不断进步,软件数据库的开发利用不断迈入新的高度,高集成度、大数据量,以及高密度访问成为现代IT界所面对的主要现象,而如何通过有效的技术研究和结构分析等手段,解决数据库使用效率及安全性等一系列问题[1],成为开发者急需解决的头等大事。本院新版一体化医护工作站就是一个集成多个系统功能的一款综合性软件,提升该系统的性能,减轻医院HIS数据库交互压力,增强数据访问的安全性是该系统设计的一个重要课题[2]。
1 三层架构原理
1.1数据库性能下降分析对于大型数据库来说,随着时间的推移和业务量的增加,关联该数据库的系统都会出现性能衰退现象,特别是某些集成度较高、数据量较大的综合系统,这一情况尤为突出。产生这种现象的原因主要有两点:①由于业务量的增长,造成session资源、锁资源的内部竞争效应而导致性能下降。②由于数据量的增长,造成寻址范围扩大以及索引效率下降等进而造成性能下降[3]。通过量化建立示意图(图1)。
通过对性能敏感度分析,发现热点数据对数据库的性能要求很高,而且,造成用户对性能评价不高的主要判定也来自对热点数据访问的性能指标[4](图2)。
图1 数据量与性能量化
图2 热点数据与性能量化
对热点数据进行分析,发现热点数据又可以分为两大类:①字典数据,这类数据变更频率低,但读取频繁,且对读的性能要求很高。②热点业务数据,这类数据的活跃度具有时效性,也就是说当其处于业务链过程期间属于热点数据,一旦完成整个业务链处理过程将转化为冷数据,数据库中的数据主题也是由其构成。热点业务数据的访问主体由业务流程的执行主体构成,其读取行为相对于变更行为具有迟滞性(图3)。
1.2三层架构简介过去的软件开发,C/S架构使用较为广泛,究其原因主要是架构简单、数据量较小,直接通过客户端与数据库的交互就可以解决最基本的需要,服务器端没有太大的压力,但随着社会的发展和信息技术的日益成熟,简单的C/S架构已经不能满足数据量激增的需要,大量的数据需要传输、处理,这就给服务器端带来巨大的压力,所以一种新型的架构模式应运而生,这就是三层架构。
图3 分类数据影响
三层体系架构,逻辑上是在数据库和客户端之间增加一个“中间层”,或者叫组件层[5]。从而构成以下架构(图4)。
图4 三层架构
1.3三层架构特点根据.NET三层架构系统由表示层(UI-User Interface)、业务逻辑层(BLL-Business Logic Layer)和数据访问层(DAL-Data Access Layer)组成,采用三层架构的系统层与层之间的耦合度比较低,对某一层的业务或代码的改动对其他层的影响很小,使得系统的开发和后期维护变得更容易[6](图5)。
图5 三层架构分层
① 表示层:即所谓的客户端界面,用于接收和显示各项数据,对该层进行修改,并不会影响到后面中间层的运行。
② 业务逻辑层:该层是三层架构的核心价值体现,在数据的传导过程中起到承上启下的作用,并且可以按照系统的逻辑设计规则对里面的模块进行增减,模块之间的关系是弱耦合关系且向下依赖[7],改变上一级的设计对下级没有任何影响。正因为这种特性,业务逻辑层同时拥有双重身份,对表示层来说,是被调用者;对数据访问层来说,又是调用者。此层设计的好坏直接影响到数据访问的效率。
③ 数据访问层:简单地说就是连接数据库,通过一些SQL语言命令实现对数据表的操作,同时可以访问数据库中的各类相关文件和文档[8]。
2 具体设计与应用
2.1系统架构设计根据医院实际情况,基于三级架构设计原理,对医护一体化工作站用户界面和病历数据挖掘结构化检索两大模块采用三级模式,而对结构化病历文书处理子系统依然采取二级架构设计,然后通过一定的接口协议把三者有机地集成在一起,这样设计可以极大地提升医院HIS数据库的访问、利用效率,同时建立结构化病历文书处理子系统(MEDDOC)数据库和病历文件远程(FTP)下载服务器,用直接访问的方式,降低病历打开、书写、提交的等待时间(图6)。
图6 系统架构设计
2.2系统硬软件环境配置根据系统架构设计及医院数据吞吐量的大小,合理控制成本支出,对电子病历部分下设两台服务器,一台安装MEDDOC数据库,用于病历RDB表数据的读取,另外一台用于病历文件FTP模式的存储。对于访问HIS数据库的中间层服务器,采取三台服务器集群的模式使其达到基本性能配置要求。病历结构化ORACLE XDB数据库也需单独设立,用于病历数据挖掘、结构化数据检索(图7)。
2.3医护一体化工作站和电子病历系统间连接机制医护一体化工作站的客户端主要分为两大部分,一部分是用户操作界面,另一部分是电子病历应用部分。用户操作界面主要通过配置文件获取中间层地址,从而连接到中间层服务器,再由中间层通过
图7 硬软件环境配置
一定的机制发起对HIS数据库的访问。电子病历应用模块则是通过系统配置XML文件获取电子病历用户口令,从而连接到Meddoc数据库,并最终从病历FTP服务器和MedXDB数据库获取想要的病历信息(图8)。
图8 系统间连接机制
3 系统实现
3.1客户端与HIS数据库的间接交互在医护一体化工作站客户端与HIS数据库间建立中间层服务器集群,将身份校验、业务审定、数据访问等工作皆放在该层完成,客户端间接通过中间层与数据库进行通信。这种模式下,当客户端需求激增时,可以极大地降低网络的负载压力,从而对服务器端性能的影响也会大大减小。此外,当用户的需求发生变化时,只需在中间层做出适当修改即可,给系统的升级维护带来极大的便利性。
3.2病历数据的急速访问建立独立的病历文件FTP服务器和MEDDOC数据库,使客户端的病历书写、存储、调阅可以直接与该服务器进行交互,不设置中间层,该架构模式可以使病历数据拥有更快的处理速度、更高的系统稳定性、更便利的数据库管理和维护功能。MEDDOC病历文书处理系统相当于集成在医护一体化工作站系统上的子系统,拥有自主的数据文档处理功能。该系统主要由病历索引信息、病历文件数据、病历XML数据等构成,其中病历文件数据较大,为用户提供更优的读取性能,在MEDDOC数据库端采取分布式缓存模式来降低数据读写的消耗,最终使得病历的读写速率有大幅提升。
3.3病历数据共享建立病历结构化Oracle XDB数据库,可以通过XDB提供的虚拟FTP服务提交和下载XML文件,再通过中间层WebService服务器把XML病历数据共享给其他系统,该功能对于病历数据挖掘、结构化检索、科研应用子系统等提供强大的技术支撑。
4 讨 论
三级架构是面向对象软件开发的一种新型设计理念,通过在新版医护一体化工作站中合理采用,极大地提高用户访问数据的安全性、方便性及通用性[9]。具体在研发过程中,程序员只需关注系统的某一层,减少层与层之间的依赖,从而使新旧层的更替相对简化。在标准化、各层逻辑的复用方面也更加有利,后期系统维护时能有效降低维护成本和维护时间。在体会到其便利的同时,也不能忽视某些小的缺陷问题,后期应用时可能会需要修改级联,这就需要从上往下进行修改。例如,在表示层中新增一个功能,为维持分层式结构设计的合理性,就可能需要在业务逻辑层与数据访问层中增加相应代码,故在软件研发时要求开发人员必须尽可能地考虑周全,避免多次修改。
该系统通过一段时间的运行,普遍解决以前二级架构中存在的数据安全性较低、HIS数据库负荷过大、以及客户端访问效率不高等问题[10],在未来的系统运维过程中,会继续完善系统架构,提升医护一体化工作站的易用性。
[1] 许杰, 卢慧哲, 左翼. 如何建立基于虚拟数据库的Oracle数据安全防护体系[J]. 中国数字医学, 2016,11(9):106-108.
[2] 熊玉燕. 医院Oracle数据库性能调优的方法探讨[J]. 中国数字医学, 2016,11(4):70-86.
[3] 刘恩军. ORACLE数据库性能调整与优化研究[J]. 电脑知识与技术, 2014,10(20):29-61.
[4] 岑巍. 数据库优化在海量数据下的研究与应用[J]. 计算机时代, 2015(2):33-35.
[5] 马明祥, 康浩, 陈科,等. 数据库审计在三层架构医院信息系统中的应用[J]. 中国数字医学, 2015,10(1):85-87.
[6] 梁柱森. 基于.NET三层架构的销售管理系统的设计与实现[J]. 电脑知识与技术, 2013,9(24):63-66.
[7] 谷宝磊. 三层架构技术开发WEB应用项目的研究与实践[J]. 电脑开发与应用, 2014,27(9):26-34.
[8] 王莉. 基于B/S模式的工资查询系统的设计与实现[J]. 电脑知识与技术, 2015,11(2):81-84.
[9] 方生. 基于.NET的LINQ to SQL三层架构的研究与实现[J]. 电脑知识与技术, 2014,10(12):43-46.
[10] 王兴强, 侯玉玲, 刘长兴,等. 基于“军卫一号”数据库的DataGuard数据容灾方案设计与实现[J]. 2016,37(5):52-54.