1. 程式人生 > >檔案的邏輯結構:無結構檔案(流式檔案)和有結構檔案(記錄式檔案)

檔案的邏輯結構:無結構檔案(流式檔案)和有結構檔案(記錄式檔案)

檔案的邏輯結構是從使用者觀點出發看到的檔案的組織形式。檔案的物理結構是從實現觀點出發,又稱為檔案的儲存結構,是指檔案在外存上的儲存組織形式。檔案的邏輯結構與儲存介質特性無關,但檔案的物理結構與儲存介質的特性有很大關係。

按邏輯結構,檔案有無結構檔案和有結構檔案兩種型別:無結構檔案和有結構檔案。

無結構檔案(流式檔案)

無結構檔案是最簡單的檔案組織形式。無結構檔案將資料按順序組織成記錄並積累儲存,它是有序相關資訊項的集合,以位元組(Byte)為單位。由於無結構檔案沒有結構,因而對記錄的訪問只能通過窮舉搜尋的方式,故這種檔案形式對大多數應用不適用。但字元流的無結構檔案管理簡單,使用者可以方便地對其進行操作。所以,那些對基本資訊單位操作不多的檔案較適於釆用字元流的無結構方式,如源程式檔案、目的碼檔案等。

有結構檔案(記錄式檔案)

有結構檔案按記錄的組織形式可以分為:

1) 順序檔案。

檔案中的記錄一個接一個地順序排列,記錄可以是定長的或變長的,可以順序儲存或以連結串列形式儲存,在訪問時需要順序搜尋檔案。順序檔案有以下兩種結構:

第一種是串結構,記錄之間的順序與關鍵字無關。通常的辦法是由時間決定,即按存入時間的先後排列,最先存入的記錄作為第1個記錄,其次存入的為第2個記錄,依此類推。

第二種是順序結構,指檔案中的所有記錄按關鍵字順序排列。

在對記錄進行批量操作時,即每次要讀或寫一大批記錄,對順序檔案的效率是所有邏輯檔案中最高的;此外,也只有順序檔案才能儲存在磁帶上,並能有效地工作,但順序檔案對查詢、修改、增加或刪除單個記錄的操作比較困難。

2) 索引檔案。

如圖4-1所示。對於定長記錄檔案,如果要查詢第i個記錄,可直接根據下式計算來獲得第i個記錄相對於第一個記錄的地址:
然而,對於可變長記錄的檔案,要查詢第i個記錄時,必須順序地查詢前i-1個記錄,從而獲得相應記錄的長度L,然後才能按下式計算出第i個記錄的首址:
注意:假定每個記錄前用一個位元組指明該記錄的長度。


圖4-1  索引檔案示意圖
變長記錄檔案只能順序查詢,系統開銷較大。為此可以建立一張索引表以加快檢索速度,索引表本身是定長記錄的順序檔案。在記錄很多或是訪問要求高的檔案中,需要引入索引以提供有效的訪問。實際中,通過索引可以成百上千倍地提高訪問速度。

3) 索引順序檔案。

索引順序檔案是順序和索引兩種組織形式的結合。索引順序檔案將順序檔案中的所有記錄分為若干個組,為順序檔案建立一張索引表,在索引表中為每組中的第一個記錄建立一個索引項,其中含有該記錄的關鍵字值和指向該記錄的指標。

如圖4-2所示,主檔名包含姓名和其他資料項。姓名為關鍵字,索引表中為每組的第一個記錄(不是每個記錄)的關鍵字值,用指計指向主檔案中該記錄的起始位置。索引表只包含關鍵字和指計兩個資料項,所有姓名關鍵字遞增排列。主檔案中記錄分組排列,同一個組中關鍵字可以無序,但組與組之間關鍵字必須有序。查詢一個記錄時,通過索引表找到其所在的組,然後在該組中使用順序查詢就能很快地找到記錄。


圖4-2  索引順序檔案示意圖
對於含有N個記錄的順序檔案,查詢某關鍵字值的記錄時平均需要查詢N/2次。在索引順序檔案中,假設N個記錄分為N1/2組,索引表中有N1/2個表項,每組有N1/2個記錄,在查詢某關鍵字值的記錄時,先順序查詢索引表,需要查詢N1/2/2次,然後再在主檔案中對應的組中順序查詢,也需要查詢N1/2/2次,這樣總共查詢N1/2/2+N1/2/2=N1/2次。顯然,索引順序檔案提高了查詢效率,如果記錄數很多,可以釆用兩級或多級索引。

索引檔案和索引順序檔案都提高了存取的速度,但因為配置索引表而增加了儲存空間。

4) 直接檔案或雜湊檔案(Hash File)

給定記錄的鍵值或通過Hash函式轉換的鍵值直接決定記錄的實體地址。這種對映結構不同於順序檔案或索引檔案,沒有順序的特性。

雜湊檔案有很高的存取速度,但是會引起衝突,即不同關鍵字的雜湊函式值相同。

相關推薦

檔案邏輯結構結構檔案(檔案)結構檔案(記錄式檔案)

檔案的邏輯結構是從使用者觀點出發看到的檔案的組織形式。檔案的物理結構是從實現觀點出發,又稱為檔案的儲存結構,是指檔案在外存上的儲存組織形式。檔案的邏輯結構與儲存介質特性無關,但檔案的物理結構與儲存介質的特性有很大關係。 按邏輯結構,檔案有無結構檔案和有結構檔案兩種型別:無結構檔案和有結構檔案。 無結構檔案(

Java資料結構圖的深度優先遍歷廣度優先遍歷

更新啦,更新啦。 圖的深度優先遍歷:通過一個結點開始遍歷,直到遍歷到該結點沒有下一個結點為止,然後開始遞迴下一個結點,如果被訪問過,則跳過遍歷,依次類推。類似於一口氣到底,如果沒到底,則換個結點繼續到底。如果被訪問過的結點則不需要遍歷。 過程:A開始進入遞迴,A先列印。然後發現A的下一

利用ffmpeg修改MP4檔案頭資訊,使其支援載入及播放

最近在用AS3寫一個Flash的播放器,發現同樣都是H264編碼的mp4檔案,有的可以載入一點就開始播放,有的就必須全部載入完才能播。用本地播放器(potplayer,暴風影音等)開啟檢視,發現編碼什麼的也都是一樣的:左邊這個必須是全部載入完成才能播,右邊這個是一載入就能播。

檔案系統(01)基於SpringBoot框架,管理ExcelPDF檔案型別

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、文件型別簡介 1、Excel文件 Excel一款電子表格軟體。直觀的介面、出色的計算功能和圖表工具,在系統開發中,經常用來把資料轉存到Excel檔案,或者Excel資料匯入系統中,這就涉及資料轉換問題。 2、PDF文件 PDF是可移植文件格式,是

檔案系統(02)基於SpringBoot框架,管理XmlCSV檔案型別

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、文件型別簡介 1、XML文件 XML是可擴充套件標記語言,是一種用於標記電子檔案使其具有結構性的標記語言。標記指計算機所能理解的資訊符號,通過此種標記,計算機之間可以處理包含各種的資訊比如資料結構,格式等。它可以用來標記資料、定義資料型別,是一種

重溫四大基礎資料結構陣列、連結串列、佇列

![file](https://img2020.cnblogs.com/other/1648938/202008/1648938-20200805081813714-1550683399.jpg) # 前言 > 本文收錄於專輯:[http://dwz.win/HjK](http://dwz.win/H

[譯] 使 WebAssembly 更快Firefox 的新分層編譯器

原文地址:Making WebAssembly even faster: Firefox’s new streaming and tiering compiler 原文作者:Lin Clark 譯文出自:掘金翻譯計劃 本文永久連結:github.com/xitu/gold-m…

線性表資料結構解讀(六)鏈雜湊表結構-LinkedHashMap

    上一篇文章我和大家一起解讀了HashMap的原理原始碼,各位童鞋可以點選連結檢視線性表資料結構解讀(五)雜湊表結構-HashMap     這次我們一起來看一下LinkedHashMap,它保

機器學習,IoT醫療設備互聯

sched 尋找 研究所 可能 iges 維護 狀況 ted cti 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 讓我們來看一下機器學習是如何應用於醫護行業以及如何借助Apache Spark對患者的監控數據進行處理 現如今,IoT數據,實時流式數據分析

算法題判斷正則表達的.*的模式匹配

bool include public title turn ret att 匹配模式 判斷 題目描述 請實現一個函數用來匹配包括‘.‘和‘*‘的正則表達式。模式中的字符‘.‘表示任意一個字符,而‘*‘表示它前面的字符可以出現任意次(包含0次)。 在本題中,匹配是指字符

Vczh Library++3.0開發紀事之xmljson讀寫

    每次完成一個任務的時候,都要看看有沒有什麼潛在的可以把功能是現成庫的地方。這十分有利於提高自己的水平。但至於你寫出來的庫會不會有人用,那是另一回事情了。     這次為了完成一個多程式語言+多自然語言的文件編寫工具,不得不做一個可以一次生成一大批文字檔案的模板結構出來。有了模板必然有元資

ZooKeeper系列(9)ZooKeeper實現分布BarrierQueue

nod zookeeper instant zook conf protected tint 說了 this 1. 快速開始 1.1概述: Zookeeper是Hadoop的一個子項目,它是分布式系統中的協調系統,可提供的服務主要有:配置服務、名字服務、分布式同步、組服

理解佈局響應佈局

流式佈局:流式佈局在CSS2時代就有,主要是靠百分比進行排版,可以在不同解析度下顯示相同的版式。流式佈局:網頁中主要的劃分區域的尺寸使用百分數(搭配min-*、max-*屬性使用),例如,設定網頁主體的

imooc學習筆記——佈局熱門標籤

在看imooc打造Android中的流式佈局和熱門標籤這個課程時,感覺沒有什麼太大難度,但是一練習就發現有很多問題會不斷出現,於是就有了這個筆記….. 個人筆記,個人理解 , 如有錯誤歡迎指正 要想實現流式佈局 Android中沒有現成的控制元件,所以需要我

阿裏JAVA面試題剖析一般實現分布鎖都哪些方式?使用 Redis 如何設計分布鎖?

自己 ini 單位 nts ast 客戶端 this 失敗 獲取 面試原題 一般實現分布式鎖都有哪些方式?使用 redis 如何設計分布式鎖?使用 zk 來設計分布式鎖可以嗎?這兩種分布式鎖的實現方式哪種效率比較高? 面試官心理分析 其實一般問問題,都是這麽問的,先問問你

檔案目錄結構單級、兩級、多級(樹形)環圖目錄結構

檔案目錄結構:單級、兩級、多級(樹形)和無環圖目錄結構 與檔案管理系統和檔案集合相關聯的是檔案目錄,它包含有關檔案的資訊,包括屬性、 位置和所有權等,這些資訊主要是由作業系統進行管理。首先我們來看目錄管理的基本要求: 從使用者的角度看,目錄在使用者(應用程式)所需要的檔名和檔案之間提供

PDF學習三 PDF檔案邏輯結構

本文轉自: https://blog.csdn.net/u012632138/article/details/80648760 說明: 要解析一個PDF檔案,首先要掌握PDF的物理結構,這是第一步。但是這個僅僅只是基礎,更重要的是對PDF邏輯結構的解析。PDF的邏輯大體上

基於檔案的資料結構關於MapFile

package com.lcy.hadoop.io; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apa

基於檔案的資料結構關於SequenceFile

package com.lcy.hadoop.io; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apa

oracle體系結構+資料檔案+控制檔案+重做日誌檔案+邏輯儲存結構+表空間

oracle體系結構 1:物理儲存結構 由儲存在磁碟的作業系統檔案組成,這些檔案主要是資料檔案(*.dbf),控制檔案(*.ctl),重做日誌檔案(*.log) 2:邏輯儲存結構 一物理儲存結構