面向对象数据库系统

计算机程序

面向对象数据库系统是面向对象的程序设计技术与数据库技术相结合的产物·面向对象数据库系统的主要特点是具有面向对象技术的封装性和继承性,提高了软件的可重用性·

数据特点
面向对象程序语言操纵的是对象,所以面向对象数据库(简称OODB)的一个优势是面向对象语言程序员在做程序时,可直接以对象的形式存储数据。对象数据模型有以下特点:
(1)使用对象数据模型将客观世界按语义组织成由各个相互关联的对象单元组成的复杂系统 。对象可以定义为对象的属性和对象的行为描述,对象间的关系分为直接和间接关系。(2)语义上相似的对象被组织成类,类是对象的集合,对象只是类的一个实例[6],通过创建类的实例实现对象的访问和操作。(3) 对象数据模型具有“封装”、“继承”、“多态”等基本概念[7]。(4) 方法实现类似于关系数据库中的存储过程,但存储过程并不和特定对象相关联,方法实现是类的一部分。(5) 实际应用中,面向对象数据库可以实现一些带有复杂数据描述的应用系统,如时态和空间事务、多媒体数据管理等。
体系结构
面向对象数据库管理系统包括了关系数据库管理系统的全部功能,只是在面向对象环境中增加了一些新内容,其中有一些是关系数据库管理系统所没有的。面向对象数据库管理系统(C/S即客户/服务器结构)主要由以下五个子系统组成。
发展
自20世纪80年代来,OODBS的发展经历了主要三个阶段:(1)实验室原型阶段,很多原型产品于80年代末在实验室完成,它们大都具有较新的思路和大胆的设计但却缺乏实际应用的考验,代表产品有工业界Vbase和Orien等,学术界的Gemstone等;(2)初期商业化产品阶段,80年代末至90年代初,所推出的产品均具有面向对象数据库管理系统的基本特色和实际运用的能力,为OODBMS占领市场起了重大作用,但仍有许多缺陷;(3)成熟产品阶段,20世纪90年代中期至今,OODBMS的商业化趋于成熟,产品如Object Store、Ontos、O2、Jasmin等。
重要技术
.数据库转换技术
由于关系数据库在当今数据库应用领域处于主导地位,而面向对象数据库如果要满足更高一级数据库要求,实现异构数据库之间数据库模式和操作的转换是一个关键研究课题。数据库转换技术包括数据模式技术和数据操作转换技术,转换时要保证一致性(对象语义和动作信息在转换过程中不丢失)。
模式演进技术
OODB的类为适应需求变化而随时间变化称为模式演进,包括创建新类、删除旧类、修改类属性和操作等模式演进必须保持模式一致性(模式自身内部不能有矛盾),这由模式一致性约束描述。模式一致性约束分为唯一性约束、存在性约束和子类型约束等,满足所有这些一致性约束的模式称为一致模式。模式演化是面向对象数据库研究重点与难点,实现途径一般有两种:模式改变考虑现有应用程序使二者相互集成和适应;开发新的高级数据库编程语言。
视图类实现技术
面向对象数据库中很多操作(如统计、连接查询和视图操作)都能自由访问数据库数据,这些操作益于实现视图操作及降低复杂度并提高效率,但易破坏对象封装性。为了不破坏对象封装性,必须对面向对象数据库的核心模型进行扩充,在对象中设计一组接口,系统通过这组接口完成视图操作,这样会增加对象复杂性和面向对象数据库系统设计难度,因此需要对这些接口实行标准化。基于上述条件,设计相应类数据结构和操作则可实现OODBS视图操作。
OODBS事务管理技术
OODBS事务管理子系统包括死锁管理器、锁管理器、恢复管理器和日志管理器几个部分。相比传统RDBS,OODBS加锁具如下特点:①加锁单位是对象而不是类;②给类对象加锁比给关系对象加锁需更多信息;③当类实例被加锁时,其父类也被加锁。OODBS采用粗粒度加锁具有很高的并行性,加锁的一般是对象,若某一事务要访问同一类多数实例,则对整个类加锁,保证可靠性又降低系统开锁代价。另外,OODBS还具有恢复机制,其中包括多媒体日志恢复和索引页日志恢复两种。多媒体日志恢复是指OODBS把多媒体数据和其描述部分分开,后者通过对象标识符引用前者。若创建多媒体数据事务失败,则置空描述部分引用并复位。索引页日志恢复的方法有两种:一是分裂索引页的插入操作,系统把当前索引页一半表项分给新页,除拷贝的表项外其余都记录在日志中,发生故障时则去掉整个新页;二是合并索引页的删除操作,系统把当前索引页表项拷贝到新页,除了从当前页删除的表项外其余都记录在日志中,发生故障时则重新使用当前页。
应用
面向对象数据库的产生主要是为了解决“阻抗失配”,它强调高级程序设计语言与数据库的无缝连接。无缝连接即假设不使用数据库,而使用某种编程语言编写一个程序,可以基本不经任何改动地将它作用于数据库,即可以用编程语言透明访问数据库,就好像数据库根本不存在一样,所以也有人把面向对象数据库理解为语言的持久化。
面向对象方法综合了在关系数据库中发展的全部工程原理,以及系统分析、软件工程和专家系统领域的内容,符合一般人的思维规律,将现实世界分解成明确的对象。系统设计人员用OODBMS创建的计算机模型能更直接反映客观世界,使得非计算机专业人员的最终用户也可以通过这些模型理解和评述数据库系统。这些都是传统数据库所缺乏的,正因为如此,OODBS更能在新兴应用领域中发挥作用。这些领域集中在以下几个方向:(1)工程应用领域:此领域(如CAD/CAM)涉及到的数据种类多,操作和数据间涉及的关系都极为复杂,由于面向对象数据库实现了无缝连接,能够支持非常复杂的数据模型,从而特别适用于工程设计领域;(2)多媒体应用领域:由于多媒体中数据种类很多,他们之间有复杂的联系使之成为一个整体,在多媒体领域这些要求也能在面向对象数据库中得到解决;(3)集成应用领域:随着计算机越来越集成,系统也跟着越发复杂,这要求多种应用的集成需要一个能适应不同应用要求的结构模型;(4)传统应用领域:近年来商业、事务处理的需求发生了很大的变化,而面向对象数据库很能适应这些新的变化,因此在传统领域面向对象数据库也有着重要的应用市场。
存在的问题
面向对象数据库技术可望成为继关系数据库技术之后的新一代数据管理技术。尽管已有大量的研究开发工作,有一些可支持的面向对象数据库系统,但面向对象数据库的成熟仍有存在许多亟待解决的问题:
(1)实现复杂性问题:在实现复杂性和思维复杂性问题上,面向对象模型关系模型之间存在很大差距——关系模型构造集合以及在集合基础上发展出来的关系,对一个有数学基础的人而言其操作语义显然有思维简洁性,对计算机而言,关系运算可以递归并具有能行性的,计算简洁;而对面向对象模型而言,其思想主要是控制流为主导,也就是通过对象的行为,指引数据的传递。比如在服务驱动的分布式系统中,如SOA,其数据是用XML描述的,但由于其交互性,以及消息扮演的控制流的角色,导致用面向对象的传递信息方式不能发挥作用,所以在数据库的流程和运算上,OODB并不占优势。
(2)理论支持问题:面向对象数据库,并没有严格的理论支持。虽然对象间的关系有聚合、组合、关联、继承等,但这些并不是理论,而是实践结果。不能从理论上推导出这些关系,也就无法实现出支持这些关系的对象数据库。
(3)模型复杂度问题:由于模型较为复杂(而且缺乏数学基础),使得很多系统管理功能难以实现(如权限管理),也不具备SQL处理集合数据的强大能力。
(4)性能问题:由于面向对象数据库中数据被存放在许多地方,因此,有效对象聚集是性能好坏的关键因素。面向对象数据库技术要想能取代传统的数据库技术,性能改善是必不可少的。
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市