複製鏈接
請複製以下鏈接發送給好友

循序存取

鎖定
計算機科學中,循序存取意指一組序列(例如存於記憶數組、磁盤軟件或是磁帶中的資料)是以預先安排,有秩序的方式被人存取。循序存取有時只是存取數據方式,磁帶即屬一例。循序存取亦有可能成為有選擇性的方式,就如我們純粹有意順序處理一組資料元件。 [1] 
中文名
循序存取
外文名
Sequential access
特    點
預先安排,有秩序的方式被人存取
作    用
存放檔案資料的媒體的一種方法

循序存取研究背景

使用計算機處理資料常見的作業程序是建檔、更新和取用三個步驟。建檔是指將資料儲存在磁帶或磁碟中;更新是指根據異動資料來修正檔案的內容,以確保檔案的正確性和完整性;取用則指利用檔案提取或製作信息。一個良好檔案必備的條件很多,簡言之,就是符合目標、使資料存得多、找得快、費用低廉及操作簡單。要達到這些要求必須講究檔案設計的方法,底下將分檔案資料的型式和性質、檔案組織的型態及其優缺點和適用對象與時機、檔案的性能、設計的原則以及分析師的步驟等來討論。
存放檔案資料的媒體和方法很多,在計算機資料處理方面以磁帶和磁碟最為普遍。磁帶上的檔案資料只能以循序方式來處理,而磁碟中的檔案資料則可以隨機方式作業,因此一般的計算機系統大都以磁碟為主要的輔助存儲器。一般常見的傳統檔案有下列三種:循序存取檔(SequentialAccessMethodFile簡稱SAM檔)、隨機存取檔(RandomAccessMethodFile簡稱RAM檔)和索引循序存取檔(IndexSequentialAccessMethodFile簡稱ISAM檔)。另外有一種新的檔案設計,請查閲本冊數據庫設計一詞。底下將分述上面三種組織形態的檔案,及其優缺點和適用對象與時機。

循序存取簡介

循序存取檔:循序存取法是最基本的檔案設計方法,各個資料錄依照鍵號的順序存放在磁帶或磁碟上,在更新或取用時也須依照鍵號的順序循序處理,因此異動資料須事先分類(Sorting)。此種檔案在成批作業(BatchOrientedDataProcessing)時最常使用。成批作業就是將一企業的異動資料先集中成批,收集到一定數量後才做整批處理。成批作業常出現於週期性業務的處理,例如庫存清單登記、每月賬目處理和一季税收報告等等。循序存取檔建檔的主要步驟為:1.打開檔(OpenFile);2.讀取資料並將它移到輸出區域;3.將資料寫到媒體(磁帶或磁碟)上。
對於數據結構當中,如果某人只能開啓一組包含特一排列的數值,該組數據結構即屬循序存取,而正準的例子就如連結串列。另外,含有循序存取的索引需要大O符號(k值)的若干時間,而k值則為變址。結果,不少算法如快速排序及二元搜尋會將算法變壞,令其比起原本算法變得較底效率。因此,這類算法之後會成一組缺乏隨機存取的無用算法。相反,通常不會作出索引的部分算法只需循序存取方式,例如合併排序,它們就無需遭受處置。 [2] 

循序存取優點

  • 不便於中間插入新的資料;
  • 不能隨機處理資料,異動資料必須事先分類,且在大量的主檔中尋找少部分的資料時很不方便;
  • 不能借助系統程序管理資料,用户的程序設計負擔較重。

循序存取缺點

  • 不便於中間插入新的資料;
  • 不能隨機處理資料,異動資料必須事先分類,且在大量的主檔中尋找少部分的資料時很不方便;
  • 不能借助系統程序管理資料,用户的程序設計負擔較重。

循序存取適用對象與時機

  • 可以用來存放表格性質的資料;
  • 可以當作分類時的工作區;
  • 可以用於活動比率高的更新作業處理。

循序存取相關介紹

循序存取索引循序存取檔

索引循序存取法是最常用的檔案設計方法。各個資料錄在磁碟中是依照鍵號的順序循序存放,但另外有一索引區域存放某些鍵號資料的存放位址,在更新或取用資料錄時,可以利用這些索引區確定資料錄約存放區域。索引存取檔是由索引區、純資料區和溢位區所組成。索引區又分三個索引階層,是存放索引的區域;純資料區是存放資料的區域;溢位區則存放超溢資料的區域。

循序存取隨機存取檔

隨機存取法處理資料錄時不須仰賴循序順序,克服了循序存取檔的最大限制。此種檔案在存放資料錄時,是將其鍵號透過某一公式計算而得出存放位址;更新或取用資料錄時,也是按照同一公式計算得其存放位址。當兩個不同的鍵號具有相同的存放位址時,通常是把後來的資料錄放在溢位區(OverflowArea),而兩資料錄間有鏈連結,計算機可依此鏈找到所要的資料錄。一個良好的隨機存取檔,求算位址的公式應當簡單易算,而且算得同一位址的機率要低;當算得同一位址時也要有一套簡便的方法來處理。
參考資料
  • 1.    Ahmad I. Easy and Efficient Disk I/O Workload Characterization in VMware ESX Server[C]// IEEE, International Symposium on Workload Characterization. IEEE Computer Society, 2007:149-158.
  • 2.    Li C, Shilane P, Douglis F, et al. Assert(!defined(sequential I/O))[C]// Hotstorage. 2014:10-10.