1. 程式人生 > >作業系統檔案管理

作業系統檔案管理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

 博文很長,我把一章的內容都總結在這裡了。


       在現代計算機系統中,要用到大量的程式和資料,因記憶體容量有限,且不能長期儲存,故而平時總是把它們以檔案的形式存放在外存中,需要時再隨時將它們調入記憶體。如果由使用者直接管理外存上的檔案,不僅要求使用者熟悉外存特性,瞭解各種檔案的屬性,以及它們在外存上的位置,而且在多使用者環境下,還必須能保持資料的安全性和一致性。顯然,這是使用者所不能勝任、也不願意承擔的工作。於是,取而代之的便是在作業系統中又增加了檔案管理功能,即構成一個檔案系統,負責管理在外存上的檔案,並把對檔案的存取、共享和保護等手段提供給使用者。這不僅方便了使用者,保證了檔案的安全性,還可有效地提高系統資源的利用率。

1. 有關檔案的概念

檔案 :

具有符號名(檔名)的一組相關元素的有序序列,是一段程式或資料的集合。 

檔案系統:

是作業系統中統一管理資訊資源的一種軟體,管理檔案的儲存、檢索、更新,提供安全可靠的共享和保護手段,並且方便使用者使用。 
檔案系統包含檔案管理程式(檔案與目錄的集合)和所管理的全部檔案 , 是使用者與外存的介面 , 系統軟體為使用者提供統一方法(以資料記錄的邏輯單位),訪問儲存在物理介質上的資訊。

有關直接(隨機)存取裝置的磁碟知識:硬碟的讀寫原理和磁碟碎片的產生

2. 檔案的分類

       按性質和用途分類系統檔案、庫檔案、使用者檔案。 

       系統檔案 :由系統軟體構成的檔案,只允許使用者通過系統呼叫或系 統提供的專用命今來執行它們,不允許對其進行讀寫和修改。主要有作業系統核心 和各種系統應用程式或實用工具程式和資料組成 
        庫檔案: 檔案允許使用者對其進行讀取和執行,但不允許對其進行 修改 。主要由各種標準子程式庫組成 
        使用者檔案 :

是使用者通過作業系統儲存的使用者檔案,由檔案的所有者 或所有者授權的使用者才能使用 。主要由使用者的源程式原始碼、可執行目標程式的檔案和 使用者資料庫資料等組成 。

      按操作保護分類:只讀檔案、可讀可寫檔案、 可執行檔案。
       只讀檔案:只允許檔案主及被核準的使用者去讀檔案,而不允許寫檔案。標記為:-r----- 
       可讀可寫檔案:允許檔案主及被核準的使用者去讀和寫檔案。標記為: -rw---- 
       可執行檔案:允許檔案主及被核準的使用者去呼叫執行該檔案而不允許讀和寫檔案,標記為:  ---x--- 

      按使用者觀點分類( UNIX系統檔案分類

      普通檔案(常規檔案)  :是指系統中最一般組織格式的檔案,一般是字元流組成的無結構檔案 
       目錄檔案 :是由檔案的目錄資訊構成的特殊檔案,作業系統將目錄也做成檔案,便於統一管理 
       特殊檔案(裝置驅動程式) 

      按檔案的邏輯結構分為:流式檔案(,無結構作業系統檔案)、記錄式檔案(有結構的資料庫檔案)。

       流式檔案:這是直接由字元序列(字元流)所構成的檔案,故又禰為流式檔案 

大量的源程式、可執行檔案、庫函式等,所採用的就是無結構的檔案形式,即流式檔案。其長度以位元組為單位。對流式檔案的訪問,則是採用讀/寫指標來指出下一個要訪問的字元。可以把流式檔案看做是記錄式檔案的一個特例。在 UNIX 系統中,所有的檔案都被看做是流式檔案,即使是有結構檔案,也被視為流式檔案,系統不對檔案進行格式處理。 

       記錄式檔案:由若干個記錄所構成的檔案,故又稱為記錄式檔案。也叫資料庫檔案。

        可採用多種方式組織記錄,形成不同的檔案:  

①順序檔案:是由一系列記錄按某種順序排列所形成的檔案。 

②索引檔案:當記錄為可變長度時,通常為之建立一張索引表。  

③索引順序檔案:它為檔案建立一張索引表,為每一組記錄中的第一個記錄設定一個表項。   

     按檔案的物理結構分類 順序檔案(也叫串聯檔案,連續檔案)、連結檔案、索引檔案、HASH檔案、索引順序檔案。 

     按檔案的存取方式:順序存取檔案、隨機存取檔案。

     管理資訊系統中,按檔案的組織方式分類:順序檔案、索引檔案、直接存取檔案。

      按檔案中的資料形式分類 
      原始檔 :
由源程式和資料構成的檔案 
      目標檔案 :由源程式經過相應的計算機語言編譯程式編譯,但尚未經過連結程式連結的目的碼所形成的檔案

3. 檔案的存取方式

   檔案的存取方式是由檔案的性質和使用者使用檔案的情況決定。   1 順序存取。   2 隨機存取(也叫直接存取)

        3  索引存取

        磁帶是順序存取。磁碟是隨機存取。

3. 1. 順序存取

    順序存取是按照檔案的邏輯地址順序存取。

  固定長記錄的順序存取是十分簡單的。讀操作總是讀出上一次讀出的檔案的下一個記錄,同時,自動讓檔案記錄讀指標推進,以指向下一次要讀出的記錄位置。如果檔案是可讀可寫的。再設定一個檔案記錄指標,它總指向下一次要寫入記錄的存放位置,執行寫操作時,將一個記錄寫到檔案 末端。允許對這種檔案進行前跳或後退N(整數)個記錄的操作。順序存取主要用於磁帶檔案,但也適用於磁碟上的順序檔案。
 
可變長記錄的順序檔案,每個記錄的長度資訊存放於記錄前面一個單元中,它的存取操作分兩步進行。讀出時,根據讀指標值先讀出存放記錄長度的單元 。然後,得到當前記錄長後再把當前記錄一起寫到指標指向的記錄位置,同時,調整寫指標值 。
    由於順序檔案是順序存取的,可採用成組和分解操作來加速檔案的輸入輸出。


3. 2. 直接存取(隨機存取法)

     很多應用場合要求以任意次序直接讀寫某個記錄。例如,航空訂票系統,把特定航班的所有資訊用航班號作標識,存放在某物理塊中,使用者預訂某航班時,需要直接將該航班的資訊取出。直接存取方法便適合於這類應用,它通常用於磁碟檔案。
    為了實現直接存取,一個檔案可以看作由順序編號的物理塊組成的,這些塊常常劃成等長,作為定位和存取的一個最小單位,如一塊為
1024位元組、4096位元組,視系統和應用而定。於是使用者可以請求讀塊22、然後,寫塊48,再讀塊9等等。直接存取檔案對讀或寫塊的次序沒有限制。使用者提供給作業系統的是相對塊號,它是相對於檔案開始位置的一個位移量,而絕對塊號則由系統換算得到。

3.3. 索引存取

      第三種類型的存取是基於索引檔案的索引存取方法。由於檔案中的記錄不按它在檔案中的位置,而按它的記錄鍵來編址,所以,使用者提供給作業系統記錄鍵後就可查詢到所需記錄。
    通常記錄按記錄鍵的某種順序存放,例如,按代表健的字母先後次序來排序。對於這種檔案,除可採用按鍵存取外,也可以採用順序存取或直接存取的方法。資訊塊的地址都可以通過查詢記錄鍵而換算出。實際的系統中,大都採用多級索引,以加速記錄查詢過程。

4. 幾種常見的檔案物理結構

幾種常見的檔案物理結構:

        順序檔案(也叫串聯檔案,連續檔案)、連結檔案、索引檔案、HASH檔案、索引順序檔案。

5. 順序檔案

         是指檔案中的物理記錄按其在檔案中的邏輯記錄順序依次存入儲存介質而建立的。即順序檔案中物理記錄的順序和邏輯記錄的順序是一致的。

順序檔案在儲存介質中可以有兩種不同的實現結構:連續結構和鏈結構
        連續結構:是一種最簡單的物理檔案結構,它把邏輯上連續的檔案資訊依次存放在連續編號的物理塊中。即次序相繼的兩個物理記錄在儲存介質上的位置是相鄰的。也稱為連續檔案

圖5.19給出了連續結構檔案的圖形說明。在圖中,一個邏輯塊號為0、1、2、3的檔案依次存放在物理塊15、16、17、18中。

                

                                          5.19連續結構檔案的示意圖件
     連續檔案結構的優點是一旦知道了檔案在檔案儲存裝置上的起始地址(首塊號)和文圖5.19連續結構檔案的示意圖件長度(總塊數),就能很快地進行存取。但是連續結構檔案在建立檔案時必須在檔案說明資訊中確定檔案資訊長度,且以後不能動態增長;而且在檔案進行某些部分的刪除後,又會留下無法使用的零頭空間。因此,連續結構不宜用來存放使用者檔案、資料庫檔案等經常被修改的檔案。

     連續結構的優點是:

     (1)結構簡單;

     (2)順序訪問速度快,對於等長記錄的連續檔案可以進行順序存取,也可以進行類似折半查詢的隨機存取,但是對於不等長記錄的連續檔案只能進行順序存取; 
     (3)因為資料集中存放在連續的盤塊中,訪問時所需的尋道次數和尋道時間少。  

     連續結構儲存的缺點:

     (1)由於插入和刪除記錄會引起其它記錄的移動,在外存中執行此操作會引起磁頭的頻繁來回移動,因此連續結構只能在檔案的末尾插入記錄,刪除記錄時,只作標記進行邏輯刪除,只有使用者指定物理刪除時才真正刪除相應記錄,進行記錄的移動;

     (2)順序檔案需要連續的盤塊存放資料,因此,在插入記錄時如果原來分配的盤塊已沒有空閒空間,而與其鄰接的盤塊也不空閒時,需要重新在外存中查詢新的較大的空閒空間,並將原有資料移動到新空間中,然後才能插入新的資料,因此,連續結構不易動態增長,而且外存容易存在碎片。 

    鏈結構將邏輯上連續的檔案資訊分散存放在若干不連續的物理塊中,其中每個物理塊設有一個指標,指向其後續連線的另一個物理塊。即物理記錄的次序由指標相連結串列示。也稱串聯檔案

    圖5.20給出了鏈結構檔案的物理結構。使用鏈結構時,不必在檔案說明資訊中指明檔案的長度,只要指明該檔案的第一個塊號就可以按鏈指標檢索整個檔案。鏈結構的另一個特點是檔案長度可以動態地增長,只要調整鏈指標就可在任何一個資訊塊之間插入或刪除一個資訊塊。

                

                                  圖5.20鏈結構檔案的示意圖

    檔案採用鏈結構時,邏輯塊到物理塊的轉換由系統沿鏈查詢與邏輯塊號對應的物理塊號的辦法完成。例如,在圖5.20的檔案結構中,如果使用者所要進行操作的邏輯塊號為2,則系統從第一個物理塊20開始,一直沿鏈搜尋到邏輯塊號為2的第三塊時,得到其所對應的物理塊號為22。因此,鏈結構不適宜隨機存取訪問。

     鏈結構主要優點是: 

     (1)提高了磁碟空間利用率,解決了磁碟碎片問題; 

     (2)便於檔案的插入和刪除操作; 
     (3)便於檔案的動態增長。 
    從本質上講,順序檔案就是線性表,因而對順序檔案的各種操作與線性表類似,但是,外存的訪問速度比主存要慢的多,在考慮演算法時要立足於儘量減少外存的訪問次數,尋道次數和尋道時間。  

     磁帶是典型的順序存取裝置,因此儲存在磁帶上的檔案只能順序檔案。

6. 索引檔案

1.索引檔案
       建立一張邏輯記錄和物理記錄之間對應關係的索引表。這類包括資料去和索引表兩大部分的檔案稱做索引檔案 2.索引表組成
      索引表由若干索引項組成。一般索引項由主關鍵字和該關鍵字所在記錄的實體地址組成。如圖6.1(b)。
      注意: 索引表必須按主關鍵字有序,而主檔案本身則可以按主關鍵字有序或無序。
3.索引順序檔案和索引非順序檔案
      (1)索引順序檔案(Indexed Sequential File):主檔案按主關鍵字有序的檔案稱索引順序檔案。
      在索引順序檔案中,可對一組記錄建立一個索引項。這種索引表稱為稀疏索引。
     (2)索引非順序檔案(Indexed NonSequentail File):主檔案按主關鍵字無序得檔案稱索引非順序檔案。
      在索引非順序檔案中,必須為每個記錄建立一個索引項,這樣建立的索引表稱為稠密索引。
  注意:
     ① 通常將索引非順序檔案簡稱為索引檔案。
     ② 索引非順序檔案主檔案無序,順序存取將會頻繁地引起磁頭移動,適合於隨機存取,不適合於順序存取。
     ③ 索引順序檔案的主檔案是有序的,適合於隨機存取、順序存取。
     ④ 索引順序檔案的索引是稀疏索引。索引佔用空間較少,是最常用的一種檔案組織。
     ⑤ 最常用的索引順序檔案:ISAM檔案和VSAM檔案。

4. 索引檔案操作:     

1). 檢索方式為:直接存取和按關鍵字存取。“檢索”將分兩步進行:先查索引表,利用折半查詢法去檢索索引表,然後根據索引中指標所指記錄(索引項指示的外存實體地址)讀取外存記錄。

   注意:①索引表不大時,索引表可一次讀入記憶體,在索引檔案中檢索只需兩次訪問外存:一次讀索引,一次讀記錄。
             ②由於索引表有序,對索引表的查詢可用順序查詢或二分查詢等方法。

2).插入記錄時,“記錄”插入在主檔案的末尾,而相應的“索引項”必須插入在索引的合適位置上。因此,最好在建索引表時留有一定“空位”。

3).刪除記錄時,僅需刪除索引表中相應的索引項即可。

4).更新記錄時,應將更新後的記錄插入在主檔案的末尾,同時修改相應的索引項

    

              圖6.1 (a) 主檔案(資料區)  (b) 索引表        c(輸入過程中建立的索引表) 


5. 利用查詢表建立多級索引 

1)查詢表

         對索引表建立的索引,稱為查詢表。查詢表的建立可以為佔據多個頁塊的索引表的查閱減少外存訪問次數。

         圖6.1 (b)的索引表佔用了三個頁塊的外存,每個頁塊能容納三個索引項,則可為圖6.2所示。檢索記錄時,先查詢查詢表,再查索引表,然後讀取記錄,三次訪問外存即可。

           

                圖6.2  圖6.1(b) 索引表的索引,

2)多級索引
     當查詢表中專案仍很多,可建立更高一級的索引。通常最高可達四級索引:
     資料檔案一索引表一查詢表一第二查詢表一第三查詢表。
    【例】檢索過程從最高一級索引--第三查詢表開始,需要5次訪問外存。:

      
    注意:
     ① 多級索引是一種靜態索引
     ② 多級索引的各級索引均為順序表,結構簡單,修改很不方便,每次修改都要重組索引。

3)動態索引
    當資料檔案在使用過程中記錄變動較多時,利用二叉排序樹(或AVL樹)、B-樹(或其變型)等樹表結構建立的索引,為動態索引。
   1)樹表特點
     ① 插入、刪除方便
     ② 本身是層次結構,無須建立多級索引
     ③ 建立索引表的過程即為排序過程。
   (2)樹表結構選擇
     ① 當資料檔案的記錄數不很多,記憶體容量足以容納整個索引表時,可採用二叉排序樹(或AVL樹)作索引;
     ② 當檔案很大時,索引表(樹表)本身也在外存,查詢索引時訪問外存的次數恰為查詢路徑上的結點數。採用m階B-樹(或其變型)作為索引表為宜(m的選擇取決於索引項的多少和緩衝區的大小)。
   (3)外存的索引表的查詢效能評價
    由於訪問外存的時間比記憶體中查詢的時間大得多,所以外存的索引表的查詢效能主要著眼於訪問外存的次數,即索引表的深度。

優缺點:

    索引結構是鏈式結構的一種擴充套件,除了具備鏈式結構的優點外,還克服了它只能作順序存取的缺點,具有直接讀寫任意一個記錄的能力,便於檔案記錄的插入、刪除、修改。

    索引檔案的缺點是:增加了索引表的空間開銷和查詢時間,索引表的資訊量甚至可能遠遠超過檔案記錄本身的資訊量。

   有兩種典型的索引順序檔案

一、ISAM檔案:ISAM(IndexSequential Access Method)(索引順序存取方法)是一種專為磁碟存取設計的檔案組織方法。

二、VSAM檔案:VSAM(Vistual Storage Access Method)檔案是利用作業系統中提供的虛擬儲存器的功能組織的檔案,免除了使用者為讀/寫記錄時直接對外存進行的操作,對使用者而言,檔案只有控制區間和控制區域等邏輯儲存單位

7. ISAM檔案和VSAM檔案


7.1 ISAM檔案

1. ISAM檔案組成

        ISAM為Indexed Sequential Access Method(索引順序存取方法)的縮寫,它是一種專為磁碟存取檔案設計的
檔案組織方式,採用靜態索引結構。  
        由於磁碟是以盤組、柱面和磁軌三級地址存取的裝置,所以可對磁碟上的資料檔案建立盤組、柱面和磁軌三級索引。 

1)磁軌索引

    磁軌索引中的每一個索引項,都由兩個子索引項組成:基本索引和溢位索引項,每一子索引項又由關鍵字和指標兩項組成。 
    基本索引項關鍵字記錄該磁軌中最大(最末一個記錄)的關鍵字,指標記錄該磁軌中第一記錄的位置;    

    溢位索引項記錄該磁軌中溢位的記錄的最鍵字,指標記錄溢位區中的第一個記錄。 

2)柱面索引

    柱面索引每一索引項由關鍵字和指標兩項組成,關鍵字記錄該柱面中最大(最末一個記錄)的關鍵字,指標記錄該柱面中磁軌索引的位置。

3)主索引
    柱面索引存放在某個柱面上,如果柱面索引過大,佔多個磁軌時,則建立柱面索引的索引—主索引。

    因此,ISAM檔案由多級主索引、柱面索引、磁軌索引和主檔案組成。檔案存放記錄時遵循下面原則:

    記錄在同一盤組上存放時,應先集中放在一個柱面上,然後再順序存放在相鄰的柱面上;對同一柱面,則應按盤面的次序順序存放。   

    各種索引項結構如圖7.1所示:

     ->-> 

     

                    圖7.1

    圖7.2 為一ISAM檔案結構示意圖,從圖中可看出,主索引是柱面索引的索引,這裡只有一級主索引。

    

                       7.2 VSAM檔案示意圖

     當檔案佔用的柱面索引很大,使得一級主索引也很大時,可採用多級主索引。當然,若柱面索引較小時,則主索引可省略。通常主索引和柱面索引放在同一個柱面上(圖7.2是放在0號柱面上),主索引放在該柱面最前面的一個磁軌上(圖7.2中
放在0柱面0磁軌上),其後的磁軌中存放柱面索引。每個存放主檔案的柱面都建立有一個磁軌索引,放在該柱面的最前面的磁軌T0上,其後的若干個磁軌是存放主檔案記錄的基本區,該柱面最後的若干個磁軌是溢位區。基本區中的記錄是按主關鍵字大小順序儲存的,溢位區 被整個柱面上的基本區中各磁軌共享,當基本區中某磁軌溢位時,就將該磁軌的溢位記錄,按主關鍵字大小鏈成一個連結串列(溢位連結串列)放入溢位區。  

2. ISAM檔案的檢索 

     在ISAM檔案上檢索記錄時,過程如下:

     1)從主索引出發,找到相應的柱面索引;

     2)從柱面索引找到記錄所在柱面的磁軌索引;

     3)從磁軌索引找到記錄所在磁軌的起始地址,由此出發在該磁軌上進行順序查詢,直到找到為止。

     若找遍該磁軌均不存在此記錄,則表明該檔案中無此記錄;若被查詢的記錄在溢位區,則可從磁軌索引項的溢位索引項中得到溢位連結串列的頭
指標,然後對該表進行順序查詢。 

     例如,要在圖7.2中查詢記錄R136,先查主索引,即讀入C0T0;因為136<286,則查詢柱面索引的C0T1,即讀人C0T1;因為136<145,所以進一步把C1T0讀入記憶體;查磁軌索引,因為90<136<145,所以C1T2即為R136所存放的磁軌,讀人C1T2後即可查得R136。  
     為了提高檢索效率,通常可讓主索引常駐記憶體,並將柱面索引放在資料檔案所佔空間居中位置的柱面上,這樣,從柱面索引查詢到磁軌索引時,磁頭移動距離的平均值最小。  

3.ISAM檔案的插入操作 
    當插人新記錄時,首先找到它應插入的磁軌,若該磁軌不滿,則將新記錄插入該磁軌的適當位置上即可;若該磁軌已滿,則新記錄或者插在該磁軌上,或者直接插入到該磁軌的溢位連結串列上。插入後,可能要修改磁軌索引中的基本索引項和溢位索引項。 

    (1)插入R65,首先將1柱面1磁軌中大於65的記錄順次後移,導致R90溢位至溢位區T11’0(11磁軌0塊中),造成磁軌T1中最大關鍵字成為R80,修改磁軌索引,將基本項中最大關鍵字90修改為80,將溢位項中最大關鍵字改為90,指標指向T11’0(溢位連結串列頭在11磁軌0塊中),然後在相應位置插入R65。  
    例如,在圖7.2中依次插入R65 R95和R83。  
    (2)插入R95,使得T2中的R145溢位至溢位區T11’1,修改相應磁軌索引。(3)插入R83,因為80<83<90,則83直接插入溢位區T11’2中,其指標指向T11’0,並修改磁軌1的溢位連結串列,使得表頭指向T11’2。  插入完成後的結果如圖7.3所示。  

    

圖7.3 VSAM

4. ISAM檔案的刪除操作 
      ISAM檔案中刪除記錄的操作,比插入簡單得多,只要找到待刪除的記錄,在其儲存位置上作刪除標記即可,而不需要移動記錄或改變指標。在經過多次的增刪後,檔案的結構可能變得很不合理。此時,大量的記錄進入溢位區,而基本區中又浪費很多的空間。因此,通常需要週期性地整理ISAM檔案,把記錄讀入記憶體重新排列,複製成一個新的ISAM檔案,填滿基本區而空出溢位區。 

7.2 VSAM檔案

   VSAM是Virtual Storage Access Method(虛擬儲存存取方法)的縮寫,它也是一種索引順序檔案的組
織方式,採用B+樹作為動態索引結構。這種檔案組織方式利用了作業系統中提供的虛擬儲存器的功能,使用者讀/寫記錄時不必再考慮外儲存器中的柱面、磁軌等具體儲存資訊,檔案只有控制區間和控制區域等邏輯儲存單位,這種儲存方式可以在一個磁軌中放個控制區間,也可以一個控制區間跨個磁軌。  

1. VSAM檔案結構  

   VSAM檔案的結構由三部分組成:  索引集  順序集  資料集

   

                       圖 7.4 

2.VSAM檔案中控制區間的結構 

    在VSAM檔案中,記錄可以是定長的也可以是不定長的。因而在控制區間中,除了存放記錄本身之外,還有每個記錄的控制資訊(如記錄的長度等)和整個區間的控制資訊(如區間中存放的記錄數等),控制區間的結構如圖7.5所示。在控制區間上存取一個記錄是需從控制區間的兩端出發同時向中間掃描。

    

                   圖7.5 VSAM檔案控制區間結構圖

3.VSAM檔案的插入 
    VSAM檔案中沒有溢位區,解決插入的方法是在初建檔案時留出空間:一是每個控制區間內不填滿記錄,在最末一個記錄和控制資訊之間留有空隙;二是在每個控制區域中有一些完全空的控制區間,並在順序集的索引中指明這些空區間。當插入新記錄時,大多數的新記錄能插入到相應的控制區間內,但要注意:為了保持區間內記錄的關鍵字從小至大有序,則需將區間內關鍵字大於插入記錄關鍵字的記錄,向控制資訊的方向移動。 

    若在若干記錄插入之後控制區間已滿,則在下一個記錄插入時,要進行控制區間的分裂,即把近乎一半的記錄移到同一控制區域內全空的控制區間中,並修改順序集中相應索引。倘若控制區域中已經沒有全空的控制區間,則要進行控制區域的分裂,此時順序集中的結點亦要分裂,由此需要修改索引集中的結點資訊。但由於控制區域較大,通常很少發生分裂的情況。   

4. VSAM檔案的刪除 

    在VSAM檔案中刪除記錄時,需將同一控制區間中,比刪除記錄關鍵字大的記錄向前移動,把空間留給以後插人的新記錄。若整個控制區間變空,則回收用作空閒區間,且需刪除順序集中相應的索引項。  

5. VSAM檔案的優點 
   
和ISAM檔案相比,基於B+樹的VSAM檔案有如下優點:能保持較高的查詢效率,查詢一個後插入記錄和查詢一個原有記錄具有相同的速度;動態地分配和釋放儲存空間,可以保持平均75%的儲存利用率;而且永遠不必對檔案進行再組織。因而基於B+樹的VSAM檔案,通常被作為大型索引順序檔案的標準組織。 

8. Hash(直接檔案)檔案

1. Hash檔案 

    雜湊(Hash)檔案又稱雜湊檔案或者直接存取檔案,是利用雜湊函式法組織的檔案,它類似於雜湊表,即根據檔案記錄的關鍵字的特點,設計一種雜湊函式和處理衝突的方法,從而將記錄雜湊到外儲存器上。由於雜湊檔案中通過計算來確定一個記錄在儲存裝置上的儲存位置,因而邏輯順序的記錄在實體地址上是不相鄰的,因此雜湊檔案不宜使用磁帶儲存,只適宜使用磁碟儲存;並且雜湊檔案這種結構只適用於定長記錄檔案和按主鍵隨機查詢的訪問方式。 

    雜湊檔案的組織方法與雜湊表的組織方法相比有一點不同。對於雜湊檔案來說,磁碟上的檔案記錄通常是成組存放的,若干個記錄組成一個稱為桶的儲存單位。假若一個桶能存放m個記錄,即m個雜湊函式值相同的記錄可以存放在同一個桶中,而當第m+1個雜湊函式值相同的記錄出現時才發生衝突。 

2. 鏈地址法解決衝突的方法是
    雜湊檔案中處理衝突的方法也可採用雜湊表中處理衝突的各種方法,但鏈地址法是雜湊檔案處理衝突
的首選方法。  
    當某個桶中的雜湊函式值相同的記錄超過m個時,便產生“溢位”,此時會動態生成一個桶以存放那些溢位的雜湊函式值相同的記錄。通常把存放前m個雜湊函式值相同的記錄的桶稱為基桶,把存放溢位記錄的桶稱為溢位桶。基桶和溢位桶的結構相同,均為m個記錄的陣列加一個桶地址指標。  

    當某個基桶未溢位時,基桶中的指標為空;當基桶溢位時,動態生成一個溢位桶存放溢位記錄,基桶中的指標置為指向該溢位桶;若溢位桶中的雜湊函式值相同的記錄再溢位時,再動態生成第二個溢位桶存放溢位記錄,第一個溢位桶中的指標置為指向第二個溢位桶。這樣就構成了一個連結             

                   圖8.1 hash檔案。 

例如,假定某個檔案有20個記錄,其關鍵字集合為{2,23,5,26,1,3,24,18,27,12,7,9,4,19,6,16,33,11,10,13}。桶的容量=3,桶
數=7,用除留餘數法作雜湊函式H(key)=key%7,其對應的雜湊檔案如圖8.1所示。 

3.在雜湊檔案中查詢記錄 
       首先根據待查記錄的關鍵字值求得雜湊地址(即基桶地址),將基桶的記錄讀入記憶體進行順序查詢,若找到某記錄的關鍵字等於待查記錄的關鍵字,則查詢成功;若基桶內無待查記錄且基桶內指標為空,則檔案中沒有待查記錄,查詢失敗;若基桶內無待查記錄且基桶內指標不空,則將溢位桶中的記錄讀入記憶體進行順序查詢,若在某個溢位桶中查詢到待查記錄,則查詢成功;若所有溢位桶鏈內均未查詢到待查記錄,則查詢失敗。 

4.雜湊檔案中刪去一個記錄  
    僅需對被刪記錄作刪除標記即可。  

6.雜湊檔案的優點是:  

(1)檔案隨機存放,記錄不需進行排序;  

(2)插入、刪除方便;  

(3)存取速度快; 

(4)不需要索引區,節省儲存空間。 

7.雜湊檔案的缺點是: 
     (1)不能進行順序存取,只能按關鍵字隨機存取; 
     (2)詢問方式限於簡單詢問; 
    (3)在經過多次插入、刪除後,可能造成檔案結構不合理,需要重新組織檔案。

9. 多重檔案

1.多重表文件 
    多重表文件是一種將索引方法和連結方法相結合的組織方式,他對主關鍵字建立主索引,對每個需要查詢的次關鍵字均建立一個索引,同時將具有相同次關鍵字的記錄連結成一個連結串列,並將此連結串列的頭指標、連結串列長度及次關鍵字,作為索引表的一個索引項。通常多重表文件的主檔案是一個順序檔案。如圖:

    

2. 倒排檔案 
      倒排檔案和多重表文件構造相似,主要區別在於在次關鍵字索引中,具有相同次關鍵字的記錄之間不設指標進行連結,而是在倒排表中列出具有該次關鍵字記錄的所有物理記錄號。 倒排檔案中的次關鍵字索引稱做倒排表。倒排表和主檔案一起就構成了倒排檔案。上例檔案中的倒排表如圖9.2所示。   

    

               圖9.2 倒排表

3. 倒排檔案的應用 
    倒排檔案應用非常廣泛,例如在WEB或者其它文字搜尋引擎的設計中,在搜尋引擎收集完資料進行預處理時,搜尋
引擎往往需要一種高效的資料結構來對外提供檢索服務,而現行最有效的資料結構就是倒排檔案,他是搜尋引擎的核心內容之一。

    詳細內容請看:倒排索引-搜尋引擎的基石


參考:


《資料結構(C語言版)》.嚴蔚敏_吳偉民

《計算機作業系統教程》張堯學 第三版

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述