关系数据库系统与面向对象数据库系统各自的优缺点

①关系数据库系统的优点

a.灵活性和建库的简单性:从软件开发的前景来看,用户与关系数据库编程之间的接口是灵活与友好的。目前在多数RDDMS产品中使用标准查询语言SQL,允许用户几乎毫无差别地从一个产品到另一个产品存取信息。与关系数据库接口的应用软件具有相似的程序访问机制,提供大量标准的数据存取方法。

b.结构简单:从数据建模的前景看,关系数据库具有相当简单的结构(元组),可为用户或程序提供多个复杂的视图。数据库设计和规范化过程也简单易行和易于理解。由于关系数据库的强有力的、多方面的功能,已经有效地支持许多数据库纳应用。
②关系数据库系统的缺点

a.数据类型表达能力差:从下一代应用软件的发展角度来看,关系数据库的根本缺陷在于缺乏直接构造与这些应用有关的信息的类型表达能力,缺乏这种能力将产生以下有害的影响,例如:大多数RDBMS产品所采用的简单类型在重构复杂数据的过程中将会出现性能问题;数据库设计过程中的额外复杂性;RDBMS产品和编程语言在数据类型方面的不协调。

    大多数现代的RDBMS产品已成熟地用于商务和财政方面,而这些领域不要求很高和很复杂的数据模型。虽然这些产品多多少少克服了一些以上所述的缺点,但从理论上看关系数据模型不直接支持复杂的数据类型,这是由于第一范式的要求,所有的数据必须转换为简单的类型,如整数、实数、双精度数和字符串。

    对于工程应用来说,这种不能支持复杂数据类型的典型结果就是需要额外地分解数据结构工作,这些被分解的结构不能直接表示应用数据,且从基本成分重构时也非常繁琐和费时间。

b.复杂查询功能差:关系数据库系统的某些优点也同时是它的不足之处。虽然SQL语言为数据查询提供了很好的定义方法,但当用于复杂信息的查询时可能是非常繁琐的。此外,在工程应用时规范化的过程通常会产生大量的简单表。在这种环境下由存取信息产生的查询必须处理大量的表和复杂的码联系以及连接运算。

    除非这些查询以固定的例行程序方式提供,否则用户就必须对SQL非常熟悉,以便适当地浏览数据库,查出所需的信息。然而,一旦查询方式按固定例行程序方式进行,用户最终就进行应用软件的常规维护。但应用或人机接口软件的变化又可能要求经常修改例行的查询,数据库结构的变化也可能导致例行查询程序以及应用或人机接口软件的失效。由于这些原因,关系数据库系统的维护开销可能是很大的。

   由于关系数据库不能提供足够的构造能力及性能方面的原因,在进行较复杂的数据库设计过程中,不可能将许多工程问题直接分解成一些简单的部分。由于缺乏直接指针存取方法,所以查询有关的信息需要花费时间。

c.支持长事务能力差;由于RDBMS记录锁机制的颗粒度限制,对于支持多种记录类型的大段数据的登记和检查来说,简单的记录级的锁机制是不够的,但基于键值关系的较复杂的锁机制来说却很难推广也难以实现。

d.环境应变能力差:在要求系统频繁改变的环境下,关系系统的成本高且修改困难。在工程应用中支持"模式演变"(schema evolution)的功能是很重要的,而RDBMS不容易支持这种功能。另外,关系数据库和编程语言所提供的数据类型的不一致,使得从一个环境转换到另一个环境时需要多至30%的附加代码。
③面向对象数据库系统的优点

a.能有效地表达客观世界和有效地查询信息:面向对象方法综合了在关系数据库中发展的全部工程原理、系统分析、软件工程和专家系统领域的内容。面向对象的方法符合一般人的思维规律、即将现实世界分解成明确的对象,这些对象具有属性和行为。系统设计人员用ODBMS创建的计算机模型能更直接反映客观世界,最终用户不管是否是计算机专业人员,都可以通过这些模型理解和评述数据库系统。

工程中的一些问题对关系数据库来说显得太复杂,不采取面向对象的方法很难实现。从构造复杂数据的前景看,信息不再需要手工地分解为细小的单元。ODBMS扩展了面向对象的编程环境,该环境可以支持高度复杂数据结构的直接建模。

b.可维护性好:在耦合性和内聚性方面,面向对象数据库的性能尤为突出。这使得数据库设计者可在尽可能少影响现存代码和数据的条件下修改数据库结构,在发现有不能适合原始模型的特殊情况下,能增加一些特殊的类来处理这些情况而不影响现存的数据。如果数据库的基本模式或设计发生变化,为与模式变化保持一致,数据库可以建立原对象的修改版本。这种先进的耦合性和内聚性也简化了在异种硬件平台的网络上的分布式数据库的运行。

c.能很好地解决"阻抗不匹配"(impedance mismatch)问题。面向对象数据库还解决了一个关系数据库运行中的典型问题:应用程序语言与数据库管理系统对数据类型支持的不一致问题,这一问题通常称之为阻抗不匹配问题。
④面向对象数据库系统的缺点

a.技术还不成熟。面向对象数据库技术的根本缺点是这项技术还不成熟,还不广为人知。与许多新技术一样,风险就在于应用。从事面向对象数据库产品和编程环境的销售活动的公司还不令人信服,因为这些公司的历史还相当短暂,就该十几年前关系数据库的情况一样。ODBMS如今还存在着标准化问题,由于缺乏标准化,许多不同的ODBMS之间不能通用。此外,是否修改SQL以适应面向对象的程序,还是用新的对象查询语言来代替它,目前还没有解决,这些因素表明随着标准化的出现,ODBMS还会变化。

b.面向对象技术需要一定的训练时间:有面向对象系统开发经验的公司的专业人员认为,要成功地开发这种系统的关键是正规的训练,训练之所以重要是由于面向对象数据库的开发是从关系数据库和功能分解方法转化而来的,人们还需要学习一套新的开发方法使之与现有技术相结合。此外,面向对象系统开发的有关原理才刚开始具有雏形,还需一段时间在可靠性、成本等方面令人可接受。

c.理论还需完善:从正规的计算机科学方面看,还需要设计出坚实的演算或理论方法来支持ODBMS的产品。此外,既不存在一套数据库设计方法学,也没有关于面向对象分析的一套清晰的概念模型,怎样设计独立于物理存储的信息还不明确。

面向对象数据库和关系数据库系统之间的争论不同于70年代关系数据库和网状数据库的争论,那时的争论是在同一主要领域(即商业事务应用)中究竟是谁代替谁的问题。现在是肯定关系数据库系统基本适合商业事务处理的前提下,对非传统的应用,特别是工程中的应用用面向对象数据库来补充不足的问题。面向对象数据库系统将成为下一代数据库的典型代表,并和关系数据库系统并存(而不是替代)。它将在不同的应用领域支持不同的应用需求。

经过数年的开发和研究,面向对象数据库的当前状况是:对面向对象数据库的核心概念逐步取得了共同的认识,标准化的工作正在进行;随着核心技术逐步解决,外围工具正在开发,面向对象数据库系统正在走向实用阶段;对性能和形式化理论的担忧仍然存在。系统在实现中仍面临着新技术的挑战。



posted @ 2007-09-07 22:01 .柚柚之Blog. 阅读(6565) | 评论 (2)编辑 收藏

面向对象数据库系统与关系数据库系统的比较

⑴面向对象数据库管理系统(ODBMS)和关系数据库管理系统(RDBMS)的共同特点


⑵基本特性的比较

    如前所述,面向对象和关系数据库二者都支持数据库的持久性、二次存储管理、并发控制、恢复和查询的功能。但这两种方式是以不同的范例(paradigm)或数据模型为基础的。这种基本的不同表现在按一种技术开发数据库所采取的方法论明显地与另一种的差异,即:
a. 面向对象的范例是以分类为基础的,类用于定义存储在数据库内对象的结构及行为。
b. 关系范例是以元组(tuple)或记录为基础的,它被唯一地用来定义存储在数据库内的数据结构。一组元组被称之为一个关系(relation)或一个表(table)。
⑶开发方法的比较

①关系数据库的开发
    在关系数据库的开发过程中,对于被存储的数据实体是通过它们的属性或变量来描述的。实体一旦被描述,初始的数据结构需经过"规范化" (normalization)的处理来建立一组表(关系),同时减少了包含在元组中冗余的信息量。另外,每个元组至少要有一个特殊的属性称之为"码" (Key),它能唯一地标识表中的每个记录。码用于将各个不同表中的记录明显地联系起来。
②面向对象数据库的开发
    面向对象数据库的开发过程中,实体应存什么数据也是由它们的属性来描述的。但与关系数据库不同的是将数据简化成一些类型,而不必经常引入码。对于复杂的应用来说,引入码是个特别繁琐的过程。
    面向对象数据库的设计过程的注意力集中在以尽可能自然和直接的方式对现实世界的实体进行分类。类可以按子类的等级来组织,子类是定义较特殊一类对象集合的较自然的一种方法。子类继承了现存父类的属性。如前所述,继承是面向对象与关系系统之间差别的关键特点之一,尽管某些扩展的关系数据库如Ingress可以提供有限的继承能力。
     在ODBMS中数据的冗余也有不同的管理方式。在关系数据库中对表的结构进行分解使得实体属性以最少的表来表示。而在 ODBMS中冗余的处理是按类结构进行,它与所存数据格式相对独立。唯一的一组属性被归并为一类,并能被许多子类重新使用,父类的变化将自动地用于其低层的类中,这意味着几个对象可以共享相同的属性,而不会在存取数据库中的对象时引起冗余问题。
     在查询方面,ODBMS也提供与关系数据库相似的陈述式查询方式,但比RDBMS增加了直接引用的能力。采用直接引用来查询相应对象的方法比关系数据库存取的性能要高一到两个数量级。
⑷性能的比较
     ODBMS 和RDBMS产品数据存取性能的差别已按通用测试标准验证过了。SUN公司的Riok Cattell等人著的"对象数据库评估"(1991年对象世界会议文集)已对四个ODBMS产品:Objectivity,Objectstore, Ontos,Versant以及两个RDBMS产品:Sybase和Ingress进行了测试。一般说来,对于"冷"数据存取(对磁盘数据库存取) ODBMS比RDBMS平均快5倍;对于"热"数据存取(在内存中的数据库存取)要快30倍,对于"热导航"(在内存中对某一给定的对象访问与之相联系的所有对象)ODBMS任何一个产品都比RDBMS的每一个产品性能要高出三个数量级。




posted @ 2007-09-07 21:56 .柚柚之Blog. 阅读(1739) | 评论 (0)编辑 收藏

意识与潜意识之分

   也是最近才真正的了解到我们的思想分成两部分,一是意识,二为潜意识。而潜意识的力量比意识大3万倍,所以要激发潜能,需要运用潜意识。
   以前也朦胧的知道自己总有两种思想似的。直到有一天看了一篇文章。才了解到。。。。
   拿最明显的例子来说。每天早上起床时是最痛苦的一件事情。有时感觉 是那个时间到了。改起床了,可是自己总是在对自己说,没事!在睡几分钟吧。在睡几分钟。。。。这就是我的潜意识打败了我的意识!
   潜意识会依照我们心中所想的画面,构成真实事物。潜意识无法分辨事情是真还是假,一旦被接受,它终究要变成事实。只要有明确画面进入潜意识,潜意识立即想尽办法把这个画面转为事实。只要我们给予潜意识一个画面,它就会努力将它实质化。

我们当前生活的一切,都是我们潜意识的真实反映。在你潜意识种种的思想和观念,造就了现在的你。如果你的未来要有所不同,你一定要现在就改变你的潜意识。
   所以我现在总在试着去征服我的潜意识,只有先改变了内部才能更好的改变外部。还是拿最起码的起床来说每天早上我想睡懒觉时。我就会去努力的去克服我的潜意识。我不能让它主宰着我的思想。
   因为现在学校又招收了好多人。所以能做上机子是件很困难的事,必须要比别人起的早才可以。现在我也渐渐的形成了习惯6:30的时候就条件性的睁开了眼睛。然后去上学开始了新的一天!
  其实感觉每天有了战胜潜意识的心理。心理就感觉有了一次小小的成功,然后我就会心情很好的去开始这一天的生活。虽然每天都做在机房中做着同样的事情。可是当每次努力的做着的事情,并解决了一个 问题时,就感觉会很有成就感。
  所以我总是会很开心!我会认真的做好每一件事。为任何可以高兴的事情而高兴。虽然当中也许会有很多的困难为做一件事情。但总得去接受并认真对待!
  我会一直的努力下去。并坚持不懈!!!!

posted @ 2007-09-06 01:04 .柚柚之Blog. 阅读(473) | 评论 (1)编辑 收藏

Oracle 体系结构


 

posted @ 2007-08-27 23:02 .柚柚之Blog. 阅读(145) | 评论 (0)编辑 收藏

随想

在过几个月,就要结束在校生涯而进入社会了。
但一切都还要继续着...Only继续的学习新的知识。才能跟紧时代的脚步。才不会被社会淘汰。
一但停留,便再也无法跟上。。。

There is no challenge more challenging than improving yourself!


posted @ 2007-08-14 20:20 .柚柚之Blog. 阅读(141) | 评论 (0)编辑 收藏

heap与stack的区别.

  heap(栈)是一种线形集合.其添加和删除元素应在同一段完成,按照先进后出的方式处理。
stack(堆)是栈的一个组成元素。


posted @ 2007-08-06 20:08 .柚柚之Blog. 阅读(158) | 评论 (0)编辑 收藏

作为程序员的四大忌.

一忌:轻易言败,没有自信

  没有永不放弃精神的程序员,只是一个有程序员名号的假程序员。一个真正的程序员,知道在程序设计的过程中,可能会遇到不计其数的困难和问题,可能有极多的挫折和失败,而成功只有一次。

  就为解决一个问题,我们可能连续十几甚至几十小时的坐在计算机前不停的工作。一个问题解决了,可能又有其它的问题出现。而你要是不能坚持下来,可能从前的一切努力都流失了。轻易言败的人请不要做程序员,你不可能成功。执着是最可贵的。

  执着的程序员都是相信自己的人,每时每刻都会鼓励自己,你做的出来,你能解决,你会成功。这样他才能坚持下去。

二忌:浮华不实,自满自大

  夸夸奇谈的人不是优秀的程序员。整个程序设计的过程就是一个研究学习,应用,再研究学习,再应用的过程。一名优秀的程序员决不会认为自己足够好了,不需要再提高了。自满自足的人不会是好程序员,会很快落后以致落伍。所以越是优秀的程序员越是感觉自己懂得少,不会在人前故意卖弄,这并不是故作谦虚,而是实实在在的感受,亲自体会才能明白。

  浮华的程序员会不懂装懂,不停的强调语言的优劣,平台的好坏。追求所谓最新最时尚的技术,停留在表面问题上。或假做深沉,用不适合的方式做不适合的事情。就像孔已己一样,以为知道"茴"字有四种写法就是学问。最后是简单的作不好,困难的也作不好。

三忌:死气沉沉,不求甚解

  优秀的程序员是充满激情和活力的程序员。求知欲和创造欲是原动力。有求知欲你才能不停的学习,有创造欲你才能不停的超越自己。死气沉沉的程序员已经对程序设计失去了兴趣,很快就会主动或被迫离开。

  创造不是指你要发明什么别人不知道的技术或方法,而是说不能仅仅知道怎么做,还要知道为什么这样做。之后你才能创造,其实程序设计的整个过程就是创造的过程。

四忌:强调客观,忽略自身

  很多程序员都是在失败的时候强调客观因素,而优秀的程序员的程序员都是先反省自己。要明白自己缺陷,再努力去学习。没有人事事都做的成功,也没有人生来就什么会做。所以失败了,多想想自身的原因,这样你才会不停的进步,而不是留在原地抱怨

posted @ 2007-08-03 23:56 .柚柚之Blog. 阅读(150) | 评论 (0)编辑 收藏

无题.随想

寻找了几天,终于还是在今天开通了自己博客。好高兴终于有自己的博客咯!
因为目前CSS还不会运用。so现在还不能定制自己的 blog style!


posted @ 2007-08-03 22:22 .柚柚之Blog. 阅读(100) | 评论 (0)编辑 收藏

仅列出标题
共2页: 1 2 
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

相册

搜索

最新评论

阅读排行榜

评论排行榜