文件的逻辑结构(顺序文件,索引文件)

所谓的“逻辑结构”,就是指在用户看来,文件内部的数据应该是如何组织起来的。
而“物理结构”指的是在操作系统看来,文件的数据是如何存放在外存中的。

1.无结构文件

无结构文件:文件内部的数据就是一系列二进制流或字符流组成。无明显的逻辑结构。
又称“流式文件”。如:Windows操作系统中的.txt文件。

2.有结构文件

有结构文件:由一组相似的记录组成,又称“记录式文件”。
每条记录又若干个数据项组成。如:数据库表文件。
一般来说,每条记录有一个数据项可作为关键字。
根据各条记录的长度(占用的存储空间)是否相等,又可分为定长记录和可变长记录两种。

1.顺序文件

顺序文件:文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。
各个记录在物理上可以顺序存储或链式存储。

  • 顺序存储:逻辑上相邻的记录物理上也相邻(类似于顺序表)
  • 链式存储:逻辑上相邻的记录物理上不一定相邻(类似于链表)
  • 串结构:记录之间的顺序与关键字无关。
  • 顺序结构:记录之间的顺序按关键字顺序排列。
1.链式存储

无论是定长/可变长记录,都无法实现随机存取,每次只能从第一个记录开始依次往后查找

2.顺序存储
  1. 可变长记录

无法实现随机存取。每次只能从第一个记录开始依次往后查找

  1. 定长记录

可实现随机存取。记录长度为L,则第i个记录存放的相对位置是i*L。
若采用串结构,无法快速找到某关键字对应的记录。
若采用顺序结构,可以快速找到某关键字对应的记录(如折半查找)。

结论:
定长记录的顺序文件,若物理上采用顺序存储,则可实现随机存取;
若能再保证记录的顺序结构,则可实现快速检索(即根据关键字快速找到对应记录).

顺序文件的缺点是增加/删除一个记录比较困难(如果是串结构则相对简单).

2.索引文件

在这里插入图片描述

建立一张索引表以加快文件检索速度。每条记录对应一个索引项。
索引表本身是定长记录的顺序文件。因此可以快速找到第i个记录对应的索引项。

可将关键字作为索引号内容,若按关键字顺序排列,则还可以支持按照关键字折半查找。

每当要增加/删除一个记录时,需要对索引表进行修改。
由于索引文件有很快的检索速度,因此主要用于对信息处理的及时性要求比较高的场合

3.索引顺序文件

索引顺序文件是索引文件和顺序文件思想的结合。
索引顺序文件中,同样会为文件建立一张索引表,但不同的是:并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项

索引顺序文件的索引项也不需要按关键字顺序排列,这样可以极大地方便新表项的插入。
在这里插入图片描述

1.检索效率分析
  1. 若一个顺序文件有10000个记录,则根据关键字检索文件,只能从头开始顺序查找(这里指的并不是定长记录、顺序结构的顺序文件),平均须查找5000个记录。
  2. 若采用索引顺序文件结构,可把10000个记录分为100组,每组100个记录。
    则需要先顺序查找索引表找到分组(共100个分组,因此索引表长度为100,平均需要查50次),
    找到分组后,再在分组中顺序查找记录(每个分组100个记录,因此平均需要查50次)。
    可见,采用索引顺序文件结构后,平均查找次数减少为50+50= 100次。

4.多级索引顺序文件

为了进一步提高检索效率,可以为顺序文件建立多级索引表。
例如,对于一个含 1 0 6 10^6 106个记录的文件,可先为该文件建立一张低级索引表,
每100个记录为一组,故低级索引表中共有10000个表项(即10000个定长记录),
再把这10000个定长记录分组,每组100个,为其建立顶级索引表,故顶级索引表中共有100个表项。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/111614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SortedSet 和 List 异同点

SortedSet 在 Java 的整个集合体系中,集合可以分成两个体系,一个是 Collection 存储单个对象的集合,另一个是 k-v 结构的 Map 集合。 SortedSet 是 Collection 体系下 Set 接口下的派生类,而 Set 集合的特征是不包含重 复的元素的…

Linux screen命令解决SSH远程服务器训练代码断开连接后运行中断

Linux screen命令解决SSH远程服务器训练代码断开连接后运行中断_linux screen ssh-CSDN博客 xshell远程连接服务器,screen指令进行后台任务运行_xshell创建screen-CSDN博客

pytest合集(11)— conftest.py文件

1、conftest.py文件 conftest.py文件是pytest框架中的一个特殊文件,用于定义共享的设置、夹具(fixture)和钩子函数(hook)。 在pytest中,conftest.py文件可以用于在整个测试项目中共享夹具、配置和钩子函数。通过在conftest.py文…

(论文翻译)UFO: Unified Feature Optimization——UFO:统一特性优化

作者: Teng Xi 论文总结:总结 Code: https://github.com/PaddlePaddle/VIMER/tree/main/UFO 摘要: 本文提出了一种新的统一特征优化(Unified Feature Optimization, UFO)范式,用于在现实世界和大规模场景下训练和部署深度模型…

迭代器-面试

迭代器-面试 Object.prototype[Symbol.iterator] function () {return Object.values(this)[Symbol.iterator](); };var [a, b] { a: 1, b: 2 };console.log(a, b);解释 Object.prototype[Symbol.iterator] function () {return Object.values(this)[Symbol.iterator](); …

新媒体运营的营销方案

一、目标客户群体 新媒体运营是通过社交媒体、短视频、直播等方式将信息快速传播出去,因此,适合的目标客户群体应该是年轻人群体,包括大学生、职场青年、年轻家庭等。 二、营销策略 1、社交媒体营销策略 借助社交媒体平台,建立企…

asp.net特色商品购物网站系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net特色商品购物网站系统 是一套完善的web设计管理系统,系统采用mvc模式(BLLDALENTITY)系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 vs2010,数据库为sqlserver2008&a…

安装Apache2.4

二、安装配置Apache: 中文官网:Apache 中文网 官网 (p2hp.com) 我下的是图中那个版本,最新的64位 下载下后解压缩。如解压到D:\tool\Apache24 PS:特别要注意使用的场景和64位还是32位版本 2、修改Apcahe配置文件 具体步骤: 打…

利用ZipInputStream(解压)/ZipOutputStream(压缩)文件夹

在操作.zip的压缩包时,可以用到高级流ZipInputStream和ZipOutputStream。.zip文件中的每个文件夹和文件都是一个ZipEntry对象。解压和压缩的本质就是操作每个ZipEntry对象,只能操作后缀为.zip的文件 1 解压.zip文件 ZipInputStream,解压。是…

Required MultipartFile parameter ‘file‘ is not present

出现这个原因我们首先想到的是加一个RequestParam("file")&#xff0c;但是还有可能的原因是因为我们的名字有错误 <span class"input-group-addon must">模板上传 </span> <input id"uploadFileUpdate" name"importFileU…

内衣专用洗衣机怎么样?选购内衣裤洗衣机的方法

有的小伙伴在问内衣洗衣机有没有必要入手&#xff0c;答案是有必要的&#xff0c;贴身衣物一定要和普通衣服分开来洗&#xff0c;而且用手来清洗衣物真的很耗时间而且还清洗不干净&#xff0c;有了内衣洗衣机&#xff0c;我们不仅可以解放双手&#xff0c;在清洗过程中还能更加…

安装Python没有pip python3.8为啥没安装pip

以管理员打开&#xff0c;很&#xff01;重&#xff01;要&#xff01; 进入存储路径: (获取存储路径的方法&#xff1a;在python中 import sys sys.path ) 1,cd C:\Python38\Scripts\dist\pip-23.3 python下安装pip: python setup.py install 回车后&#xff0c;安装开始运行…

实现日期间的运算——C++

&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️ &#x1f4a5;个人主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王&#x1f525;&#x1f525;&#x1f525; &#x1f4a5;代码仓库&#xff1a;&#x1f525;&#x1f525;魔…

SLAM 14 notes

4.23 推导 f ( x ) f(x) f(x)在点a处的泰勒展开 f ( x ) ∑ n 0 ∞ f ( n ) a n ! ( x − a ) n f(x) \sum_{n0}^\infty \frac{f^{(n)}a}{n!}(x-a)^n f(x)∑n0∞​n!f(n)a​(x−a)n l n x lnx lnx的n阶导数 l n ( n ) x ( − 1 ) n − 1 ( n − 1 ) ! x n ln^{(n)}x \fr…

Qt文件系统模型

创建文件系统模型&#xff1a;QFileSystemModel* model new QFileSystemModel(this); 设置根目录&#xff1a;model->setRootPath(QDir::currentPath()); 为视图设置模型&#xff1a; ui.treeView->setModel(model);ui.listView->setModel(model);ui.tableView-&g…

react 中获取多个input输入框中的值的 俩种写法

目录 1. 使用受控组件 2. 使用非受控组件 1. 使用受控组件 这是React中最常见的方法&#xff0c;每个输入框都与React组件的state相关联&#xff0c;并通过onChange事件来更新state。 代码示例&#xff1a; import React, { Component } from react;class MultipleInputExam…

TCP ZeroWindow 问题

TCP Zero Window问题是指在TCP连接中&#xff0c;发送方为了保障可靠传输&#xff0c;会根据接收方反馈的窗口大小来控制发送窗口的大小&#xff0c;但当接收方窗口大小为0时&#xff0c;发送方就会停止发送&#xff0c;从而导致通讯中断的问题。下面我们将从多个方面详细阐述T…

在thonny软件里安装python包 比如 numpy pygame

有一些程序使用了第三方库。如果本地没有安装相应的Python包&#xff0c;这个程序就不能正常运行了。 Python包管理工具提供了对Python 包的查找、下载、安装、卸载的功能。 网络上有很多第三方库&#xff0c;不管要下载哪一个&#xff0c;都需要通过正确的名称来下载安装。 …

websocket+node+vite(vue)实现一个简单的聊天

1.前端逻辑 本项目基于之前搭建的vite环境&#xff1a;https://blog.csdn.net/beekim/article/details/128083106?spm1001.2014.3001.5501 新增一个登录页和聊天室页面 <template><div>登录页</div><div>用户名:<input type"text" pl…

【SA8295P 源码分析 (一)】14 - Passthrough配置文件 /mnt/vm/images/linux-la.config 内容分析

【SA8295P 源码分析】14 - Passthrough配置文件 /mnt/vm/images/linux-la.config 内容分析 系列文章汇总见:《【SA8295P 源码分析 (一)】系统部分 文章链接汇总 - 持续更新中》 本文链接:《【SA8295P 源码分析 (一)】14 - Passthrough配置文件 /mnt/vm/images/linux-la.confi…