Caché是被定义为后关系数据库, 它既提供与RDMBS的SQL相一致的QUERY功能, 又可以 creating Objects. Caché 与目前广泛应用的关系数据库最大的区别是它的面向对象的数据访问层面(data access layer). 它的GLOBAL DATA STRUCTURE 实际上是实行多级树枝样数据存贮, 这与MUMPS完全一致. 举例如下: Patient object 实际是贮存为
<br>^PATIENT(1, “PT AAA”, …)  通过更深的树枝分层, 涵盖病人的姓名,性别,出生日等等..
<br>^PATIENT(2, “PT BBB”, ….)
<br>^PATIENT(3, “PT CCC”,….)
<br>^PATIENT(“B”,”PT AAA”,1)  通过B 或者其他CROSSING INDEX, 来进行侧重于不同DATA的indexing
<br>^PATIENT(“B”,”PT BBB”,2)
<br>^PATIENT(“B”,”PT CCC”,3)
<br>程序可以直接访问GLOBAL DATA FILE. 例如, 想得到”PT BBB” 的DATA, 可以直接用命令 $O(^PATIENT(“B”,”PT BBB”,0)) 得到病人”PT BBB”的IDENTIFIER 2, 然后直接访问^PATIENT(2, NODE获得所需DATA. 因为可以对数据库进行直接访问,就极大的提高了数据库的PERFORMANCE, 因此号称速度最快的数据库.虽然Caché提供了SQL支持,但我觉得外部输入的SQL仍是被转化为MUMPS相应命令进行GLOBAL DATA 的读存, 相比于数据的直接访问, Caché SQL会牺牲系统的PERFORMANCE. CACHE/MUMPS 的多级树枝样数据存贮的设计直到今日仍有其先进性和合理性, 特别是对于HEALTHCARE 领域的应用. 因为MUMPS 本身就是为满足HEALTHCARE INSTITUTION 的需要量身开发的. 上世纪七八十年代, 是MUMPS应用相对广泛的时候, 原因之一是还没有能满足health care 领域需要的成熟的RDBMS 产品的出现. 随着SQL RDBMS 的逐渐成熟完善及强有力的商业推广, MUMPS 渐渐走向沉寂.
<br>因为Caché的优点CacheMan已经提到许多了, 我简单的说几点它的不足:
<br>1.因为Caché是强调面向对象开发方式, 对于RDBMS DEVELOPER来说, 很容易陷入用OBJECT-ORIENTED形式来描述DATA LAYER而意识不到.
<br>2.因为Caché 提供数据的直接访问和修改,它很容易BREAK DATA INTEGRITY. 例如, 可以用 S ^PATIENT(1,”PT AAA”)=”12345” 来直接修改 ^PATIENT(1,”PT AAA”)的DATA, 如不相应的UPDATE CROSSING INDEX, DATA INTEGRITY WILL BE BROKEN. 而在RDBMS, SQL是唯一的进行数据INTERACTING的方法.
<br>3.SQL RDBMS 有许多VENDORS 可供比较和选择, 如果SYSTEM 选择了Caché, 意味着系统将要于INTERSYS 成终身伴侣, 因为INTERSYS是唯一的选择. 而从Caché转移到RDBMS 几乎意味着重作一个新系统.
<br>4.要充分利用Caché, 对MUMPS 的充分了解是必要的. MUMPS 人才的缺乏对Caché的应用也造成了障碍.
<br>
<br>对于有兴趣了解MUMPS 的朋友, 可以不妨VISIT: <a href="http://www.sanchez-gtm.com/" target="_blank">http://www.sanchez-gtm.com/</a>, GT.M 是一个基于LINUX的OPEN-SOURCE MUMPS 免费数据管理平台, 可以从SOURCE FORGE获得, 个人认为它可以与Caché相媲美.
<br> |