O racle X M L D B和D B 2 p ure X M L在
随着医疗信息化发展,医院信息化已从传统的以财务管理为核心的医院管理信息系统向以病人为中心的临床信息系统转变。在这个转变过程中,电子病历软件系统的实施将起到核心作用。从某种意义上说,电子病历软件系统成功与否在很大程度上决定了临床信息系统的成败。
然而,一方面由于病人病情复杂性和多变性,决定电子病历结构的灵活性;另一方面,由于医疗、教学和科研工作对电子病历要求的侧重点不同,要求病历不但要具有良好结构和完整内容,还必须具有对某些关键数据良好查询性能。这种结构的灵活性和对不同类型数据要求的多样性,对基于传统关系型模型的数据库管理系统软件提出强有力挑战。
1 Oracle XML DB和DB2 pure XML概述
随着计算机技术发展,XML技术以其结构和内容的自我定义和自我描述等特性成为电子病历实现的主要技术手段。但是随着大量基于XML电子病历的产生,如何对这些XML文件进行高效管理,如何提高对海量XML病历文件的查询性能,如何使XML病历文件和已有关系数据进行良好融合,成为摆在各大数据库软件开发商面前一个严峻的挑战。在XML数据文件管理以及如何将XML数据和已有的关系数据进行良好的融合,建立一个可同时管理关系数据和XML数据的混合性数据库方面,Oracle公司和IBM公司都提供了各自解决方案,就是分别以Oracle XML DB和DB2 pure XML为代表的数据库管理系统。它们都采用了W3C (World WideWeb Consortium)的XML数据模型,都提供了对XML Schema和XPath等技术标准的支持,都可以对关系型数据和XML数据提供良好支持。但是,它们在设计和实现方面还是存在一定差别。DB2 pureXML中XML数据是以一个列的形式存储在关系表中,这种混合数据库采用两种不同的解析方式来处理SQL和XQuery,即一个编译器可以同时处理两种语言,各种应用可以通过DB2 9的编译器和优化器同时管理关系数据和XML数据。文中图表显示DB2pure XML框架,见图1。Oracle XML DB是将XML数据转化为SQL对象,利用关系数据的处理方法来处理XML数据。XML数据可以存储在XMLTYPE表中,也可以存储在含有XML—TYPE的数据列的表或者视图中。对于有些基于Schema的XML数据可以通过Schema映射到相应的表中,对于有些XML数据可以以CLOB字段形式存储。图表显示了OracleXML DB的框架,见图2
本文将从存储、建立索引和查询3个角度来对两个XML数据库在电子病历的实现方面进行对比。
2 两种数据库存储机制差别明显
2.1 DB2 pure XML存储机制相对简单
DB2 pure XML就是完整地保存XML数据,整个XML数据存储在数据表中,XML数据对象是独立于其父表单独存储的,对于XML数据类型的列的每一行都有一个XML数据标识符(XML DataSpecifier(XDS))存储在表中。XDS中存储着如何访问硬盘的XML数据的信息?。图3显示了各种结构之间的关系。如执行SQL语句:
CREATE TABLE OPERATE (ID INTEGER NOTNULL,DOC XML);建立手术记录表(Operate)其中DOC是XML数据列,用于记录手术记录。2.2 Oracle XML DB基于对数据要求的不同采用3种不同存储机制
(1)对于有些数据,只需要保存良好的结构和数据的完整,这种数据就以CLOB的形式进行存储。
(2)对于有些数据,对查询的性能和更新的力度要求非常高,和传统的关系型数据类似,这种数据需要先定义XML数据的模式XML Schema,在Schema中定义每个数据的数据类型,然后注册这个Schema,根据注册的Schema将XML数据拆分映射到对应的关系数据表中,采用完全结构化的存储机制。
(3)对于有些数据,其中一部分满足上述第1种情况,而另一部分满足上述第2种情况,是一种半结构化的混合数据,这种情况采用的机制和第2种方法类似,就是将非结构化部分的数据类型定义为CLOB 。
例如:创建一个半结构化的手术记录的XMLSchema。其中手术名称、麻醉方式、诊断名称、手术时间和手术医生,这些都是比较重要的需要结构化存储的数据,采用和结构化数据相同的SQL映射方式。然而手术过程,只是记录手术的过程,是不需要结构化的数据,其SQL映射属性xdb:SQLType为“CLOB”,表示这部分的XML数据以非结构化的形式存储。
综上所述,在数据存储方面,DB2 pure XML和Oracle XML DB各有特点,采用DB2 pure XML的存储机制,XML文档的内容和结构可以更加灵活,医生可以根据病人和病情不同设计不同的内容和结构的病历。而Oracle XML DB虽然是基于已经注册的Schema的,结构相对固定,但是对于不同的数据采用了不同的存储方式,特别是对于那些对医学科研有重要意义的数据采用结构化的存储方式,理论上在查询等方面具有更好的性能。
3 建立索引
从海量存储的XML病历文件中快速检索出满足一定条件的病历,为临床科研和教学工作服务,这是电子病历比较重要的特点之一。通过建立索引的方式,可以提高XML病历的查询性能,DB2 pureXML和Oracle XML DB都为XML建立索引,提高XML文件的查询性能方面提供自己的解决方案。(1)DB2 pure XML支持3种XML相关索引:XML域索引,XML列路径索引和在XML列上创建索引,前两种索引是在XML文档插入数据库中时系统自动建立的,第3种索引是根据具体情况对查询的关键数据进行索引。DB2采用了基于Xpath标准的XMLPATrERN关键字来创建索引?。如执行下列SQL语句:CREATE INDEX OPERATIONINDEX ON OPER.ATE (DOC)GENERATE KEY USING XMLPATFERN‘/Operation/OperationName’ AS SQL VARCHAR(200);
就是在手术表(OPERATE)上的手术记录XML列(DOC)上的手术名称上面建立索引。
(2)Oracle XML DB也可以建立索引,一般是对于结构化的数据建立索引,采用和关系数据库类似的形式。如执行如下SQL语句:CREATE INDEX OPERATIONINDEX ON MED— —OPERATION (XMLDATA. “0PERAT10N”);可以对手术表(MED— OPERA.ON)上的手术名称建立索引。对于非结构化的数据,还可以利用基于Xpath标准的一些函数(如:Extract)等建立函数索引。
4 查询
查询方面,两者都对关系数据查询和XML数据查询进行很好结合,可以对两种数据进行混合查询。
(1)在DB2 pure XML中,提供了Xquery的查询,利用基于Xpath等标准的函数进行查询,查询中利用了DB2的“FLWOR” (for,let,where,or—der by和return)表达式。For表示以绑定的一个变量表示一个序列,Let是为变量进行赋值,Where表示利用各种条件对结果进行过滤,Order by表示排序,Return 表示返回的结果集合。可以利用SQLQUERY函数在Xquery中插入SQL语句进行查询。也可以利用XMLTable函数,将Xquery查询中的XML数据转化为关系数据,采用关系查询语法和其他关系数据进行混合查询? 。如执行下列代码:SELECT inpatient. id, name,home, operationFROM inpatient, OPERATE, XMLTABLE ( ‘f0r$oper in $a/Operation return $oper’passing OPER-ATE.doc as“a”COLUMNS operation varchar(200)path ‘OperationName’ as T where inpatient. id =1 and inpatient. id=operate. id将operate表中的XML文档利用XMLTable函数转化为关系数据和病人表(Inpatient)进行联合查询。
(2)Oracle XML DB中针对不同类型的数据,提供了不同的查询方法,对于结构化的数据,可以利用XMLDATA的属性进行类似结构化的查询和利用extract(),extractValue (), 和existsNode ()等基于Xpath的函数,对于非结构化的数据只能利用基于Xpath的函数进行查询。当然也可以将对XML查询和对关系数据查询混合起来进行使用。执行下列代码可以执行类似结构化查询,可以对病历号和诊断进行查询。Select t.XMLData. “PatientID”as病历号,t.XMLData.“Diagnose”as诊断from operation t执行下列代码可以对非结构化数据进行查询。Select extractValue (e. record,’/work/doc-tor’) Doctor, extractValue (e. record,’/work/date’)datetime from work e where e. patient— id =‘ZY1001’综上所述,Oracle XML DB和DB2 pure XML都是可以将关系型数据和XML数据进行混合管理的数据库软件。都可以在管理传统关系数据的同时,管理XML数据。它们之间最大的区别在于OracleXML DB可以针对不同应用的需要把XML数据转化为传统的关系数据,利用传统关系数据来完成各种数据操作,这样的机制具有更强的针对性。而DB2pure XML是严格地按照层次结构来管理XML数据的,这样的机制具有更强的普遍性和灵活性,两者都可以作为电子病历的数据库软件,但是究竟哪一个更胜一筹,还需要通过实践来检验。
参考文献
1 DB29pureXMLGuide[EB/OL).http://www.redbooks.ibm.com/.
2 Introducing Oracle XML DB [EB/OL].http://download— east. oracle. com/docs/cd/B10501一O1/appdev. 920/a96620/xdbO1 int.htm#1047 17 1.
3 Using Oracle XML DB [EB/OL].http://download—east. oracle. com/docs/cd/B10501— 0l/appdev. 920/a96620/xdb03usg.htm#1656.
- 1我院电子病历系统功能与应用体会
- 2国电子病历档案发展坝状
- 3护理电子病历的设计和质量控制
- 4浅谈电子病历管理的现状与发展
- 5实施his系统门诊医生工作站中的流程再造
- 6中小型医院HIS系统更换的前期准备与体会
- 7电子病案模版客户定制技术研究
- 8电子病历应用中的问题及需求
- 9ISO质量管理和病历质控系统ISO质量管理和病历质控系统
- 10医院信息管理系统在医院管理中的作用
- 11PDCA循环在妇幼保健院电子病历系统中的应用
- 12只有16%的医生通过电子方式转诊病人
- 13探究病院客户关系治理系统的概念和意义
- 14新一代卒中电子病历系统的建立与应用
- 15国内医疗IT厂商应以信息技术推动新医改
- 16电子病历“有效使用”的原则设置
- 17门诊医生工作站的应用效果
- 18医疗信息系统的构建
- 19医院信息管理系统分析
- 20无线网络的美丽新世界
- 21电子病历系统设计及病历交换
- 22浅析电子病历内涵质量的主要影响因素与对策
- 23区域医疗信息共享平台研究与实现
- 24门诊收费管理系统现状
- 25武汉启动“智慧医疗工程”
- 26IT疗信息化
- 27试论门诊医生工作站上线
- 28结构化电子病历与临床科研
- 29电子病历是医院管理和增加竞争的必然趋势
- 30电子病历系统功能规范(试行)
成都公司:成都市成华区建设南路160号1层9号
重庆公司:重庆市江北区红旗河沟华创商务大厦18楼