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

news2024/11/17 7:18:08

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

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.coloradmin.cn/o/1113415.html

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

相关文章

ChatGPT的狂飙之路

ChatGPT的狂飙之路 第一章:AI顶流-闪耀互联网世界的新宠 根据UBS发布的研究报告显示,ChatGPT在1月份的月活跃用户数已达1亿,成为史上用户数增长最快的消费者应用。TikTok在全球上线后花了大约9个月的时间才增加了1亿用户,而Inst…

冰箱监控温度需要安装温度采集器需要什么条件

冰箱监控温度需要安装一个温度采集器在冰箱内部,以实时监测冰箱的温度。采集器可以是数字温度传感器、热敏电阻或其他类型的温度传感器。 当然也需要安装信号中继器也就是我们的智能网关,用于接收和记录温度采集器的数据。这一套系统就是温度监控系统&am…

【毕设必备】手把手带你用Python搭建一个简单的后端服务- API的创建,前后端交互的数据传递,GET,POST,JSON,FLASK

目录 Python 介绍Python的特性Python的使用场景python基本语法 FlaskViewModelControlhtmlsimple api连接数据库 跨域 Mojo比python快68000倍相关链接 Python 介绍 Python是一种流行的高级编程语言,具有易于学习和使用的特性,被广泛应用于各种领域。 P…

移动硬盘被格式化了如何恢复数据?四步教你如何恢复

在日常生活中,我们常常会使用各种存储设备来保存和备份我们的重要数据。移动硬盘作为一种便携式的存储设备,被广泛应用于数据的存储和传输。然而,有时候我们会不小心将移动硬盘格式化,从而丢失了里面的数据。本文将介绍移动硬盘格…

如何通过沉浸式投影技术提升文旅夜游的互动体验?

伴随着国民经济的提升,文旅夜游市场也开始通过各类创新设计形式,来吸引更多的游客前来打卡游玩,使其逐渐成为了当下热度较高的一种游玩模式,其中在收集各类用户的体验反馈时,沉浸式投影依靠新颖的视觉体验以及沉浸式观…

安装Apache2.4

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

2023.10.18

头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slot…

电商数据采集的10个经典方法

电商数据采集的网页抓取数据、淘宝、天猫、京东等平台的电商数据抓取&#xff0c;网页爬虫、采集网站数据、网页数据采集软件、python爬虫、HTM网页提取、APP数据抓包、APP数据采集、一站式网站采集技术、BI数据的数据分析、数据标注等成为大数据发展中的热门技术关键词。那么电…

什么是零拷贝

普通拷贝流程 在实际应用中&#xff0c;如果我们需要把磁盘中的某个文件内容发送到远程服务器上&#xff0c;那么它必须要经过几个拷贝的过程&#xff0c;。从磁盘中读取目标文件内容拷贝到内核缓冲区&#xff0c;CPU 控制器再把内核缓冲区的数据赋值到用户空间的缓冲区中&…

全志R128外设模块配置——ADC按键配置方法

ADC 按键配置方法 FreeRTOS平台上使用的按键为ADC-KEY&#xff0c;采用的ADC模块为GPADC。 按键功能驱动的实现是通过ADC分压&#xff0c;使每个按键检测的电压值不同&#xff0c;从而实现区分不同的按键。按下或者弹起中断之后&#xff0c;通过中断触发&#xff0c;主动检测…

电子技术基础之一(电容和电感)

Electronic Techonolgy 1、电容和电感1.1、电容(Capacitor)1.1.1、滤波功能1.1.2、储能功能 1.2、电感(Inductor)1.2.1、楞次定律1.2.2、储能作用 1、电容和电感 先讲一个概念&#xff0c;电流分为直流电和交流电&#xff0c;其中直流电再分为稳定直流电和脉动直流电。 直流电…

如何使用VSCode将iPad Pro转化为功能强大的开发工具?

文章目录 前言1. 本地环境配置2. 内网穿透2.1 安装cpolar内网穿透(支持一键自动安装脚本)2.2 创建HTTP隧道 3. 测试远程访问4. 配置固定二级子域名4.1 保留二级子域名4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问6. iPad通过软件远程vscode6.1 创建TCP隧道 7. ipad远…

SpringBoot (3) Profiles,外部化配置,自定义starter

目录 1 Profiles 1.1 "组件"环境隔离 1.1.1 标识环境 1.1.2 激活环境 1.2 "配置"环境隔离 1.2.1 添加"副配置文件" 1.2.2 激活环境 2 外部化配置 2.1 配置优先级 2.2 快速部署 3 自定义starter 3.1 基本抽取 3.1.1 导yaml提示包 3…

mac录屏怎么录?看这里,告别繁琐操作!

屏幕录制是mac用户在日常生活中经常需要使用到的功能&#xff0c;无论是记录游戏精彩瞬间、分享在线会议、制作教学视频还是保存重要资料&#xff0c;屏幕录制都可以帮助我们更便捷地实现这些需求。但是很多用户并不知道mac录屏怎么录。在本文中&#xff0c;我们将介绍两种mac录…

TT119电源芯片用什么代替?

根据你提供的信息&#xff0c;Tt119电源芯片的替代选项可以是AH8652芯片。 AH8652芯片采用了SOT23-3封装&#xff0c;与Tt119芯片相同。同时&#xff0c;你提到外围元件也是一模一样的&#xff0c;因此不需要进行任何更改。 AH8652芯片的输入电压范围为45V至265V&#xff0c;…

用好快捷键事半功倍!如何在Excel中快速取消隐藏的行

工作时,我们需要经常取消隐藏Excel中的行。要知道行是否被隐藏,请仔细检查行号。如果缺少某些数字,则意味着行被隐藏。这样做很容易,而且您可以用不同的快捷方式取消隐藏Excel中的行。 在本文中,我将讨论如何在各种情况下取消隐藏Excel中的行的两种快捷方式。这些快捷方式…

【JavaEE】Java的多线程编程基础知识 -- 多线程篇(2)

Java多线程编程基础知识 一、多线程的创建二、Thread类常用的方法和API2.1 Thread 的几个常见的属性2.2 start 启动一个线程2.3 终止一个线程2.4 等待一个线程-join()2.5 线程休眠函数 -sleep() 三、线程状态3.1 观察所有线程的状态3.2 线程状态和线程转移的意义 四、线程安全&…

pytorch 训练可视化

pytorch 训练可视化 1.from torch.utils.tensorboard 1.from torch.utils.tensorboard from torch.utils.tensorboard import SummaryWriter在最新版本的pytorch中官方提供了tensorboard的api。以下是官方教程的链接 https://pytorch.org/tutorials/intermediate/tensorboard…

docker企业单位私有镜像仓库 Harbor 搭建

docker私有镜像仓库 Harbor 搭建 背景说明使用环境安装部署docker安装docker-compose安装 安装 HarborHarbor UI管理docker 登录docker推送镜像和拉取镜像docker推送镜像docker 拉取镜像 背景说明 为了方便管理docker容器镜像&#xff0c;通常使用各大云平台提供的镜像服务&am…

内裤洗衣机到底值不值得买?内衣洗衣机便宜好用的牌子

有很多姐妹上班累爆了&#xff0c;回家洗澡换下的衣物还要区分开来&#xff0c;将内衣裤用来自己手洗&#xff0c;还要专门使用杀菌洗衣液才能安心&#xff0c;而且随着科技的进步&#xff0c;现在市面上拥有了一款专门为女生设计的内衣洗衣机&#xff0c;可以解决日常手洗内衣…