当前位置: 首页 > news >正文

【中国数据库前世今生】数据存储管理的起源与现代数据库发展启蒙

记录开启本篇的目的:

作为1名练习时长2年半的DBA,工作大部分时间都在和数据库打交道,包括Oracle,Mysql,Postgresql,Opengauss等国内外数据库。但是对数据库的发展史却知之甚少。

正好腾讯云开发者社区正在热播:【纪录片】中国数据库前世今生,借此机会了解数据库发展历史,和演变进程,既充实知识体系架构,有可以有益于读者。

1.数据的起源

说到数据库,大家可能并不陌生,你的银行卡余额可以实现从一个银行网点存入,在另一个银行网点取出。你的王者数据只要登录同一个账号就能在不同设备上打野都得益于数据库保存了你的"数据"。

包括黑客使用钓鱼网站盗取你的数据,也是利用漏洞进入数据库获取你的账号,密码。

并在在大学中,计算机类专业学生基本上都会接触过Mysql或者SQL Server等数据库产品,也许,即使你工作多年,没有从事数据库行业,也一定会对这本书有印象吧,基本上他是学习数据库这门课的必备书籍。

img

但是古代我们可没有当今的数据库,甚至上个世纪五六十年代我国也没有数据库,那么前人是如何记录数据的呢?

2. 现代数据库出现前的数据保存和管理

对于大部分接触数据库的非DBA开发者来说,使用数据库最多的无非是增删改查(insert,delet,uodate,select),那么,在先到数据库工具发明以前,人们是怎么实现数据的增删改查和保存的呢

在数字化和数据库技术普及之前,人们对数据的记录和管理主要依赖于一些传统的方法。这些方法虽然在效率和准确性上无法与现代技术相媲美,但它们在当时是最有效的数据管理方式,直到今天,也是人们记录数据的方式之一。本小节将探讨一些在数据库技术出现之前,人们用来记录和存储管理数据的常见方法。

2.1 纸质记录

纸质记录是最原始的数据记录方式之一。人们使用笔和纸来记录信息,如账簿、日记、表格等。这些记录可以手工整理和分类,但查找特定信息时往往需要花费大量时间。

image-20240729011421129

特点

  • 易于创建:任何人只要有纸和笔就可以开始记录。
  • 直观性:信息一目了然,易于理解和阅读。

缺点

  • 检索效率低:查找特定信息时需要手动翻阅。
  • 易损坏:纸质记录容易受潮、褪色或被损坏。

2.2 文件柜存储

文件柜是纸质记录的物理存储解决方案。通过将记录好的文件、文档分类存放在文件柜中,可以更好地管理和保护这些记录。

image-20240729011447581

特点

  • 组织性:通过文件夹和标签,可以有效地组织大量文档。
  • 物理保护:文件柜为纸质记录提供了物理保护。

缺点

  • 空间占用:需要足够的空间来存放文件柜。
  • 检索不便:尽管比单纯纸质记录有所改进,但检索特定文件仍然不够快捷。

2.3 索引卡片

索引卡片是一种用于快速查找信息的工具。每张卡片上记录一条信息,然后根据一定的规则(如字母顺序)进行排序,以便于快速检索。

image-20240729011725979

特点

  • 快速检索:通过索引排序,可以快速定位到特定信息。
  • 灵活性:卡片可以根据需要重新排序或分类。

缺点

  • 手动维护:需要人工更新和维护索引顺序。
  • 信息量限制:每张卡片只能记录有限的信息。

2.4 打孔卡片

打孔卡片是早期计算机中使用的一种数据输入方式。通过在卡片上打孔来表示不同的数据,然后通过读卡机读取数据。

image-20240813130540935

特点

  • 机械化输入:相比手工记录,打孔卡片提高了数据输入的速度。
  • 适用于早期计算机:在计算机技术发展的早期阶段,打孔卡片是主要的数据输入方式。

缺点

  • 数据限制:每张卡片能表示的数据量有限。
  • 易出错:打孔错误可能导致数据错误。

2.5 小节

尽管这些传统方法在现代看来效率低下,但它们在当时是最有效的数据管理方式。随着技术的发展,数据库的出现极大地提高了数据存储、检索和处理的效率。现代数据库技术不仅提高了数据处理的速度,还增加了数据的安全性和可访问性。

3. 现代数据的引入和发展

毫不夸张的说,在使用现代数据库以前,人们对于数据的存储和管理基本上是基于以上方法或者以上方法的改进优化来实现的。对于整个数据的管理体系十分庞大且处理效率相对低下。在存储大量数据时,无论采用什么方式管理,都存在巨大的人力成本浪费。

在前辈一代代的努力下,现代数据库经过数年的发展,已经进入我们生活的方方面面,对于大部分非开发者来说,他们可能不会接触到数据库的开发部署,但无时无刻享受着现代数据库发展带来的生活便利。

3.1 现代数据库发展起步

此阶段主要是

在20世纪60年代,计算机技术刚刚起步,数据存储主要采用人工方式,数据的维护和管理非常困难。

1946年,有个叫冯·诺依曼的人发明了计算机,最开始的计算机的主要用途是将程序指令存储器和数据存储器合并在一起,然后进行相应的运算。这时候的数据管理非常简单。主要是通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理。然而,随着计算机的诞生和成熟,数据管理技术也迅速发展。传统的文件系统难以应对数据增长的挑战,也无法满足多用户共享数据和快速检索数据的需求。

此时,数据管理的主要目标是存储和检索数据,因此,这种简单数据存储阶段被称为“关系数据库管理系统”。

结构化数据存储阶段随着计算机技术的发展,到了70年代,人们开始探索如何更有效地存储和管理数据。此时,数据管理的主要目标是提高数据的准确性和完整性,因此,结构化数据存储阶段被称为“关系数据库管理系统”。在这个阶段,人们开始使用SQL(StructuredQuery Language)来操作和管理数据库,这也是现代数据库技术的基础。

阶段三:对象数据存储阶段到了80年代,随着计算机技术的进一步发展,人们开始认识到,数据不仅仅是结构化的,还可能是对象化的。因此,这个阶段被称为“对象数据库管理系统”。在这个阶段,数据库开始支持对象的概念,可以存储和管理对象化的数据。

阶段四:分布式数据库阶段随着计算机网络技术的发展,到了90年代,人们开始探索如何分布式地存储和管理数据。这个阶段被称为“分布式数据库系统”。在这个阶段,数据库开始支持分布式的概念,可以在多台计算机上存储和管理数据。

阶段五:云计算数据库阶段到了21世纪,随着云计算技术的发展,人们开始探索如何在云上存储和管理数据。这个阶段被称为“云计算数据库系统”。在这个阶段,数据库开始支持云的概念,可以在云上存储和管理数据。

阶段六:大数据数据库阶段随着大数据技术的发展,人们开始探索如何处理和管理海量的数据。这个阶段被称为“大数据数据库系统”。在这个阶段,数据库开始支持大数据的概念,可以处理和管理海量的数据。

站在前辈的肩膀上

本篇文章的完成了,离不开各位前辈的文章,资料分享。在此一并感谢并做标注说明。如有侵权,请联系本人即刻删除。

本文引用及参考文章如下:

  1. 数据库的发展历程与阶段从起步到现代技术的演进

相关文章:

【中国数据库前世今生】数据存储管理的起源与现代数据库发展启蒙

记录开启本篇的目的: 作为1名练习时长2年半的DBA,工作大部分时间都在和数据库打交道,包括Oracle,Mysql,Postgresql,Opengauss等国内外数据库。但是对数据库的发展史却知之甚少。 正好腾讯云开发者社区正在热播:【纪录片】中国数据库前世今生,借此机会了解…...

拉卡拉上半年营收29.82亿元 外卡、数字化服务提升业绩增长空间

8月9日晚,拉卡拉(300773.SZ)发布2024年半年业绩报告。在国内经济延续恢复向好态势、国内消费市场规模持续增长的背景下,拉卡拉积极推进“推广数字支付、共享数字科技、兑现数据价值”的经营战略,上半年公司实现营业收入29.82亿元,…...

数学建模——启发式算法(蚁群算法)

算法原理 蚁群算法来自于蚂蚁寻找食物过程中发现路径的行为。蚂蚁并没有视觉却可以寻找到食物,这得益于蚂蚁分泌的信息素,蚂蚁之间相互独立,彼此之间通过信息素进行交流, 从而实现群体行为。 蚁群算法的基本原理就是蚂蚁觅食的过程…...

【Pytorch实用教程】在做模型融合时非常关键的代码:nn.Identity()详解

文章目录 nn.Identity()基础介绍主要用途示例代码以ResNet为例介绍 self.resnet.fc = nn.Identity() 的作用1. **背景:ResNet 模型结构**2. **代码 `self.resnet.fc = nn.Identity()` 的作用**3. **为什么使用 `nn.Identity()`**4. **示例代码**nn.Identity()基础介绍 nn.Ide…...

【开源力荐】一款基于web的可视化视频剪辑工具

嗨, 大家好, 我是徐小夕. 之前一直在社区分享零代码&低代码的技术实践,也陆陆续续设计并开发了多款可视化搭建产品,比如: H5-Dooring(页面可视化搭建平台)V6.Dooring(可视化大屏搭建平台)橙…...

鸿萌数据恢复服务: 如何修复 SQL Server 数据库错误 829?

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份、网络及终端数据安全等解决方案与服务。 同时,鸿萌是众多国际主流数据恢复软件(Stellar、UFS、R-Studio、ReclaiMe Pro 等)的授权代理商&#xff0c…...

OpenCV图像处理——按最小外接矩形剪切图像

引言 在图像处理过程中,提取感兴趣区域(ROI)并在其上进行处理后,往往需要将处理后的结果映射回原图像。这一步通常涉及以下几个步骤: 找到最小外接矩形:使用 cv::boundingRect 或 cv::minAreaRect 提取感兴…...

《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(4)-再识Wireshark

1.简介 按照以前的讲解和分享路数,宏哥今天就应该从外观上来讲解WireShark的界面功能了。 2.软件界面 由上到下依次是标题栏、主菜单栏、主菜单工具栏、显示过滤文本框、打开区、最近捕获并保存的文件、捕获区、捕获过滤文本框、本机所有网络接口、学习区及用户指…...

调用yolov3模型进行目标检测

要调用已经训练好的YOLOv3模型对图片进行检测,需要完成以下几个步骤: 加载预训练模型:从预训练的权重文件中加载模型。准备输入图片:将图片转换为模型所需的格式。进行推理:使用模型对图片进行推理,得到检…...

linux文件——重定向原理——dup、重定向与execl、VFS

前言:本篇讲解linux下的重定向相关内容。 在本篇中, 博主将会带着友友们一边实验, 一边探索底层原理。 通过本篇的学习, 友友们将会了解到重定向是如何实现的, 重定向的本质是什么, 重定向和进程替换之间的…...

【STM32 FreeRTOS】任务

使用 RTOS 的实时应用程序可以被构建为一组独立的任务。每个任务在自己的上下文中执行,不依赖于系统内的其他任务或 RTOS 调度器本身。在任何时间点,应用程序中只能执行一个任务,实时 RTOS 调度器负责决定所要执行的任务。因此, R…...

Java面试--框架--Spring MVC

Spring MVC 目录 Spring MVC1.spring mvc简介2.spring mvc实现原理2.1核心组件2.2工作流程 3.RESTful 风格4.Cookie,Session4.1 会话4.2 保存会话的两种技术 5.拦截器5.1过滤器、监听器、拦截器的对比5.2 过滤器的实现5.3 拦截器基本概念5.4 拦截器的实现 1.spring …...

土壤水分监测系统的工作原理

TH-TS200土壤水分监测系统是一种在地球科学、农学等领域广泛应用的分析仪器,它主要用于监测土壤中的水分含量,为农业生产、水资源管理、环境保护等提供重要数据支持。通常包括数据采集器、土壤水分传感器、土壤温度传感器(部分系统配备)、计算机软件以及…...

k8s学习--如何控制pod调度的位置

文章目录 一、Pod 调度基础二、通过节点选择器 (Node Selector) 控制调度三、使用节点亲和性 (Node Affinity)四、使用污点和容忍 (Taints and Tolerations)五、Pod 反亲和性 (Pod Anti-Affinity) 总结 在 Kubernetes (K8s)中,Pod 是应用运行的最小单位&#xff0…...

基于mysqldump的MySQL数据库异地备份方案(含完整脚本和解释)

MySQL数据库异地备份方案 0 文档描述 本文描述了一个数据库异地备份方案,以下脚本代码都是在线上应用的本文以CentOS7为例,其他系统请自行查询安装命令如果评论有需求,我就对应系统做一下文档 1 基本原理 1.1 流程 原理本身很简单&#…...

C语言中10个字符串函数详解

目录 1.strlen 2.strcpy 3.strcat 4.strcmp 5.strncpy 6.strncat 7.strncmp 8.strstr 9.strtok 10.strerror 1.strlen 基本结构:size_t strlen(const char *str);功能:用于计算字符串的长度;字符串已经 0作为结束标志…...

flume系列之:查询多个flume agent组是否有topic重复接入情况

flume系列之:查询多个flume agent组是否有topic重复接入情况 一、查询zk节点下的flume agent组二、获取采集的topic三、获取重复接入的topic,支持设置重复接入白名单四、执行流程五、完整代码一、查询zk节点下的flume agent组 def get_flumeAgent_zkPath(zkRootPaths):for z…...

Windows自动化1️⃣环境搭建WinAppDriver

对于技术选型: 我尝试了, pywinauto, WinAppDriver,CukeTest 担心CukeTest可能会收费, 尝试pywinauto,在元素点击,搜索时, 遇到不可用情况; WinAppDriver是微软家的,大厂开源, 就它了! 步骤一:安装WinAppDriver 进入WinAppDriver下载页面(https://githu…...

云服务器Docker内部署服务后,端口无法访问?

云服务器Docker内部署服务后,端口无法访问,可以按照以下思路进行排查: 以【docker run --name my-nginx -d -p 9395:80 nginx】举例: 查看Docker映射是否正确,可使用docker ps命令查看。Docker是否设置端口映射&#…...

Unity将摄像机视角保存成Json文件方便读取使用

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、设置环境👉二、代码如下👉三、使用方法 👉四、下次外部调用json里面的摄像机位置的时候如下代码方法👉壁纸分享👉总结 &#x1f449…...

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...