- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
进行清点,超市还要随时调整各连锁店的商品分布。这种情况下,供应数量不仅记录了关于商品的数量信息,更是一种管理手段,因此,供应关系可以保留,但是商品实体本身的现有数量属性可以删除。将该E-R图转化为关系模型的步骤作为习题请读者独立完成。8.6对象数据库的存储数据库在物理上由若干个文件组成,文件由若干个定长的存储单元(即存储块)构成。在关系数据库中,存储单元包含若干条数据记录,是数据库存储分配和数据传输的单位。在对象数据库中,也可以利用文件的组织技术(如堆组织、顺序组织、散列组织和聚簇组织等技术)来管理存储对象。然而,为了支持对象数据库的特性,对以集合为值的字段和持久化指针,需要在文件系统上添加一些附加特性,这些针对对象数据库存储的特性将在本节进行介绍。8.6.1对象到文件的映射对象到文件的映射与关系数据库中元组到文件的映射在很多方面很类似。在数据表示的物理层,元组和对象的数据部分都只是简单的字节序列,因此只需对文件结构做一些改动,就可以用来存储对象数据。对象数据库中的对象与关系数据库中的元组不同之处在于对象可能缺少关系数据库中元组结构的一致性。例如,记录的字段可能是集合或另一个记录,而在关系数据库中,记录的字段具有相似的结构和相同的大小。此外,对象可能非常大,如图片集或视频。这种对象必须采用与关系数据库中的记录不同的方式进行管理。对含有少量元素的集合类型字段,可以使用链表之类的数据结构,而拥有大量元素的集合类型字段可以利用嵌套关系模式,将集合类型字段转化为数据库中的关系来存储。实际上,对象数据库的存储系统提供了一个以集合类型字段创建的表的视图。对数据库应用中特别大的且不易被分解成更小片段的大对象,可以在一个单独的文件中进行存储。8.6.2对象标识的实现对象数据库中的对象是由对象标识符(OID)标识的。为了方便定位对象,对象存储系统提供两种对象标识符来标识对象:逻辑标识符和物理标识符。1.逻辑标识符逻辑标识符是数据库对象与应用之间的接口,它并没有指明对象的位置,而由存储系统维护从逻辑标识符映射到对象实际位置的索引,通过索引定位到对象的实际位置。2.物理标识符物理标识符的编码中包含对象的位置,系统可以通过物理标识符直接找到对象。物理标识符通常由卷或文件标识、卷或文件中的页标识、页中的偏移量和唯一标识构成,如图8.30所示。其中,卷是一个逻辑存储单元,通常对应于一个磁盘。唯一标识是一个整数,用于将OID从以前曾经恰好存储在相同位置并被删除或移动到别处的其他对象的标识符中区分开来。物理标识符既可以存于物理OID中,也可存于对象中,并和相关对象匹配。当物理OID中的唯一标识符和OID所指的对象中的唯一标识符不匹配时,系统就检测到这个指针是“虚悬指针”,即没有指向合法对象的指针,并且发出一个错误信号,如图8.31所示。图8.30物理标识符的结构图8.31OID中的唯一标识符当使用一个已删除的旧对象的物理OID时,就会产生虚悬指针。如果系统不能检测“虚悬访问”,那么重新分配在同一空间新的对象就可能被当作旧对象访问,甚至被破坏。因而,唯一标识符有助于检测“虚悬访问”的错误。当对象需要移动到磁盘的其他位置时,通常不改变对象的OID,而是在旧的位置留下一个转向地址,并将新的物理OID指向不再包含这个对象的旧块的地址。当数据库试图定位这个对象时,它将通过转向地址找到该对象。8.6.3持久化指针的管理对象在数据库中通过持久化指针进行定位。有些系统的持久化指针采用物理OID,有些系统的持久化指针采用逻辑OID。根据给定标识符寻找对象的动作称为解引用(Dereferencing)。持久化指针的寻址空间是整个数据库的地址空间,对应二级存储器中的地址,通常至少为8个字节。而对象的内存指针,即虚拟内存中的地址(假如数据项正缓存在虚拟内存中),通常为4个字节。如果将对象从数据库载入内存,就需要一个机制将对象在虚存中的数据库地址转换成它的内存地址,而通过指针混写就可以避免将数据库地址重复转换成内存地址的开销。指针混写(PointerSwizzling)是一种减少定位已存在于内存中的持久化对象所需代价的方法。它的思想是,当一个持久化指针第一次解引用时,系统定位这个对象,如果它不在内存中,就将它放入内存,然后进行指针混写。当相同的持久化指针被再次解引用时,系统可以直接读出它在内存中的位置,从而避免定位对象的代价。指针混写分为软件混写和硬件混写两种方式。软件混写是用对象的内存指针取代持久化指针,当对象被写回数据库时,它所包含的任何被混写的持久化指针需要反混写(Deswizzled),即把它们转回持久化表示。软件混写的缺点是使缓冲区
文档评论(0)