【中国数据库前世今生】数据存储管理的起源与现代数据库发展启蒙
记录开启本篇的目的:
作为1名练习时长2年半的DBA,工作大部分时间都在和数据库打交道,包括Oracle,Mysql,Postgresql,Opengauss等国内外数据库。但是对数据库的发展史却知之甚少。
正好腾讯云开发者社区正在热播:【纪录片】中国数据库前世今生,借此机会了解数据库发展历史,和演变进程,既充实知识体系架构,有可以有益于读者。
1.数据的起源
说到数据库,大家可能并不陌生,你的银行卡余额可以实现从一个银行网点存入,在另一个银行网点取出。你的王者数据只要登录同一个账号就能在不同设备上打野都得益于数据库保存了你的"数据"。
包括黑客使用钓鱼网站盗取你的数据,也是利用漏洞进入数据库获取你的账号,密码。
并在在大学中,计算机类专业学生基本上都会接触过Mysql或者SQL Server等数据库产品,也许,即使你工作多年,没有从事数据库行业,也一定会对这本书有印象吧,基本上他是学习数据库这门课的必备书籍。

但是古代我们可没有当今的数据库,甚至上个世纪五六十年代我国也没有数据库,那么前人是如何记录数据的呢?
2. 现代数据库出现前的数据保存和管理
对于大部分接触数据库的非DBA开发者来说,使用数据库最多的无非是增删改查(insert,delet,uodate,select),那么,在先到数据库工具发明以前,人们是怎么实现数据的增删改查和保存的呢
在数字化和数据库技术普及之前,人们对数据的记录和管理主要依赖于一些传统的方法。这些方法虽然在效率和准确性上无法与现代技术相媲美,但它们在当时是最有效的数据管理方式,直到今天,也是人们记录数据的方式之一。本小节将探讨一些在数据库技术出现之前,人们用来记录和存储管理数据的常见方法。
2.1 纸质记录
纸质记录是最原始的数据记录方式之一。人们使用笔和纸来记录信息,如账簿、日记、表格等。这些记录可以手工整理和分类,但查找特定信息时往往需要花费大量时间。

特点
- 易于创建:任何人只要有纸和笔就可以开始记录。
- 直观性:信息一目了然,易于理解和阅读。
缺点
2.2 文件柜存储
文件柜是纸质记录的物理存储解决方案。通过将记录好的文件、文档分类存放在文件柜中,可以更好地管理和保护这些记录。

特点
- 组织性:通过文件夹和标签,可以有效地组织大量文档。
- 物理保护:文件柜为纸质记录提供了物理保护。
缺点
- 空间占用:需要足够的空间来存放文件柜。
- 检索不便:尽管比单纯纸质记录有所改进,但检索特定文件仍然不够快捷。
2.3 索引卡片
索引卡片是一种用于快速查找信息的工具。每张卡片上记录一条信息,然后根据一定的规则(如字母顺序)进行排序,以便于快速检索。

特点
- 快速检索:通过索引排序,可以快速定位到特定信息。
- 灵活性:卡片可以根据需要重新排序或分类。
缺点
- 手动维护:需要人工更新和维护索引顺序。
- 信息量限制:每张卡片只能记录有限的信息。
2.4 打孔卡片
打孔卡片是早期计算机中使用的一种数据输入方式。通过在卡片上打孔来表示不同的数据,然后通过读卡机读取数据。

特点
- 机械化输入:相比手工记录,打孔卡片提高了数据输入的速度。
- 适用于早期计算机:在计算机技术发展的早期阶段,打孔卡片是主要的数据输入方式。
缺点
- 数据限制:每张卡片能表示的数据量有限。
- 易出错:打孔错误可能导致数据错误。
2.5 小节
尽管这些传统方法在现代看来效率低下,但它们在当时是最有效的数据管理方式。随着技术的发展,数据库的出现极大地提高了数据存储、检索和处理的效率。现代数据库技术不仅提高了数据处理的速度,还增加了数据的安全性和可访问性。
3. 现代数据的引入和发展
毫不夸张的说,在使用现代数据库以前,人们对于数据的存储和管理基本上是基于以上方法或者以上方法的改进优化来实现的。对于整个数据的管理体系十分庞大且处理效率相对低下。在存储大量数据时,无论采用什么方式管理,都存在巨大的人力成本浪费。
在前辈一代代的努力下,现代数据库经过数年的发展,已经进入我们生活的方方面面,对于大部分非开发者来说,他们可能不会接触到数据库的开发部署,但无时无刻享受着现代数据库发展带来的生活便利。
3.1 现代数据库发展起步
此阶段主要是
在20世纪60年代,计算机技术刚刚起步,数据存储主要采用人工方式,数据的维护和管理非常困难。
1946年,有个叫冯·诺依曼的人发明了计算机,最开始的计算机的主要用途是将程序指令存储器和数据存储器合并在一起,然后进行相应的运算。这时候的数据管理非常简单。主要是通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理。然而,随着计算机的诞生和成熟,数据管理技术也迅速发展。传统的文件系统难以应对数据增长的挑战,也无法满足多用户共享数据和快速检索数据的需求。

此时,数据管理的主要目标是存储和检索数据,因此,这种简单数据存储阶段被称为“关系数据库管理系统”。
结构化数据存储阶段随着计算机技术的发展,到了70年代,人们开始探索如何更有效地存储和管理数据。此时,数据管理的主要目标是提高数据的准确性和完整性,因此,结构化数据存储阶段被称为“关系数据库管理系统”。在这个阶段,人们开始使用SQL(StructuredQuery Language)来操作和管理数据库,这也是现代数据库技术的基础。
阶段三:对象数据存储阶段到了80年代,随着计算机技术的进一步发展,人们开始认识到,数据不仅仅是结构化的,还可能是对象化的。因此,这个阶段被称为“对象数据库管理系统”。在这个阶段,数据库开始支持对象的概念,可以存储和管理对象化的数据。
阶段四:分布式数据库阶段随着计算机网络技术的发展,到了90年代,人们开始探索如何分布式地存储和管理数据。这个阶段被称为“分布式数据库系统”。在这个阶段,数据库开始支持分布式的概念,可以在多台计算机上存储和管理数据。
阶段五:云计算数据库阶段到了21世纪,随着云计算技术的发展,人们开始探索如何在云上存储和管理数据。这个阶段被称为“云计算数据库系统”。在这个阶段,数据库开始支持云的概念,可以在云上存储和管理数据。
阶段六:大数据数据库阶段随着大数据技术的发展,人们开始探索如何处理和管理海量的数据。这个阶段被称为“大数据数据库系统”。在这个阶段,数据库开始支持大数据的概念,可以处理和管理海量的数据。
站在前辈的肩膀上
本篇文章的完成了,离不开各位前辈的文章,资料分享。在此一并感谢并做标注说明。如有侵权,请联系本人即刻删除。
本文引用及参考文章如下:
- 数据库的发展历程与阶段从起步到现代技术的演进
相关文章:
【中国数据库前世今生】数据存储管理的起源与现代数据库发展启蒙
记录开启本篇的目的: 作为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 等)的授权代理商,…...
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 是应用运行的最小单位࿰…...
基于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里面的摄像机位置的时候如下代码方法👉壁纸分享👉总结 👉…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 5.2 IPsec隧道模式(Tunne…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
