中国科学院软件研究所机构知识库
Advanced  
ISCAS OpenIR  > 中科院软件所  > 中科院软件所
题名:
对象持久性机制实现技术的研究
作者: 杜小尧
答辩日期: 1998
专业: 计算机软件
授予单位: 中国科学院软件研究所
授予地点: 中国科学院软件研究所
学位: 博士
关键词: 对象持久性 ; 持久对象库 ; 持久性面向对象程序设计语言 ; 虚拟存储映射
摘要: 面向对象的方法和技术已迅速成长为计算机应用开发方法的主流。由于大多数面向对象的应用程序需要处理持久对象,因此,研究如何为这些面向对象的应用提供对象持久性支持的对象持久性机制就非常重要。对象持久性机制是指面向对象应用中的对象持久性的支持机制。根据持久存储的不同,本文将常用的对象持久性机制分为两大类、五小类。两大类指基于已有数据库的对象持久性机制和基于面向对象程序设计语言的对象持久性机制。两大类进一步细分成五小类,其中,第一类包括基于关系数据库的对象持久性机制、基于对象关系数据库的对象持久性机制和基于面向对象数据库的对象持久性机制;第二类包括基于流式文件的对象持久性机制和基于持久对象库的对象持久性机制。本文分别讲述了上述各种机制的基本原理和优缺点,并对它们进行了比较分析,最后给出了它们各自适合的应用领域。随着对象技术和C++语言的广泛使用,越来越多的C++应用需要透明、轻量和可靠的C++持久对象库。虽然这些应用可以使用成熟且功能强大的数据库管理系统,但是由于数据库管理系统提供的很多数据库功能如并发控制、查询、完整性等它们都不需要,使用庞大、复杂的数据库管理系统会给它们速来不必要的负担,既增加应用的开发运行成本,又会降低应用的性能。为了满足这些C++非数据库应用的对象持久性需求,我们设计开发了一个基于持久对象库的对象持久性机制的实现系统-ObjectPersist。ObjectPersist是一个轻量、透明、可靠和高效的C++持久对象存储引擎,支持C++持久对象的保存和获取。ObjectPersist采用基于虚存映射的持久对象存储方法,持久对象在内存和外存均以其内存格式表达,对象中的指针亦是虚存地址,利用操作系统的虚存映射机制将持久存储直接映射到应用的进程虚地址空间,从而允许对持久对象的正常访问,访问持久对象就如同访问普通暂态对象一样。ObjectPersist提供持久对象的透明存取、高性能的持久空间分配器、多存储支持、事务和恢复机制、垃圾回收机制和存储级锁。ObjectPersist通过一个类库支持C++对象持久性,没有对C++语言本身体任何的修改或扩充。使用ObjectPersist无需预编译器,就如同使用其它普通C++类库一样,只需在应用链接阶段链接相应的库,对程序员的开发方法和过程没有施加任何特别的限制,而且,应用程序员依然能够使用所有的C++特性,包括多重继承、虚基类、虚函数和嵌入对象指针等。ObjectPersist提供一个无缝的C++应用编程接口。总之,对C++应用程序员来说,ObjectPersist简单、易用。ObjectPersist具有良好的可移植性。ObjectPersist独立于具体的C++编译器,支持大多数的操作系统平台。目前支持的操作系统平台有Windows NT/95、Solaris、AIX、HP-UX、Digital Unix 和 Linux。
英文摘要: Object-oriented modeling, design, and programming have rapidly become the model of choice for programming new computer applications. Since most application programs need to deal with persistent data, adding persistence to objects is essential to making object-oriented applications useful in practice. Therefore, it is important to study object persistence mechanism supporting object persistence in object-oriented applications. Object persistence mechanism is the mechanism for supporting object persistence in object-oriented applications. In this paper we divide object persistence mechanism into two categories: one is based on existing databases and the other is based on object-oriented programming languages. For the first category, existing databases can be RDB, ORDB or OODB. For the second, there can be two specific mechanisms and they are respectively based on streaming file and POS. We describe the fundamental principles, advantages and disadvantages of each object persistence mechanism. Finally, we discuss the application domain for each mechanism. With the widespread adoption of object technology and C++, there is a growing need for lightweight, transparent and reliable C++ persistent object store without adding a lot of overhead such as those offered by full-blown DBMS with concurrency control, query, integrity etc. Therefore, we developed ObjectPersist for those C++ non-database applications simply requiring transparent storage and retrieval of objects, non-database applications simply requiring transparent storage and retrieval of objects, non-database applications simply requiring transparent storage and retrieval of objects, which is an implementation of the object persistence mechanism based on POS. ObjectPersist is a lightweight, transparent, reliable and fast C++ persistent object storage engine that allows you to store and retrieve objects in their native C++ format. It is based on virtual memory mapping, storage data file is mapped into virtual address space of your application, allowing normal access to persistent objects, i.e. making your objects persistent with no overhead on accessing objects at runtime. ObjectPersist supports work with several storages, transaction and recovery, garbage collecter for persistent storage and storage-level locking. In addition, ObjectPersist provides high performance memory allocator for persistent objects. ObjectPersist supports C++ object persistence and is implemented in a class library without actually modifying the language implementation. ObjectPersist is pure C++ at every stage of development. There are no pre-compilers. ObjectPersist lets you use all features of C++, including multiple inheritance, virtual base class, virtual functions and pointers inside objects. ObjectPersist has a seamless C++ API. In a word, ObjectPersist is easy-to-use for C++ programmer. ObjectPersist has been written from the start to be portable. It is written in standard C++. ObjectPersist is independent of specific C++ compiler and supports most common operating systems. It is now available for several dialects of Unix (Solaris, AIX, HP-UX, Digital Unix, Linux) and Windows NT/95.
语种: 中文
内容类型: 学位论文
URI标识: http://ir.iscas.ac.cn/handle/311060/5962
Appears in Collections:中科院软件所

Files in This Item:
File Name/ File Size Content Type Version Access License
N98864.pdf(2784KB)----限制开放-- 联系获取全文

Recommended Citation:
杜小尧. 对象持久性机制实现技术的研究[D]. 中国科学院软件研究所. 中国科学院软件研究所. 1998-01-01.
Service
Recommend this item
Sava as my favorate item
Show this item's statistics
Export Endnote File
Google Scholar
Similar articles in Google Scholar
[杜小尧]'s Articles
CSDL cross search
Similar articles in CSDL Cross Search
[杜小尧]‘s Articles
Related Copyright Policies
Null
Social Bookmarking
Add to CiteULike Add to Connotea Add to Del.icio.us Add to Digg Add to Reddit
所有评论 (0)
暂无评论
 
评注功能仅针对注册用户开放,请您登录
您对该条目有什么异议,请填写以下表单,管理员会尽快联系您。
内 容:
Email:  *
单位:
验证码:   刷新
您在IR的使用过程中有什么好的想法或者建议可以反馈给我们。
标 题:
 *
内 容:
Email:  *
验证码:   刷新

Items in IR are protected by copyright, with all rights reserved, unless otherwise indicated.

 

 

Valid XHTML 1.0!
Copyright © 2007-2017  中国科学院软件研究所 - Feedback
Powered by CSpace