【IT168 专稿】
如今出现的框架技术,像Hibernate和支持JPA(Java持久化编程接口)的框架,能很容易的将对象实体映射到数据库中去。这些技术的出现,让人们重新审视对象数据库。最终对象数据库是否能重振雄风呢?要考虑这个问题,让我们先了解什么是对象数据库。
一、对象数据库简介
20世纪60年代后期面向对象技术在IT界引起了一场空前的革命,到了80年代,面向对象的技术已经成为了IT行业的主流,不同领域的应用提出了许多新的数据管理需求,数据库技术的研究和发展进入了一个新的时代,其中的就将面向对象的思想、方法和技术引入数据库,出现了对象数据库。
在面向对象技术和数据库技术相结合的过程中,基本上是沿着两种途径发展的:一种实现途径是建立纯粹的面向对象数据库管理系统(即OODBMS),这种途径往往是以一种面向对象语言为基础,增加数据库的功能,主要是支持持久对象和实现数据共享,特别是现在JPA(Java持久化编程接口)规范的实现和支持JPA规范的框架的存在。面向对象的数据库不仅在处理多媒体等复杂的数据类型和数据关系时可以做到游刃有余,而且在应用系统开发速度和维护等方面有着极大的优越性。面向对象数据库利用类来描述复杂对象,利用类中封装的方法来模拟对象的复杂行为,利用继承性来实现对象的属性和方法的重用。面向对象数据库系统对一些特定应用领域(例如电信,CAD/CAM和AI等),能较好地满足其应用需求。
第二种实现途径是从传统的关系数据库加以扩展,增加面向对象的特性,把面向对象技术与关系数据库相结合,建立对象关系数据库管理系统(ORDBMS)(注意,在这里使用了“对象关系数据库”这个词,因为此实现既非纯粹的面向对象的数据库也非纯粹的关系数据库,它代表两者的结合),这种系统既支持已经被广泛使用的SQL,具有良好的通用性,又具有面向对象特性,支持复杂对象和复杂对象的复杂行为,是对象技术和传统关系数据库技术的非常好的融合。对象技术和关系技术珠联璧合的优点,吸引着全球数据库厂商竞相研究开发。如何在现有的关系型数据库产品中加入对象技术,即开发面向对象的关系型数据库成为数据库软件厂商竞争的一个焦点。
了解了对象数据库后,你该听听国内专家的一些看法。目前,国内专家对对象数据库主要持有两种观点:
二、对象数据库优势凸现,将重振雄风
目前在市场上已经有大量的面向对象数据库产品:Versant,Objectivity,ObjectStore,GemStone等等。他们为面向对象的开发环境提供了相应的数据存储。这些产品满足了最初的热情,甚至这些产品被期望能够打造一个新的数据库市场——甚至可能成为市场的领袖。
对象数据库最大的性能优势是他们不必像关系型数据库一样在数据使用之前先连接数据。他们就以使用数据的方式存储数据,这就大大提高了性能。对象数据库能够使用缓存技术,这样就使得在请求数据时数据就已经存放在内存中了。对象数据库在抽取数据时几乎不需要进行优化。 开发一个新的系统,处理复杂数据如文档、复杂图表、网页、多媒体等的需求不断增长时,这些需求对象数据库可以很好的满足。
实践中,对象数据库相对于关系数据库有显著的优势:
1 它们能更快的运行事务处理程序
2 它们能够更有效的处理对象
3 它们能够提供更好的开发效率
4 它们能够管理更容易 。
5 使用一个对象数据库是非常快速的一个过程。我发现它们比使用SQL更加直观。另外,我还能够使用非常复杂的数据模型,使用对象数据库很轻松的将它持久化。
面向对象程序设计非常成熟,但是对象数据库还不成熟。我的观点是关系数据库比对象数据使用的时间长久,这就是为什么形成了什么程序设计语言用的都是关系数据库。如果让对象数据库发展这么长的时间,对象数据库也就使用的很普遍的。
关系型数据库有比我们想的更多的局限性。存储和表示一些相当普通的数据结构也是非常困难的。试想一条公交线路——简单,有序的一组站点。关系型数据库以无序的方式存放表,只有创建一个特殊的索引,才能提取有序的数据。对象数据库就没有这个问题,它有有序的数组,不需要索引——这种索引是因为关系数据结构的局限性而要求创建的人工索引。另外,关系数据的性能不是很好而导致失败。通常,是因为关系型数据库物理上存储数据的方法导致的。对开发员而言,为了集合他们所需的数据,他们常常不得不进行这个表与另一个表联接,再与另外的表联接,然后再与另一个表联接。为了提取数据,数据库运行优化程序来判断提取数据的最好方法,然后再提取数据。这样的处理常常要花费很长的时间,结果就大大影响了性能。尽管关系型数据库优化器已经改善了运行时间,但他们还需要比对象数据库更多的处理时间。
所以,使用对象数据库只是一个时间的问题,随着Java语言的流行,和需要处理事务的关系越来越复杂,我们对对象数据库的需求就会越来越强烈,目前正是对象数据库重振旗鼓发展自己的大好时机,对象数据库优势凸现,将重振旗鼓。
三、关系数据库地位固若磐石,对象数据库只不过昙花一现
关系型数据库供应商已经积聚了巨大的动力,并占领了大量市场份额。在标准的SQL接口下,访问关系型数据库的面向对象程序很容易写。相反,多数早期的对象数据完全不提供SQL接口,不适合任何查询应用程序。结果,对象数据库在商业上没有建立坚实的基础。他们在应用领域只创建了一个小市场来管理和存储复杂对象如CAD/CAM,电信业、多媒体、人工智能,模拟金融设备、病人诊治跟踪系统以及科学应用。
关系数据库的地位是不容震撼的,对象数据库只不过是昙花一现而已。具体理由如下:
1 关系数据库关系系统运行很好,它们具有很高的鲁棒性,效率很高,很安全。
2 关系数据库普遍存在,已经称为了一种标准了。
3 将现存的关系数据库系统变为对象数据库将是一个很大的工程,非常耗费成本,并且还没有多大的收益,只不过能让一帮对象对象程序设计的开发者高兴而已。
4 关系数据库系统和标准的SQL一样,很容易学,并且很容易理解。
5 好的面向对象设计的确会带来很大的便利,但是,它们存在一个很陡峭的学习曲线,需要花费几个月的时间,只有核心的程序员才能真正掌握。市面上有许多的面向对象设计的程序开发设计的书本,但是关于对象数据库的书却寥寥无几。
6 关系数据库使用的范围很广泛,几乎到处都能看到,编程语言几乎都能使用它。
7 对对象数据库呼声最高的就是那些喜欢用面向对象设计的开发者,认为面向对象是解决一切问题的真理。另外,还包括高智商,专家们背后推动面向对象数据库的发展。
8 关系数据库模式很好,能和许多的开发语言兼容,经过时间的检验,现在已经很成熟了。如果你没有什么大的缺陷,就不要去抛弃它。
9 面向对象的程序设计,和其它的面向对象语言现在是非常的火。但是,它们就不会持续的很久。因此,当IT行业转移到使用其它的语言的时候,目前的面向对象数据库也将很快的被舍弃了。同时,关系数据库将继续运行,到处能看到它的身影,满足所有人的需求。
10 关系模型是建立在数学的基础上的,对象数据库只是一个抽象的概念,数据从某种原因上说和代码绑定在一起,受到代码的控制。这就它致命的死穴。
11 数学理论提供了通用的符号集和集合运算规则让你实现和使用。一旦你理解了集合和集合操作,将这些应用到具体的关系型数据库就很简单了。面向对象程序设计就没有这样的类比基础了。我们可以类比就只有设计模式了,这说明不了什么。我认为这就是框架如此流行的原因:一些人说:“如果你想完成一件事情,找这么做就行了。”接着他们给一些工具,让你完成这件事情很容易。它简化了分析,提供一些工具让人们去构建。
四、对象关系型数据库将会是出路
关系型数据库把数据存储在简单的两维表中,这是一种表达大量数据的有效方法,而且程序员也易于理解。关系型数据库使用SQL建立了一种标准的数据访问语言。关系型数据库有一个逻辑和物理形式清楚的结构,这种结构使得应用程序对数据结构是透明的,而且在很多商业应用程序中工作的很好。然而,关系理论的基础之一是数据和使用数据的程序能够而且应该是相互独立的。这与对象技术的整个理念是不一致的。对象技术鼓励设计者使用对象而不是表来思考数据。对象和使用对象的方法是不可能彼此分开的。
对象数据库相对于关系数据库有显著的优势:它们能更快的运行事务处理程序 ;它们能够更有效的处理对象 ;它们能够提供更好的开发效率 ;它们能够管理更容易。但是对象数据库也有一个很大的问题:它们对SQL的支持很少。而许多软件工具需要SQL接口,尤其是商业智能应用。甚至有SQL接口的对象数据库也不能创建用于管理商业智能应用所产生的这类查询机制。
所以,我认为应该吸取二者的长处,避免其短处,做到扬长避短,开发对象关系型数据库。这种类型的数据库便能有好的处理性能;复杂数据管理;管理简便 ;快速开发 ;灵活的查询功能 ;标准的数据访问接口;更好地适用于商业智能应用。