新闻中心

EEPW首页 > 医疗电子 > 设计应用 > 基于MML电子病历存储模型研究

基于MML电子病历存储模型研究

作者:时间:2012-08-21来源:网络收藏

设计实现对象一关系数据库时,每个对象都要考虑采用何种类型,是否使用用户自定义类型(UDT)。对每个对象可能有的查询/操作认真分析,据此设计用户自定义函数(UDF)。例如,通过名字Bob Smith查询病人电话列表,下面列出对象一关系的SQL语句:SELECT o.phoneFROM oo.person o WHERE o.hasName('Bob','Smith');这里必须为oo.person对象设计该hasName自定义方法,不然将无法进行此查询。在对象一关系模型中需要设计大量自定义方法。在传统关系型模型,该查询可以通过下列语句实现:SELECT o.phone FROM person p,person-name n person-phom o WHERE n.name='Bob Smith'AND n.id=p.id AND o.id=p.id;需要连接3个表。

对象一关系模型中表的查询/操作比传统的关系型模型简单直观,但是需要编程实现大量的自定义函数。此外由于N∶M关系是通过在对象中添加嵌套表或数组实现的,设计人员必须认真考虑应该将其添加到该关系相关的哪个对象上。

4.2 时延分析

对两个均包含100份的对象一关系数据库和传统关系型数据库进行比较。选取下面4组典型的数据库操作分别在2个数据库上运行,以比较性能:

(1)使用简单搜索规则对单个病人进行数据检索,例如通过名字检索病人数据;

(2)多病人数据检索查询;

(3)检索 emr tab表数据(不是病人数据);

(4)增、删和更新数据。

使用Oracle9i实现2个数据库,共进行13组操作,每组运行5次取平均时间。实验结果表3所示,对象一关系模型包含2列,2个版本的差别在于版本二只在必须的情况下使用用户自定义函数(UDF)。Q1到Q3属于分组一,在两种数据库中都没有使用UDF。Q4到Q6属于分组二,分别对oo_person_tab,oo_organization和oo_表进行多病人数据检索查询。以Q4为例,该查询需要扫描整个oo_person_tab表以便执行hasName()。Q4的时间复杂度为O(n)。使用类似hasName(),hasID()等UDF的查询依赖于表的行数。关系型数据库采用优化技术,时间复杂度为O(log(n)),对对象一关系数据库的优化由于UDF非常复杂,难于优化。Q7,Q8和Q9属于分组三,在对象一关系数据库的2个实现中也同样发现,版本二由于只在必须时使用UDF,执行时延得以大幅缩短。分组四同样是使用UDF的缘故,执行效率传统关系型数据明显高于对象一关系型。

5 结 语

设计层次上,对象一关系模型因为表的数量比较少而显得比较简洁,但设计的过程不如关系型模型直观,设计人员需要认真考虑对象间的关系应当如何表示。实现层次上,对象一关系模型需要提供支持多值属性和关系的搜索方法的具体实现,可以使用嵌套表或数组表示;关系型模型则采用独立表,不需要设计人员编写代码。

查询和执行方面,在对象一关系模型上的查询表达式简洁直观,但需要事先编程实现对象方法。传统关系型模型的数据库操作效率要高过对象一关系模型。综上,因为基于MML的系统的原型非常复杂,使用对象一关系型模型可以简化数据库的设计和实现,缩短开发周期;同时可以结合传统关系型的优点,只在必须用用户自定义方法的时候才使用UDF,一方面可以提高执行效率;另一方面可以尽量避免因为没有提供必要的UDF而不能执行灵活多样的数据库查询操作。

更多医疗电子信息请关注:21ic医疗电子频道


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭