顺序存取是一种按记录的逻辑顺序进行读、写操作的存取方法1。,即按照信息在存储器中的实际位置所决定的顺序使用信息。在记录式文件中,顺序存取反映为按记录的排列顺序来存取。如果当前存取的记录为R-1,则下次要存取的记录自动地确定为R。在流式文件中顺序存取反映为当前读写指针的变化,即在存取完一段信息之后,读写指针自动加上这段信息的长度,以便指出下次存取的位置。
简介存取方式是用户通过对文件的存取完成对文件的各种操作。文件的存取方式是由文件的性质和用户使用文件的情况确定的,一般有顺序存取和随机存取两种。顺序存取是按顺序存入或检出文档中数据项的存取方法。典型的处理方式是把数据按顺序存贮在磁带上,使用时按事先确定的顺序依次提取磁带上的数据,同时按事先设计好的格式打印出来。这种方法远比随机存取更难使用,而且对于有些问题证明是不可行的。使用顺序存取的需要对于算法的选择产生了极大的而且往往是灾难性的影响。随机存取又称直接存取,即允许用户根据关键字存取文件的任何一个记录,或者根据存取命令把读写指针转移到指定位置进行读写2。
顺序文件文件是记录的集合。文件中的记录可以是任意顺序的,因此,它可以按照各种不同的顺序进行排列。一般地,可归纳为以下两种情况:
第一种是串结构,各记录之间的顺序与关键字无关。通常的办法是由时间来决定,即按存入时间的先后排列,最先存入的记录作为第一个记录,其次存入的为第二个记录……,依此类推。
第二种情况是顺序结构,指文件中的所有记录按关键字(词)排列。可以按关键词的长短从小到大排序,也可以从大到小排序;或按其英文字母顺序排序。对顺序结构文件可有更高的检索效率,因为在检索串结构文件时,每次都必须从头开始,逐个记录地查找,直至找到指定的记录,或查完所有的记录为止。而对顺序结构文件,则可利用某种有效的查找算法,如折半查找法、插值查找法、跳步查找法等方法来提高检索效率。其中又有定长的、不定长的顺序文件,只能顺序存取。。对于定长记录的顺序文件,如果已知当前记录的逻辑地址,便很容易确定下一个记录的逻辑地址。在读一个文件时,可设置一个读指针 Rptr,令它指向下一个记录的首地址,每当读完一个记录时,便执行
Rptr:=Rptr + L
操作,使之指向下一个记录的首地址,其中的 L 为记录长度。类似地,在写一个文件时,也应设置一个写指针 Wptr,使之指向要写的记录的首地址。同样,在每写完一个记录时,又须执行以下操作:
Wptr:=Wptr + L
对于变长记录的顺序文件,在顺序读或写时的情况相似,但应分别为它们设置读或写指针,在每次读或写完一个记录后,须将读或写指针加上 L。L 是刚读或刚写完的记录的长度。顺序文件的最佳应用场合是在对诸记录进行批量存取时,即每次要读或写一大批记录时。此时,对顺序文件的存取效率是所有逻辑文件中最高的;此外,也只有顺序文件才能存储在磁带上,并能有效地工作。
在交互应用的场合,如果用户(程序)要求查找或修改单个记录,为此系统便要去逐个地查找诸记录。这时,顺序文件所表现出来的性能就可能很差,尤其是当文件较大时,情况更为严重。例如,有一个含有 10 4 个记录的顺序文件,如果对它采用顺序查找法去查找一个指定的记录,则平均需要查找 5×10 3 个记录;如果是可变长记录的顺序文件,则为查找一个记录所需付出的开销将更大,这就限制了顺序文件的长度。顺序文件的另一个缺点是,如果想增加或删除一个记录都比较困难。为了解决这一问题, 可以为顺序文件配置一个运行记录文件(Log File),或称为事务文件(Transaction File),把试图增加、删除或修改的信息记录于其中,规定每隔一定时间,例如 4 小时,将运行记录文件与原来的主文件加以合并,产生一个按关键字排序的新文件3。
顺序存取设备常用的文件存储设备有磁盘、磁带、光盘等。存储设备的特性决定了文件的存取。为了有效地利用文件存储设备和便于对文件信息进行处理,通常把文件的存储空间划分为若干个大小相等的物理块。顺序存取设备是指只有当前面的物理块被存取以后,才能存取后面的物理块。磁带就是一种典型的顺序存取设备,磁带的两个相邻的物理块之间一般有一个间隙,其目的是为了让磁带机存取后面的物理块时方便地找到下个物理块的位置。
本词条内容贡献者为:
徐恒山 - 讲师 - 西北农林科技大学