欢迎来到天天文库
浏览记录
ID:27757995
大小:286.84 KB
页数:53页
时间:2018-12-05
《数据的存储方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章数据的存储方法这一章将系统地回答以下一些问题:怎样在域中表示SQL的数据类型?怎样用记录来表示元组?怎样在内存块中表示记录或元组的集合?怎样存储对象关系型数据?例如对象标识符(或别的指向记录的指针)和大对象(例如2GB的MPEG格式的视频信息)。当一些域被更新而引起记录长度改变时,应该做什么?同时怎样的结构才能适合变长记录的需要。4.1数据元素的表示用SQL语言的CREATETABLE定义了一个关系:CREATETABLEMovieStar(nameCHAR(30)PRIMARYKEY,addressVARCHAR(255),genderCHAR(1),bir
2、thdateDATE);从本质上来说,所有的数据类型是一个字节序列。例如,INTEGER一般用两个或四个字节来表示,FLOAT一般用四个或八个字节来表示。整数和实数的具体表示由机器的硬件来确定。数据元素的表示1.固定长度的字符串定义格式:CHAR(5)存储格式:cat╄╄。这里’╄’是用来进行填补的字符。它补全了第四和第五个字符2。可变长度的字符串定义格式:VARCHAR(N)存储格式:1)。正文长度加一。我们为一个字符串分配N+1个字节。2)。使用空白终结符。同样我们为一个字符串分配N+1个字节。在字符串的最后一个字节上填放空白终结符。3。日期和时间类型一个日期实
3、际上就是有一定格式的固定长度的字符串。所以日期可以用定长的字符串方法来表示。用8个字符表示。如,’20:19:02’表示下午8点19分2秒4。枚举类型据需要给每个元素分配一个整型值,用它来表示枚举类型的值如:集合{RED,GREEN,BLUE,YELLOW}。可以将RED表示成0,GREEN表示成1,BLUE表示成2,YELLOW表示成3。这样它们可用两位来表示:00、01、10和11。而如果我们采用整个字节来表示它们会更方便。例如,YELLOW可被用3来表示,用整个字节为00000011。建立固定长度的记录MovieStar关系的例子。它有四个域:name:具有3
4、0个字节的字符串。address:用VARCHAR(255)定义。这个域用256个字节来存储。gender:单字节。它的值一般是’F’或’M’。birthdate:是日期类型。MovieStar关系的例子当元组不是存储在主存,而是存储在外存中时,我们就必须留心它的组织问题。当我们从外存中读取数据块到主存中时,数据块的头地址应被放入4的倍数的主存地址处。最保险的做法是同样要求记录的每个域的头地址是4或8的倍数。应做到以下两点:每个记录在数据块中的开始地址是4的倍数;记录中的每个域对于数据块开始地址的偏移量是4的倍数。MovieStar每个域的开始地址都是4的倍数记录的
5、头信息当我们设计记录格式时,需要考虑怎样存储那些不属于记录值而又必须被保存的信息。例如下面这些信息:记录的视图,更具体的说,在记录中保存一个指向DBMS存储记录类型的指针;记录的长度;表示记录最后一次被读或写的标记。因此在记录的格式中,需考虑用一些字节来存储记录附加的信息。对例4.6中的结构进行修改,加进12个字节的头信息。开始4个字节用来表示记录类型。它实际上是指向存储关系的视图指针。第二部分用4个字节来表示记录的长度。第三部分用来表示元组加入或最后一次更新的时间,它也是四个字节。这样记录的长度变为316个字节。例4.6中的结构进行修改加进头信息将定长记录组成数据
6、块数据块的头信息,通常含有以下信息:数据块之间的联系信息。该数据块在整个数据块集合中所起的作用。该数据块所表示的元组属于那一个关系。每个记录在数据块中的偏移量。数据块号。该数据块最后一次被修改或更新的时间标志。记录长为316个字节。假使我们使用的是长为4096个字节的数据块。对于这些空间,12个被用于数据块的头信息,余下4084个字节来存储数据。这样我们在每个数据块中放了12个316字节的记录,即块因子为12。该数据块则浪费了292个字节的空间。考虑数据块的头信息块和记录地址的表示在我们考虑怎样表示那些具有更复杂数据结构的记录之前,我们必须先考虑怎样对记录和块编址,
7、以及怎样去表示那些指向数据块的指针。在数据块装入内存的缓冲区时,数据块的地址可使用数据块的第一个字节的虚拟存储地址。同样记录在数据块内的地址为记录的第一个字节的虚拟内存地址。但是,当数据块在外存中时,该数据块并不作为应用程序虚拟地址空间的一部分。我们采用字节的序列来表示数据块在整个DBMS可管理的数据中的位置,它包括:磁盘的设备标识号,盘上柱面号等等。我们给定记录所在的数据块和它在数据块中的偏移量就可找到该记录。c/s结构的DBMS的地址空间问题一个数据库系统有一个服务器进程,用于从外存提取数据交给一个或多个客户进程。客户进程处理所送来的数据。服务器进程和客户进
此文档下载收益归作者所有