信息技术平台的选择常常是建立或重新建立应用系统时的关键问题,而数据库正是其中需要作出选择的最关键的平台。目前,数据库技术又恰好处于显著变动的状态之中。关系数据库管理系统曾经处于技术主流而独领风骚,但是这种传统的数据库管理系统因采用两维数据模型而存在着本身固有的约束和限制,难以适应当今变化剧烈的业务需求和新技术发展。 一种更新的被誉为数据库新分水岭的后关系型数据库管理系统(Post-Relational Database,PRDBMS)已经出现和兴起,成为取代传统关系数据库的途径之一。
1. 数据库的演变
从数据库发展历程来看,数据库技术的演变可划分为几个阶段:
1. 技术为中心的阶段-在二十世纪七十年代,DBMS的实现方案都集中注意力于能提供联机的对信息的访问技术,着眼于获得处理效率,和尽可能最少使用价格昂贵的计算机硬件。那时,能够为特殊硬件平台优化的那些由厂商专卖的即非开放式的DBMS,曾经是早期阶段的唯一可能做出的选择。
2. 用户为中心的阶段-在二十世纪八十年代,硬件的价格下降和个人计算机成为广泛可得的机型。与此同时,用户的信息需求显著上升而应用软件的开发生产效率成为关键的成功因素。那时,带有易于理解的简单的两维数据模型的关系型数据库管理系统,成为服务于用户查询和满足这类需求的大量报表生成的基础,并得到了广泛采用。
3. 网络为中心的阶段-进入二十世纪九十年代后,大量图形化用户界面GUI被应用系统所普遍采用和Internet网的得到迅猛的发展,应用系统的架构从采用C/S结构转变为以 Web应用为主的处理阶段,随着经济向全球化发展,现代化企业为了要在竞争中取得成功,它们的业务活动已经和日益增加的复杂事务交易应用紧密地联系在一起。在企业级中的运作活动已涉及巨大数量的数据的采集和利用,越是有能力将更多的用户连接到更多的应用系统功能上去,就越能取得更大的竞争上的优势。以往的关系数据库系统本身具有的限制,使它难以适应建立以网络为中心的企业级快速事务交易处理应用的需求,而后关系型数据库技术能为网络为中心环境提供所需的性能,扩展性,互操作性和安全性。
进入二十一世纪后,面对人类社会向知识经济和信息化社会方向发展,和信息技术例如Internet以前所未有的步伐向广度和深度发展,数据库技术也面临着如何适应信息爆炸的挑战问题。由于商业和业务变化的无情步伐,如 竞争加剧、全球化、和技术创新 , 已经不可抗拒地增加了各个企业和机构面临的复杂化程度。信息技术和应用系统面临着要有力支持Internet网络、改进业务流程、和日益增长容量的业务信息及动态变化等巨大挑战。
随着信息领域飞速的技术进步,数据处理不仅在数量上要求越来越大,而且在质量上要求也越来越高,数据库技术必须更好适应信息化建设对信息技术的新需求,数据库所管理的数据已发生了根本的变化。这一变化给数据库技术带来了很多与以往用关系数据库时不同的挑战,要求数据库管理的
数据对象已不再仅限于文本数据等简单的数据类型,而需要描述和保存大量多媒体非结构化的复杂数据和数据间关系。此外,随着热门网站访问人数的激增,对数据库本身的存储机制、大量并发用户的使用需求、存储空间使用的效率、以及数据完整型和安全性等方面都提出了更高的要求。而这些都不是传统关系数据库中使用的二维表简单结构和其性能所能满足的。关系型数据库依据的是把数据表示为简单的两维模型,即表示为行与列的记录来进行存储处理。显然由于受到产生它时的历史条件的限制,只是一种适合于对简单数据存储处理的技术,而存在着难以克服的局限性。虽然因为它比较简单和易于理解,以往得到过大量采用。但是这种简单模型不适合于当今世界复杂数据时的使用已显而易见。
关系型数据库管理系统本身固有的局限性存在于以下三个方面 :
1.数据模型上的限制-关系数据库所采用的两维表数据模型不能有效处理在大多数事务处理应用中典型存在的多维数据。其不可避免的结果是导致在复杂方式下相互作用表的数量激增并且不能很好提供模拟现实世界数据关系的模型。关系数据库由于其所用数据模型还会造成存储空间的海量增加和大量浪费,并且会导致系统的响应性能随之不断下降。在现实世界数据中有许多类型是关系数据库所不能很好处理的,特别是对于"复杂"或"丰富"的数据:文档,多媒体(图象,话音,影像), 空间的数据和地图,时间序列数据,Web页面,非结构化数据等等更是如此。许多业务应用需要像这样的复杂数据,而关系数据库管理系统是难以装入,管理和备份这些复杂数据的,在访问它时也难于提供能够接受的性能和灵活性。
2.性能上的限制-为静态应用例如报表生成而设计的关系型数据库管理系统并不是针对高效事务处理而优化过的。其结果是某些厂商的关系型数据库产品虽然可以在为它的关系数据库产品特别开发的考机测评程序上能表现出较好的性能,但是对于GUI和Web事务处理的真实世界实际环境中其性能却往往并不能得到令人满意的结果。除非你在价格昂贵的硬件上不惜多余投资才能对关系数据库存在的性能弱点而有所弥补,但这并不能从根本上解决问题。用关系数据库的两维表数据模型勉强处理在大多数事务处理应用中典型的多维数据,其结果往往是建立和使用了大量的表,却仍然很难建立起能模拟现实世界的数据模型。并且在数据需要作报表输出时,又要反过来将已分散设置的大量的两维表再利用索引等技术进行表的连接( Join table)后才能找到全部所需的数据,这就势必会影响到应用系统的响应速度,使其不能得到高速性能。
3.扩展伸缩性上的限制-关系数据库技术在有效支持应用和数据复杂性上的能力是受限制的,人们不难发现关系数据库的原先依据的所谓规范化设计方法,对于那些不得不使用大量的两维表才勉强实现的复杂事务处理数据库系统的设计和性能优化来说已经几乎是无能为力的。此外,高昂的开发和维护费用也都是那些只是最适合用于报表输出的关系数据库应用系统在设计和运行中所不可避免的结果。而且,关系数据库的检索策略,如复合索引和并发锁定技术,在使用上会造成复杂性和局限性,这也使得在要求由关系数据库来为Web应用和联机事务处理(OLTP)应用等系统提供所需要的伸缩性和健壮可靠性时会感到特别困难。
二.后关系型数据库PRDBMS的脱颖而出
如上所述,随着信息技术产业进入上世纪九十年代后半段和新世纪来临之后, 关系数据库数据模型在用它来处理复杂的数据类型,复杂的数据关系和多种访问方法上存在着能力限制已开始为人们所认识。
虽然传统的关系数据库能良好适合于处理相对简单的事务交易,但是却不能胜任含有来自许多不同表格数据的复杂事务交易处理。因此近年来关系数据库由于不能从根本上摆脱它固有的弊病而陷入低迷状态。
由于Internet用作商业平台而提出的新需求已经成为需要进行数据库技术变革的主要催化剂。许多数据库应用开发者已逐步认识到关系数据库的限制,并且大多数在寻找适合的替代方案。
但是变革并不是容易实现的,那些试图在保留关系数据库原有的两维表数据模型架构上加以一些修补的办法已被证明不是一个能根本解决问题的好办法,有的走了网络,有的甚至走进了死胡同。例如对于前几年出现的通用数据库(Universal Database)和对象-关系数据库(Object-Relational Database)的解决方案,专家们认为这些所谓的通用数据库和企图在关系数据库架构上再增加一层对象层的所谓的对象-关系数据库,仍然是把关系数据库引擎保留作为它们的核心,并且由所加的对象层访问数据时还是需要进行转换映射(图1)。因此存在着不足以满足处理复杂数据关系的需求和难于更好实现与数据访问有关的效能的问题都已变得越来越明显。因此国外专家们已明确指出:靠增加一些模块到一个已经很复杂的关系数据库上去的途径是一个基本上属于误导的想法。

(图1 对象-关系数据库存在的不足)
我们知道,数据库技术的一个基本目标就是要找到一个恰当的数据模型来表达它所管理的对象。为了解决用关系数据库不能有效表达和管理复杂数据的问题,我们必须寻求更好的采用更适合管理复杂数据的数据模型来适应新的变化。当前,我们必须寻求新的解决办法。在脱颖而出的新的后关系型数据库管理系统中,采用的是彻底的做法,它根本不把传统关系数据库中的两维表模型引擎继续用作核心部件,而采用了更现代化的多维模型作为数据库引擎的做法,并且,这种以稀疏数组为基础的独特的多维数据库架构是从已成为国际标准的M数据库语言基础上继承和发展的,是已积累了实践经验的先进而可靠的技术。它提供了一种实际可行的解决方案,能够更加适合当前用户的真实需要。用对象访问方式或者用SQL方式访问数据都可以直接对数据进行访问。(图2)

(图2 后关系数据库的统一数据架构)
Caché 已被公认为是一个令人激动的发展,因为它代表了一种作为数据库技术分水岭的新型的后关系型数据库。
它突破了常规关系数据库的性能限制,实现了以网络为中心时代所需的高速存储性能、可伸缩性、和能快速开发和便于维护等所期望的特性。
它的独特的体系结构提供了一个高度可伸缩的能够直接支持数以千计同时用户的数据库引擎,并且支持多种语言(SQL、Java、C++、ActiveX),完善的分布式高速缓存、复杂的交易处理、和灵活的既可存储到Caché 也可存储到其他商品数据库去的对象存储。
权威分析机构IDC等确信Caché 建立交易型的Web和对象应用提供了一个引人入胜的取代对象-关系数据库的方法。
三.InterSystems的旗舰产品Caché
InterSystems的旗舰产品Caché 是一个与众不同的多维数据库产品,能提供三种数据存取访问方式: 对象,SQL和多维数组。另外,Caché 在建立大规模可伸缩的B/S(Browser/Server)结构的Web应用和C/S (Client/Server)结构的数据库应用软件的技术上有了很大的突破。在Caché 产品中为我们提供的不仅是高性能的多维数据库管理系统、而且包括应用服务器和面向对象及面向Web应用的开发平台和工具,它是一个三合一的相当完美的产品(图3)。因此,Caché 能够更好适应信息经济和Internet网络时代对于数据管理提出的新需求。
(图3 Caché 的体系结构示意图)
在激烈竞争的电子商务世界中,应用程序的可扩展性、快速开发能力和高效率往往是获得成功的保证。 Caché ,来自InterSystems公司的后关系型数据库,是一种大规模可伸缩延展的,具有高性能的数据库, 同时还具有世界一流的Web技术,这些都为复杂的数据库和网络应用软件的快速开发和运行提供了必要条件,成为一种极好的选择,尤其对于那些需要高速事务处理的应用更是如此。 另一方面,Caché 是一个非常开放的系统,它能够与很多现代流行的开发工具和技术彼此兼容并蓄和协同工作,所以当开发员要构建一个快速应用时,他们能够在熟悉的编程和开发环境中工作。
关系型数据库把数据表示为简单的两维模型,即表示为行与列的记录来进行存储处理。显然由于受到产生它时的历史条件的限制,只是一种适合于对简单数据存储处理的技术,而存在难以克服的局限性。虽然因为它比较简单和易于理解,以往得到过大量采用。但是这种简单模型不适合于当今世界复杂数据时的使用也是显而易见的。Caché 采用的是独特的多维数据结构,这不仅可以真实反反映和更好描述现实世界的复杂数据及其之间的联系,同时也使数据的存取能更快实现。Caché 灵活地提供了三种方式来访问数据: 1) 对象访问;2) SQL访问;和3) 直接对多维数据数组访问。并且三种访问方式能够在完全并发的情况下访问同一数据。 这两个最主要的因素即多维数据结构和多种数据库访问方式构成了后关系型数据库的基础。
所有数据在Caché 数据库中是用一种有效的稀疏数组方式的多维数据体系结构来存储的,事实上,Caché 举世无双地提供了统一的数据架构,成功融合了对象和SQL两大技术,使你可以用你任何喜欢的方式来设计数据:表,对象,或者多维数组。并且允许用上述三种访问方式之一对数据进行存取访问,包括以对象访问方式、以SQL访问方式、和以直接访问多维数组的方式进行检索(图4)。这使得开始被定义为对象或者关系表的数据还能够通过其他方式来访问。例如开发人员可以用对象或者表来定义数据,然后用对象,关系表,多维数组三者中的任何一种方式来访问数据。这一点对于迁移原有的关系型数据库的数据时特别有用,因为已经定义过的数据不必经过重新定义就可以导入Caché 数据库中使用。

(图4 Caché 提供灵活的三种存取访问方式)_
后关系型数据库技术和关系型数据库技术相比较,高响应性能即系统效率是它的一大优势。现实世界的数据通常是非常产复杂的,但在过时的关系型技术下,开发受限于简单的行列数据模型。这种复杂性就不得不转嫁到应用程序的设计上,使得应用程序必须做很多表操作,处理一个事务要执行很多次的表连接。由于在关系型数据库之上的事务处理是一项庞大的工作,这就使得关系数据库的应用系统变得效率低下。
相对而言,Caché 的面向对象多维数据结构能更好地描述真实世界。也具有能节省硬盘存储空间和能提供高速响应性能,根据Caché 用户实际使用后的反映来看,采用Caché 后存储空间有可能节省多达2/3,而基于Caché 的应用程序比原来基于关系型数据库的应用程序运行有可能快20倍。
Caché 的其他优势包括很好的可伸缩扩展性和快速进行应用程序开发的能力。 例如Ameritrade公司(http://www.ameritrade.com/),是美国一家在线证券交易经纪人公司,它每天在Caché 数据库为基础的应用系统上进行的数据库访问量高达90亿次。又如波士顿地区的Partner's Healthcare公司(http://www.partners.org/)开发运行了特大型的医院信息系统, 它在哈佛大学附属的一所有医教研任务的医院中开发和运行的这套大型HIS系统,能支持医院内6000-8000个并发用户的日常工作。而且在此基础上连接波士顿地区6家医院及其他卫生医疗机构构建而成的区域性集成医疗提供网络上支持着30,000个以上的用户群,所有的临床关键应用系统和程序都是成功开发和运行在Caché 后关系数据库上的。
高性能和大规模延展性是相辅相成的。Caché 能为OLTP联机事务处理提供高性能速度, 因此它就能够执行更多的事务交易,为更多的并发用户服务。并且在数据存储结构上Caché ,为更多的并发用户服务。并且在数据存储结构上Caché 比传统的型数据库更紧凑, 使得磁盘的空间利用更加有效,这样就能有更多的空间用于扩展。
开放性是Caché 具有快速开发能力的关键。开发员能够在熟悉的环境中工作, 使用他们所熟悉的工具。习惯于关系型系统的开发员可以把数据模型设计为表, 然后使用嵌入的SQL访问它。那些喜欢对象模型的开发员也可以按照他们的习惯做。 Caché 对象能够封装为 Java, ActiveX, 和 C++对象,然后可以使用这些技术的工具来使用它。例如你可以通过.Net/COM/Active来连接Caché 对象;你也可以将Caché 数据库内定义过的类定义导出成为对应的COM、C++、Java类或EJB。
Caché 包括了一个先进而成熟的完全对象模型,包括封装,多态,多重继承,结果集和BLOB,并且能够与对象建模工具如和 Rose软件接口。 更重要的是,Caché 的三种数据访问方式(对象,SQL,多维访问)直接与Caché 中的数据进行交互。 这样就没有额外层次的处理,提高了数据库性能。
在Caché 中集成有功能强大的Caché Studio工作室开发环境和工具(图5)。

(图5 Caché Studio工作室视窗)
在上述Caché Studio视窗中你可以看到四个组成部分:
1. 类编辑器(Class Editor): 显示和允许对一个类的定义的文字表述进行编辑。同时还提供和类编辑器相似的程序模块编辑器和 CSP 编辑器的视窗界面.
2. 项目视图(Project View): 以树型形式显示当前项目的内容。
3. 类检查器(Class Inspector): 显示和允许对用于类定义的各种关键字进行修改
4. 输出窗口(Output Window): 显示从Caché server 服务器回送得到的输出 (例如在类的编译期间产生的各个消息。
除了显示上述内容的一些视窗以外, Caché 还包含有许多帮助进行公共任务的向导(Wizards),这些向导包括:
1. 新建类向导(New Class Wizard):用于建立一个新的类的定义。
2. 新属性向导(New Property Wizard): 用于在一个类的定义上增加一个属性。
3. 新方法向导(New Method Wizard): 用于在一个类的定义上增加一个方法。
4. 关系向导(Relationship Wizard): 用于在多个类定义之间增加或修改一个关系。
5. Web 页面格式向导(Web Form Wizard): 用于建立在CSP页面中和一个Caché 对象联系在一起的HTML格式。
6. Caché Activate Wizard: 用来建立用于Active组件的 Caché Activate wrapper classes类.
利用Studio和Caché Object Script 脚本语言,你就可以方便地完成创建各种Caché 数据库应用和Web应用系统的任务,Caché Studio 工作室是一个可视化的创建、调试、测试Caché 应用的高效的开发环境,它能用来快速方便地建立采用Caché 的数据库应用和和Web应用系统,和能消除很多开发过程中的繁重工作。为此它提供了许多特性来帮助快速开发应用软件,例如:
1. 提供编辑能力,可以在同一个集成好的环境中编辑Class类定义、CSP标记文件、和Caché ObjectScript 语言编写的程序模块。
2. 提供带有对语句语法以颜色表示和具有核对检查能力的完美的文本编辑器,适用于Caché ObjectScript, Basic, Java, SQL, JavaScript, HTML, 和 XML。
3. 通过提供大量各种Wizard向导,Caché 使得能够快速开发基于浏览器的复杂数据库应用成为可能。
4. 支持各个开发团队小组对共同的应用源代码山进行开发工作。
Caché 后关系型数据库为应用系统开发人员提供了多样化的可选择性,允许程序员使用任何他喜欢和熟悉的开发环境来编写用户界面和业务逻辑,通过使用映射、对象服务器,基于Caché 的应用程序可以和使用其他技术如如Java、EJB、COM、.Net的程序进行交互。并且Caché 提供了与对象建模工具(如Rose)以及网页设计工具(如Dreamweaver)的高效连接,使得使用这些工具的开发者能够非常方便地创建基于Caché 后关系数据库的应用。例如任何Caché 的类可以被映射成为Java类或者EJB,通过使用完全基于Java的驱动器,JDBC也可以进行对Caché 数据库的SQL访问。许多用Java开发的程序员喜欢使用面向对象的数据库。而大型的分布式系统也可能在应用服务器的管理之下从EJB形式中获得数据共享和功能的好处。Caché 支持所有上述做法(图6)。

(图6 Caché 中Java应用与数据库连接的多种途径)
Caché 优化了Web应用开发。高性能和大规模延展性无疑使Caché 成为构建Web应用软件时的一种有吸引力的选 择。 但是更重要的是,Caché 内置Web访问棗使用快速Web服务API,浏览器能够连接到 Caché 数据服务器上。 另外,Caché 通过简化Session会话管理和允许用户使用熟悉的网页开发工具,进一步提高了网络开发能力。
和其他Web应用网络结构不一样的是,Caché 提供了一种Caché Server page技术,这种Caché Server page页面是作为对象在Caché 服务器上运行的,靠近它们要用的数据。 通过高速内部处理程序,Caché Server page页面是和数据服务器紧密相联系的,因此提高了效率。 Web服务器可以不再进行大量的耗费资源的业务逻辑处理,延展性也得到提高。 而且,由于所有的应用程序都放在数据服务器上,基于Caché 的应用程序很容易进行客户化调整和维护。
在Caché Server page中还包括标准HTML或XML标记,因此运用任何网 页开发工具或你熟悉的文本编辑工具都能很容易地开发和调整页面。 而且通过整合Caché Application Tag (CAT) 或使用Hyper-Events即超事件可以使得功能大大增加。
Caché Application Tag标记的工作原理和HTML标记一样,除了标准的文本,它们还能在Caché 数据服务器和/或浏览器上执行函数。另一个优点是它们允许进行扩展,因此开发者能方便地创建他们自己的服务器页面以满足他们应用程序的特殊需要。 利用它能提供开放的Web Services方法和同时自动生成对应的WSDL文档。Caché 能够自动按照类的定义生成XML文本以及对应的DTD文档。
由于Web访问(Web Services) 是一种引人关注的在Internet网上共享应用功能的方法。为此在Caché 给予了特别重视。Caché 的Web 服务,是从Caché 系统本身提供的%SOAP.WebService类继承后,将会由Caché 自动地生成用于该服务的WSDL的描述符,当它被引用后就会回送出符合SOAP协议格式的XML文档作为响应。用这种办法,任何Caché 的对象方法都能够发布成为一个Web Service(图7)。已存在的Caché 的各种应用可以成为可用的Web服务。并且可以特别快速地快速开发一个新的Web服务应用。

(图7 Caché 能自动生成和发布 Web Services)
Caché 数据库及其开发环境的优点标志之一是它的开放性和易于与其他技术的集成。例如.NET是来自微软公司的一项新的应用开发环境和运行环境。Caché 提供了将Caché 连接到.NET客户机上去的许多办法。那些希望在 .NET 框架上进行开发者会发现 Caché 与.NET之间是无缝连接的,并且为他们的.NET 应用提供了杰出的性能和可伸缩性。
所有的Caché 应用网络能力都能得到快速并可延展的Caché 后关系型数据库的支持。 这也是 Caché 有利于所有事务处理应用程序开发的原因所在。Caché 是一种用来开发和配置基于网络应用程序的、新的、高效率的战略性平台。
Caché 提供的分布式企业缓冲协议(Enterprise Cache Protoclol,ECP)(图8)是又一项高性能和高扩展性的技术。Caché 通过ECP自动设置的缓存,能大大降低数据服务器和应用服务器之间的网络通信吞吐量,并且在客户端使的将经常是本地的缓冲存储器中的数据,因而这都将有利于使得基于Caché 的应用系统能够获得快速的响应性能。通过ECP,能够使得分布式系统中的计算机能共享彼此的数据库。通过ECP还提供了提供配置的灵活性,使内部网上的每一台装有Caché 的系统都可以作为其他系统的应用服务器或者数据服务器使用。要增加或变动应用服务器或数据服务器的数量或位置,只需要在逻辑命名空间中声明,便可以动态地进行配置。而不需要中断系统的运行。并且ECP对于应用程序是透明的,在单个服务器上运行的应用程序不需要作任何改动就能在多服务运行在多服务器环境下。

(图8 分布式ECP能帮助建立和管理多地点的高速缓存)
Caché 还独一无二地提供了事务处理型的位图索引,通过提升数据仓库中实时数据的查询效率来大幅度提高进行复杂查询的能力。它可以利用多维数据机构执行位图索引,提高其查询速度,同时显著降低占有的存储空间。在一个在线事务处理数据库中搜索成百万的记录时,用时可以不到一秒。
更为出色的是Caché 数据库系统的管理是相对方便易行的。数据库和