25 文件的邏輯結(jié)構(gòu)

1 概述

文件系統(tǒng)設(shè)計的關(guān)鍵要素是指將這些記錄構(gòu)成一個文件的方法,以及將一個文件存儲到外存上的方法啰扛。事實上璧坟,對于任何一個文件,都存在以下兩種形式的結(jié)構(gòu):邏輯結(jié)構(gòu)與物理結(jié)構(gòu)

1.1 文件的邏輯結(jié)構(gòu)

這是從用戶觀點出發(fā)觀察到的文件組織形式讶隐,是用戶可以直接處理的數(shù)據(jù)及其結(jié)構(gòu)起胰,它獨立于文件的物理特性,又稱為文件組織巫延。

1.2 文件的物理結(jié)構(gòu)

又稱為文件的存儲結(jié)構(gòu)效五。是指文件在外存上的組織形式,這不僅與存儲介質(zhì)的存儲性能有關(guān)炉峰,而且與所采用的外存分配方式有關(guān)畏妖。

2 文件邏輯結(jié)構(gòu)的類型

有結(jié)構(gòu)文件指的是一個以及以上的記錄構(gòu)成的文件,故又把它稱為記錄式文件疼阔;無結(jié)構(gòu)文件是指字符流構(gòu)成的文件戒劫,故又稱為流式文件

2.1 有結(jié)構(gòu)文件

在記錄式文件中婆廊,每個記錄都是用于描述實體集中的一個實體迅细,各記錄有著相同或不同數(shù)目的數(shù)據(jù)項。記錄長度可分為定長和不定長的兩類淘邻。

  • 定長記錄
    這是指文件中所有記錄的長度都是相同的們所有記錄中個數(shù)據(jù)項都是處在記錄相同的位置茵典,具有相同的順序和長度。廣泛用于數(shù)據(jù)處理中宾舅。

  • 不定長記錄
    這是指文件中各記錄的長度不相同统阿。例如病例記錄中的病因彩倚、病史等。

有結(jié)構(gòu)文件按記錄的組織形式可以分為:順序結(jié)構(gòu)扶平、索引結(jié)構(gòu)帆离、索引順序結(jié)構(gòu)。

2.2 無結(jié)構(gòu)文件

如果說大量的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫是采用結(jié)構(gòu)的形式文件的話蜻直,則大量的源程序盯质、可執(zhí)行文件、庫函數(shù)等概而,所采用的則是無結(jié)構(gòu)的文件形式呼巷,即流式文件。

對流式文件的訪問是采用讀寫指針指出下一個要訪問的字符赎瑰⊥鹾罚可以把流式文件看做是記錄式文件的一個特例。

注意:在unix中餐曼,所有文件都被看做是流式文件压储,即使是記錄式(有結(jié)構(gòu))文件也被視為流式文件,系統(tǒng)不對文件進(jìn)行格式處理源譬。

3 順序文件

文件中的記錄一個接一個地順序排列集惋,記錄可以是定長的或變長的,可以順序存儲或以鏈表形式存儲踩娘,在訪問時需要順序搜索文件刮刑。順序文件有以下兩種結(jié)構(gòu):

  • 串結(jié)構(gòu)
    記錄之間的順序與關(guān)鍵字無關(guān)。通常的辦法是由時間決定养渴,即按存入時間的先后排列雷绢,最先存入的記錄作為第1個記錄,其次存入的為第2個記錄理卑,依此類推翘紊。
  • 順序結(jié)構(gòu)
    指文件中的所有記錄按關(guān)鍵字順序排列。

在對記錄進(jìn)行批量操作時藐唠,即每次要讀或?qū)懸淮笈涗浄保瑢樞蛭募男适撬羞壿嬑募凶罡叩?/em>;此外宇立,也只有順序文件才能存儲在磁帶上踪宠,并能有效地工作,但順序文件對查找泄伪、修改殴蓬、增加或刪除單個記錄的操作比較困難匿级。

可以為順序文件配置一個運行記錄文件(事務(wù)文件)蟋滴。把試圖增加染厅、刪除或修改的信息記錄其中,規(guī)定每隔一定時間津函,例如4小時肖粮,將運行記錄文件與原來的主文件加以合并,產(chǎn)生一個關(guān)鍵字排序的新文件尔苦。

4 索引文件

對于定長記錄文件涩馆,如果要查找第i個記錄,可直接根據(jù)下式計算來獲得第i個記錄相對于第一個記錄的地址:


然而允坚,對于可變長記錄的文件魂那,要查找第i個記錄時,必須順序地查找前i-1個記錄稠项,從而獲得相應(yīng)記錄的長度Li涯雅,然后才能按下式計算出第i個記錄的首址:

變長記錄文件只能順序查找,系統(tǒng)開銷較大展运。為此可以建立一張索引表以加快檢索速度活逆,索引表本身是定長記錄的順序文件。在記錄很多或是訪問要求高的文件中拗胜,需要引入索引以提供有效的訪問蔗候。實際中,通過索引可以成百上千倍地提高訪問速度埂软。

由于索引文件有較快的檢索速度锈遥,故它主要用于信息處理的及時性要求比較高的場合,例如飛機(jī)訂票系統(tǒng)仰美。

5 索引順序文件

索引順序文件是順序和索引兩種組織形式的結(jié)合迷殿。索引順序文件將順序文件中的所有記錄分為若干個組,為順序文件建立一張索引表咖杂,在索引表中為每組中的第一個記錄建立一個索引項庆寺,其中含有該記錄的關(guān)鍵字值和指向該記錄的指針。

對于含有N個記錄的順序文件诉字,查找某關(guān)鍵字值的記錄時平均需要查找N/2次懦尝。

在索引順序文件中,假設(shè)N個記錄分為N1/2組壤圃,索引表中有N1/2個表項陵霉,每組有N1/2個記錄,在查找某關(guān)鍵字值的記錄時伍绳,先順序查找索引表踊挠,需要查找(N1/2)/2次,然后再在主文件中對應(yīng)的組中順序查找,也需要查找(N1/2)/2次效床,這樣總共查找***(N1/2)/2+(N1/2)/2=N1/2次***睹酌。

顯然,索引順序文件提高了查找效率剩檀,如果記錄數(shù)很多憋沿,可以釆用兩級或多級索引。索引文件和索引順序文件都提高了存取的速度沪猴,但因為配置索引表而增加了存儲空間辐啄。

6 直接文件或散列文件(Hash File)

給定記錄的鍵值或通過Hash函數(shù)轉(zhuǎn)換的鍵值直接決定記錄的物理地址。這種映射結(jié)構(gòu)不同于順序文件或索引文件运嗜,沒有順序的特性壶辜。

散列文件有很高的存取速度,但是會引起沖突担租,即不同關(guān)鍵字的散列函數(shù)值相同士复。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市翩活,隨后出現(xiàn)的幾起案子阱洪,更是在濱河造成了極大的恐慌,老刑警劉巖菠镇,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗荸,死亡現(xiàn)場離奇詭異,居然都是意外死亡利耍,警方通過查閱死者的電腦和手機(jī)蚌本,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隘梨,“玉大人程癌,你說我怎么就攤上這事≈崃裕” “怎么了嵌莉?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捻脖。 經(jīng)常有香客問我锐峭,道長,這世上最難降的妖魔是什么可婶? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任沿癞,我火速辦了婚禮,結(jié)果婚禮上矛渴,老公的妹妹穿的比我還像新娘椎扬。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布蚕涤。 她就那樣靜靜地躺著晶府,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钻趋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天剂习,我揣著相機(jī)與錄音蛮位,去河邊找鬼。 笑死鳞绕,一個胖子當(dāng)著我的面吹牛失仁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播们何,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼萄焦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了冤竹?” 一聲冷哼從身側(cè)響起拂封,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鹦蠕,沒想到半個月后冒签,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡钟病,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年萧恕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肠阱。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡票唆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屹徘,到底是詐尸還是另有隱情走趋,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布噪伊,位于F島的核電站吆视,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏酥宴。R本人自食惡果不足惜啦吧,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拙寡。 院中可真熱鬧授滓,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至淮摔,卻和暖如春私沮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背和橙。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工仔燕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人魔招。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓晰搀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親办斑。 傳聞我的和親對象是個殘疾皇子外恕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容