- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
继承性 ORDBMS支持继承性,一般适用于ADT 系统实现中的一些问题 查询处理和优化 存储结构 并发控制 方法的实现、管理和调用 模式演化 查询处理与优化 ODBMS/ORDBMS基本与RDBMS相同 特点 元数据复杂性和规模显著增加 查询优化策略需要调整 合理设置索引是提高查询速度的重要措施 索引的范围多样化 在类上建立索引 在类层次结构上建立索引 在集合上建立索引 在复杂对象的路径上建立索引 按函数值建立索引 存储结构 ODBMS/ORDBMS基本与RDBMS相同 特点 物理簇集 访问简单对象 访问复杂对象(可能要访问许多不同类的对象) 不同的访问有不同的簇集要求。 “权衡”是解决矛盾的传统方法 平均访问性能较好的折衷簇集方案 平均访问性能较好的折衷簇集方案 c2 b2 d2 a2 (b)O2 c1 b1 d1 a1 (a)O1 c3 b3 d3 a3 (c)O3 c4 b4 d4 a4 (d)O4 a4 a3 a2 a1 b4 b3 b2 b1 c4 c3 c2 c1 d4 d3 d2 d1 按类簇集 d1 c1 b1 a1 d2 c2 b2 a2 d3 c3 b3 a3 d4 c4 b4 a4 按复杂对象簇集 b2 a2 b1 a1 b4 a4 b3 a3 d2 c2 d1 c1 d4 c4 d3 c3 综合簇集 平均访问性能较好的折衷簇集方案 2 2 2 2 综合簇集 2.5 4 1 4 按复杂对象簇集 2.5 4 4 1 按类簇集 平均 最坏 查询(2) 查询(1) 查询 簇集 查询(1)查询某类的全部对象 查询(2)查询复杂对象所含的全部对象 一般来说,在每个综合簇集块中,可含X个复杂对象的对象和Y个类的对象。调节X和Y的值,可满足很广的访问要求。 复杂对象在磁盘上的存储结构是设计对象数据库要考虑的问题。 2、内外存存储结构的转换 对象数据库中,一般用逻辑指针(OID)表示对象间的联系。在磁盘上存有对象OID到对象在磁盘上地址的映射表。此表称为持久对象地址表,简称POAT,如果对象在磁盘上迁移,只须相应修改POAT。 当数据被取入内存,在内存中生成一个对象的OID到对象在内存中地址的映射表,简称ROAT。 为了对复杂对象的操作节省CPU开销,一般把驻留对象中以OID表示的属性值转换成内存地址,称呼为磁盘到内存的对象引用变换(引用变换)。 事务结束后,把指针还原成OID,称呼为内存到磁盘的对象引用变换(逆引用变换)。 在查找一个对象时,首先查ROAT,如果所找对象已在内存,则不必到磁盘上去取;如果不在内存,则查POAT,找到该对象在磁盘上的地址,并取该对象到内存,在ROAT表中登记。在写回磁盘时,首先内存指针恢复为OID,然后再按POAT表中的磁盘地址将该对对象写回磁盘,并删除该对象在磁盘上的表目。 并发控制 并发控制在原理上与关系数据库相似,即采用封锁 对象一般选做最小并发控制粒度 封锁粒度 1. 单粒度封锁 以对象作为唯一封锁粒度。一般提供共享锁S和排他锁X 2. 简单多粒度封锁 数据库 类 对象 类级封锁只隐含封锁类的直属实例,并不隐含封锁类的所有子类及其实例。 提供S、X、IS、IX、SIX等类型的锁 3. 复杂多粒度封锁 在2的基础上,增加两种封锁类层次的锁,即类层次读锁RL和类层次写锁WL: RL:一个类如果加了RL锁,相当于在这个类及其所有子类上都加了锁 WL:一个类如果加了WL锁,相当于在这个类及其所有子类上都加了X锁 A B C D E I H F G J K IS IS RL WL RL WL RL RL WL WL 发生了冲突 问题在于H的多继承上。因此增加规则: 当在某个类上加RL或WL锁时,除在其超类链上加IS或IX锁外,还要向下检查其子类的隐含锁是否与其他事务冲突,如果冲突,则拒绝该锁的申请。 值得注意的是,一个类的超类链可能不止一条,但只要在其中任一条链上加IS或IX锁就行了。 类层次封锁总结 若要在某个类上加RL(WL)锁,可按如下步骤: 在该类的任一超类链和数据库上,加IS(IX)锁 在该类上加RL(WL)锁 自上而下检查该类的子类有无于RL(WL)冲突的锁,若无冲突,可在最先遇到的多继承类上加RL(WL)锁,子类检查终止 在以上步骤中,如果发现冲突,则RL(WL)锁申请失败 方法的实现、管理和调用 DBMS和用户定义的函数有多种途径结合。最简单的是静态连接法(把函数和DBMS的其他程序一起,编译成可执行文件) 缺点: 占用很多内存资源 在增、删、改用户定义的函数时,必须重
文档评论(0)