这里记录了我青春的10多年时光,已在2012年开始停更了,有时间再迁移到新系统,部分内容改编成了歌曲,有兴趣可以收听下专辑《逝去的那些年》!! 
                    
                                          ----2024.09.10 凌封

新一代数据库技术---面向对象数据库系统

作者: 胡天平 ([email protected])
Monday, January 13 2003 10:47 AM 

  学过人工智能的人都知道在这一领域中最关键的是构建知识库。推理技术发展已经基本达到实用阶段,可是由于没有一个好的知识库支撑,就好象建大厦没打好地基一样使得人工智能的发展受挫。知识库为什么这么难构建呢?就像人的大脑一样,其中不但存贮了海量的信息,关键是错宗复杂的信息之间的联系。一个比较明显的例子是翻译软件,就词汇量而言无人能比,可是它照样把句子翻译得驴头不对马嘴。显然,用现有的关系型数据库无法描述现实世界的实体,而面向对象的数据模型由于吸收了已经成熟的面向对象程序设计方法学的核心概念和基本思想,使得它符合人类认识世界的一般方法,更适合描述现实世界。甚至有人预言,数据库的未来将是面向对象的时代。

  这就引出了本文所要讨论的话题,新一代数据库技术---面向对象数据库系统(OODBs)。现在的数据库市场,关系型数据库一枝独秀,几乎霸占了所有份额,从桌面电脑的小型数据库到企业应用的大型数据库,你所接触到的几乎无一例外。你开始认为数据库就该是这样的,一张二维表、行、列形式。的确,关系型数据库在处理简单的如商业数据方面得心应手,借助SQL的强大功能,它满足了企业对数据存贮和管理的要求。但是如果数据内容扩展到现实世界中,一张二维表所表达的关系已经不能包涵。

  假如你到超市想买一瓶大明牌辣酱,传统的关系数据库方法是在超市的几万种商品目录中搜索关键字“大明牌辣酱”,借助现代强大的计算机处理能力,这只是小菜一碟。如果用面向对象数据库方法,它会按类查找,即“食品”-“调味品”-“酱类”-“辣酱”,最后是“辣酱”类的一个实例“大明牌辣酱”,也称为对象。是不是面向对象的方法更像你实际购物时的方式。通过这个实例你已经大概认识到面向对象数据库的核心概念:

对象标识

  现实世界中的任何实体都被用对象唯一标识。就像商品都有唯一的条形码一样,这在关系型数据库中也有。

封装

  每一对象是其状态和行为的封装。学过C++的人对这点不陌生,只是你可能会感到奇怪数据库里除了存放数据怎么还有行为。其实这正是关系型数据库的一大缺点,它把结构与行为完全分离了。面向对象技术正是把数据和行为封装在一起,使得数据应用更灵活,如果数据库里只存放着静态的数据而不把与之相关的操作放在一起,那么你得到的就只是数据本身,它们只是一些毫无意义的编码,事实上你更须要的与之相关的动作。

  类和类层次

  所有具有相同属性和方法的对象抽象出类。你对辣酱的理解首先它是一种食品,那么它就一定有如下的静态属性(状态):生产日期,口感,味道,形状等;动态属性(行为):能吃,会过期。

  继承

  一个类可以继承类层次中其直接或间接祖先的所有属性和方法。有关继承、类和层次的概念完全出自面向对象程序设计方法。
  现在看看目前面向对象数据库系统的实现情况,面向对象数据库系统(OODBs)的实现一般有两种方式:一种是在面向对象的设计环境中加入数据库功能,这是纯种的OODBs技术,但是因为两者支持概念差异较大,OODBS支持的对象标识符、类属联系、分属联系、方法等概念在关系型数据库中无对应物存在,数据共享难以实现;另一种则是对传统数据库进行改进,使其支持面向对象数据模型。这也就是ORACLE实现OODB的模型。它的好处是底层实现不用像第种方法一样重头设计,直接借用关系数据库已有的成熟经验,可以和关系数据库共享信息。缺点是由于用到中间转换,将损失性能。这种方法只是中间过渡型产品,就像AMD即将推出的64位CPU一样向下兼容32位。
  说到这里你大概已经动心,但是OODB也有不少麻烦和问题。

  首先是标准化问题,如何分类、类中应包括哪些内容。这个问题如果不能解决,那么各厂家的OODBs系统,甚至是各应用企业间的OODB无法通用。通用性正是关系数据库成熟的一个标志,目前主流关系的数据库几乎都可以实现数据共享。要实现统一标准可能很难,就像XML技术刚提出时就是打着统一数据标准的旗号,现如今要发展XML只能先把统一放一边,先用着再说。

  其次是它的数据模型并不是建立在完善的数学基础之上,数据库语言缺乏形式化基础。OODB要想和关系数据库一样有一个统一标准似乎不太可能,但是你要明白关系数据库之所以能做到是因为它放弃了现实世界的多样性,就好象环保型产品成本之所以高是因为没有对非环保型产品的污染收费。

  最后又提到人工智能,如果知识库用面向对象数据库系统实现,库中不只是有一条条的知识点,还包括了各知识点之间的联系和知识点所引发的相关行为,这看起来更像是模拟了人脑的思维方式。

   结束语

  虽然面向对象数据库系统的概念早在20世纪80年代就已提出,但是发展至今还没能拿出一件像样的产品。本文只是对面向对象数据库系统进行初步的设想和探讨,如果你对此感兴趣欢迎来信讨论。 

[本日志由 风吟 于 2008-05-10 10:26 PM 编辑]
文章来自: 转载
引用通告: 查看所有引用 | 我要引用此文章
Tags: 计算机 程序
相关日志:
评论: 0 | 引用: 0 | 查看次数: 1524
发表评论
昵 称: *
密 码: 游客不需要密码.
邮 箱: *
网 址:
验证码: 验证码
选 项:
内 容:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭