网站大量收购独家精品文档,联系QQ:2885784924

【PPT】-第四章数据的存储方法.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【PPT】-第四章数据的存储方法

第四章 数据的存储方法;4.1 数据元素的表示; 从本质上来说,所有的数据类型是一个字节序列。例如,INTEGER一般用两个或四个字节来表示,FLOAT一般用四个或八个字节来表示。 整数和实数的具体表示由机器的硬件来确定。;1. 固定长度的字符串;2。 可变长度的字符串;3。日期和时间类型;4。枚举类型;建立固定长度的记录;MovieStar关系的例子; 当元组不是存储在主存,而是存储在外存中时,我们就必须留心它的组织问题。当我们从外存中读取数据块到主存中时,数据块的头地址应被放入4的倍数的主存地址处。最保险的做法是同样要求记录的每个域的头地址是4或8的倍数。 应做到以下两点: 每个记录在数据块中的开始地址是4的倍数; 记录中的每个域对于数据块开始地址的偏移量是4的倍数。 ;MovieStar每个域的开始地址都是4的倍数;记录的头信息; 对例4.6中的结构进行修改,加进12个字节的头信息。开始4个字节用来表示记录类型。它实际上是指向存储关系的视图指针。第二部分用4个字节来表示记录的长度。第三部分用来表示元组加入或最后一次更新的时间,它也是四个字节。 这样记录的长度变为316个字节。;;将定长记录组成数据块; 记录长为316个字节。假使我们使用的是长为4096个字节的数据块。对于这些空间,12个被用于数据块的头信息,余下4084个字节来存储数据。这样我们在每个数据块中放了12个316字节的记录,即块因子为12。 该数据块则浪费了292个字节的空间。;块和记录地址的表示;c/s结构的DBMS的地址空间问题; 客户应用进程使用传统的虚拟地址空间。一般用32位来表示一个地址,这样可表示40亿个不同的地址。 操作系统和DBMS确定应将哪一部分地址空间装入内存,同时硬件建立虚拟地址空间到主存中物理地址的映射。 我们将不再研究这种虚拟到物理地址的转换,而着重考虑调入内存中的数据块如何将用户地址空间转换到物理地址空间。 ;数据块和记录在外存中的真实地址。用物理地址中的一个或几个字节来指出如下信息: 这个存储器是在那一台主机上(如果数据库是存储在多台计算机中)。 数据块所在的磁盘号或别的设备号。 磁盘中的柱面号。 柱面中的磁道号。 在磁道中的数据块号。 数据块中的记录项对于数据块头的偏移量。 ; 物理地址可能很长。例如,假使一个数据库系统的设计寿命是100年。在将来,这个系统也许要联入100万台机器,而每台机器以每十亿分之一秒产生一个对象。那么这个系统大概要存储277个对象,这就要求最少用10个字节来表示物理地址。由于我们还需预先保留一些字节来表示主机等,所以这个系统的物理地址就需要10个以上的字节来表示。;⒉ 逻辑地址;逻辑和物理地址的转换 ; 当然,为了找到记录,我们需要有足够的有关它位置的信息。最简单的例子是定长记录,如果它的关键字的偏移量已知。另外从数据块的头信息中就可知道该块包含有多少记录,据这些信息我们就能从数据块中方便的找到相应的记录。; 一个简单而有效的办法是给每个数据块保存 一个记录的偏移量表。; 在c/s结构的数据库系统中,每个数据块、每个记录、每个对象或别的可引用的数据项都有两种形式的地址: ⒈ 服务器的数据库地址空间中的编址。通常用8个字节来表示一个地址。我们称它为数据库地址。 ⒉ 虚拟存储器中的地址(为内存工作缓冲区地址)。通常由4个字节组成。我们称之为内存地址。;转换数据库地址到内存地址的表;为避免重复地进行数据库地址和内存地址的转换 采用指针置换的方法;两种类型的指针;指针置换的方法;定位数据块中的指针。例如: (1)如果数据块中存有记录的视图,那么它就告诉人们在记录中的什么地方是指针。 (2)如果数据块中使用的是索引结构,数据块中的指针位置也是可知的。 (3)在数据块头信息中记录指针所在的位置。 当一个数据块刚刚调入内存时,我们就将该块的一些地址加进地址转换表内,这时我们能确切地知道该块在内存中的地址。所以,我们可直接了当的为这些数据库地址生成对应的内存地址。如果我们将一个数据库地址A插入地址转换表时,发现A已在表中,这是因为A所在的数据块在先前已进入内存。在这种情况下,我们用对应的内存地址去代替数据块中A的地址,并且将标志位置成“1”。另一方面,如果A不在置换表中,则它所在的数据块还未调入内存。则不能置换该指针,而是将它继续以数据库指针的形式留在数据块中。; 如果我们要跟踪指针P,但它是没有被置换过的指针,那么我们必须将包含指针P所指数据项的数据块B放入内存中(不然我们无法跟踪该指针)。 查询地址转换表来确定在内存中是否有和指针P对应的单元。如果没有,将数据块B调入内存缓冲区中。一旦数据块B也在内

您可能关注的文档

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档