中国科学院软件研究所机构知识库
Advanced  
ISCAS OpenIR  > 中科院软件所  > 中科院软件所
题名:
面向对象数据库的实现技术研究
作者: 金蓓弘
答辩日期: 1999
专业: 计算机软件
授予单位: 中国科学院软件研究所
授予地点: 中国科学院软件研究所
学位: 博士
关键词: 对象数据库 ; 持久性 ; 指针转换 ; 永久堆 ; 基准测试 ; 垃圾回收 ; 幺群概括
摘要: 对象数据库基于对象模型,融合了面向对象语言和数据库的能力,在CAD/CAM/CASE等领域有着广泛的应用前景。本文依托于内存映射型对象数据库DBC++的开发,围绕着对象寻址方法、持主对象存储组织技术、对象库垃圾回收技术、对象查询语言OQL的实现方法等四个方面,进行了实践和研究。寻址机制负责定位永久对象,为此我们在DBC++中采用了指针转换技术。指针转换技术由控制机制和运算机制两部分组成。我们实现了两种粒度(页粒度和指针粒度)的指针转换控制机制,并将它们统一在自适应方案中,自适应方案采用以硬件中断为主、软件控制为辅的方法,自动触发永久数据的传送,在数据传送过程中有控制地完成所需地指针转换。自适应方法也被用于多页对象,保证了系统自举能顺利高效地完成,同时也有力地支持了操作一致性原则。在指针转换的运算机制中,我们完成了普通指针和C++对象特有的隐含指针的转换,并且解决了通常小控方案不能解决的不能包装隐含指针的问题。我们的寻址方法达到了在不修改语言编译器的前提下,由语言编译器统一管理永久数据和暂态数据的目的。我们以堆作为基本的物理存储组织方式,实现了对象的持久存储,解决了在永久堆管理中遇到的多个交织在一起的永久堆的管理、聚簇、永久堆程序接口和空闲空间的永久存储等技术问题,并且针对纯大对象的操作效率,给出了纯大对象的存储、数据预取和调度方案。为了准确考察内存映射数据库下对象存储组织方案,我们用OO7基准测试数据库为数据源,测试了不同的物理存储方式(分类列表法和最佳适配法)对对象库的空间利用率、导航/遍历操作的响应速度的影响,还考察了不同聚簇方法对实验数据的影响。在考察了多种垃圾回收机制后,我们根据内存映射数据库的特点,最终选用了踏车式垃圾回收方法,该方法以前被用于程序语言的内存管理上。我们在DBC++中借助于三色标记法维护三色不变式,实现了踏车式垃圾回收器的增量式版本,这种增量式方法具有开销小、性能优的特点,且能维护事务的语义。为了提高系统的性能,我们还把踏车式垃圾回收器进一步扩展成步进式垃圾回收器。针对ODMG-2.0的对象查询语言OQL,我们把类型提高到幺群(聚集幺群和原始幺群)级,然后从幺群概括入手,用幺群概括作为OQL的查询中间表示,统一了多种聚集类型的重写规则,幺群概括还被我们用于定义代数操作符,这使得代数操作变符突破了关系代数/演算中只针对集合的局限。基于幺群概括,我们提出了一个可扩充的对象查询转换算法,该算法可以处理嵌套子查询、带存在量词和全称量词的查询、带聚集函数的查询、带分组/排序的查询,具有较强的通用性,该算法也体现了我们尽可能地将查询转换成连接以期望用连接的多种物理算法提高执行效率的查询优化思想。
英文摘要: Object databases combine the advantages of object model and elements of object-oriented programming languages with database capabilities, having the broad application prospects for CAD/CAM/CASE. In this dissertation, the method for object addressing, organization technique for persistent objects, garbage collector (GC) for object base and implementation means for object query language OQL were deeply investigated and put in practice while developing the memory-mapping object database DBC++. Addressing mechanism is responsible for locating persistent object, we adopted pointer swizzling in DBC++ to achieve that goal. Pointer swizzling consists of control component and computing component. We implemented two kinds of control component: page-based and pointer-based, and join them into a self-adaptive framework. The self-adaptive method can trigger automatically to transfer persistent data by hardware interrupt and software control unit, and then manage the pointer swizzling in a controllable step. This method was also used for multi-page objects that we not only guaranteed system bootstrap can be done smoothly but also supported consistency of operation. In computing component, we complete the detail swizzlings on regular pointers and C++ hidden pointers, and work out the problem that the hidden pointers cant' be wrapped if adopted the common pointer-based method. According to our addressing method, both the persistent data and the transient data are managed without modifying any part of language compiler. We used heap for persistent storage, and tackled a series of technical problems such as management of interleaved heaps, clustering, programming interface of persistent heap and the like, Moreover, we give the solutions for big objects' storage, prefetching and scheduling. For the sake of testing object storage scenarios on memory-mapping database, we used the OO7 benchmark database as data source and examined the impact of different physical storage (segregated vs. best-fit) upon space utilization and speed of navigation/scan, and obtained the effect of different clustering upon data tested. After reviewing the existing GC work, we chose treadmill GC that was only used for dynamic memory management before in accord with the specialties of memory-mapping database. We maintained tri-color invariants in tri-color marking and implemented the incremental version of treadmill GC that amortized the cost, showed high performance, and maintained the semantics of transaction as well. Furthermore we enhance our GC by following stepwise style. Aiming at OQL, we treated type as monoid (collection monoid and primitive monoid), and used monoid comprehension as OQL's intermediate representation. Therefore we can merge the rewrite rules for a number of collection types, then employ monoid comprehension in defining algebraic operators, as cut out the limit that in relational algebra/calculus algebraic operators are only for set. Based on monoid comprehension, we presented an extendable object query translation algorithm which can deal with nested subquery, query with existential and universal quantifier, query with aggregate function, query with sort/group. This algorithm converted the query into joints to the utmost to expect different physical implementations of join to raise execution efficiency.
语种: 中文
内容类型: 学位论文
URI标识: http://ir.iscas.ac.cn/handle/311060/6454
Appears in Collections:中科院软件所

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

Recommended Citation:
金蓓弘. 面向对象数据库的实现技术研究[D]. 中国科学院软件研究所. 中国科学院软件研究所. 1999-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