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

记录开启本篇的目的:

作为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. 数据库的发展历程与阶段从起步到现代技术的演进

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

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

相关文章

【云备份】学习Json

文章目录 1.Json数据类型基础数据类型复合数据类型JSON数据类型的应用 2.学习jsoncpp库利用json实现序列化利用json实现反序列化 1.Json数据类型 json 是一种数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。json数据交换格式是将多种数据对象组织…

MATLAB中lsqr函数用法

目录 语法 说明 示例 线性系统的迭代解 使用指定了预条件子的 lsqr 提供初始估计值 使用函数句柄代替数值矩阵 lsqr函数的功能是求解线性系统 - 最小二乘法。 语法 x lsqr(A,b) x lsqr(A,b,tol) x lsqr(A,b,tol,maxit) x lsqr(A,b,tol,maxit,M) x lsqr(A,b,tol,m…

【Qt】QWidget的windowIcon属性

QWidget的windowIcon属性 windowIcon表示窗口的图标 当我们使用默认的windowIcon的时候,其窗口的图标如下: API说明 windowIcon() 获取到控件的窗⼝图标. 返回 QIcon 对象. setWindowIcon(const QIcon& icon) 设置控件的窗⼝图标. 在Qt中&…

【STM32 FreeRTOS】任务

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

react中使用nextjs框架,前端调后端接口跨域解决方式

前端在项目目录中next.config.js文件中添加以下代码 async rewrites() {return [{source: "/api/:path*",destination: ${process.env.NEXT_PUBLIC_API_DOMAIN}/api/:path*,basePath: false}]} 截图: source: "/api/:path*": 定义了一个 URL …

C++ 面试题常用总结 详解(满足c++ 岗位必备,不定时更新)

📚 本文主要总结了一些常见的C面试题,主要涉及到语法基础、STL标准库、内存相关、类相关和其他辅助技能,掌握这些内容,基本上就满足C的岗位技能(红色标记为重点内容),欢迎大家前来学习指正&…

【MySQL 03】库的操作 (带思维导图)

文章目录 🌈 一、创建数据库🌈 二、查看数据库🌈 三、使用数据库🌈 四、修改数据库🌈 五、删除数据库🌈 六、备份数据库🌈 七、恢复数据库🌈 八、字符集和校验规则⭐ 1. 查看系统默认…

HAProxy 效能飞跃先锋队

目录 一 负载均衡 1.1 四层负载 1.2 七层负载 1.3 四层负载和七层负载的区别 二 Haproxy简介 2.1 概念和内容 2.2 haproxy的基本配置信息 2.2.1 global 配置 2.2.2 proxies 配置 三 Haproxy的算法 3.1 静态算法 3.2 动态算法 3.3 其他算法 四 高级功能及配置 4.…

Mysql原理与调优-索引原理及使用

目录 1.绪论 2.索引原理 2.1 索引采用的数据结构 2.1.1 B树 1.什么是B树 2.B树的优缺点 2.1.2 B树 1.什么是B树 3.B树的优缺点 2.2.3 hash 2.2.4 总结 2.2 InnoDB数据存储结构(聚簇索引) 2.2.1 自底向上探寻索引 3.2.2 查询一条数据的完整流程 3.2.3 聚簇索引 2…

奥运科技观察:AI PC,如何成为当代体育精神的数字捍卫者?

作者 | 曾响铃 文 | 响铃说 数字孪生帮助体育馆建设、超高清直播……这届奥运会科技感拉满,几乎所有前沿技术都能在奥运的赛事运营中发现。 而AI大时代,AI如何帮助帮助奥运会顺利举办、如何帮助运动员拥有更好的表现,同样值得业界关注&…

haproxy最强攻略

1、负载均衡 负载均衡(Load Balance,简称 LB)是高并发、高可用系统必不可少的关键组件,目标是 尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。 负载均衡的主要作用如下: 高并发…

# Spring Cloud Alibaba Nacos_配置中心与服务发现(四)

Spring Cloud Alibaba Nacos_配置中心与服务发现(四) 一、Nacos 配置管理-集群部署 1、 把 nacos 应用程序包,复制3份,分别命名为 nacos1, nacos2, nacos3 分别在 conf 目录下,修改 application.properties 配置文件…

数据结构——循环队列

目录 循环队列的基本知识 循环队列的实现 定义 各个接口的实现 循环队列的基本知识 循环队列的定义 循环队列(Circular Queue)是一种使用固定大小的数组实现的队列,它将数组的首尾相连,形成环形,以充分利用空间并实…

Spring Boot的配置文件

目录 一、配置文件 1.properties为后缀的配置文件 1.1基本语法 1.2读取配置文件 1.3properties的优缺点 1.4加中文注释出现乱码 2.yml格式的配置文件 2.1基础语法 2.2读取配置文件 2.2.1对象存储到配置文件中 2.3yml的优缺点 2.4用不用加单引号或者双引号呢&#xf…

【C语言篇】编译和链接以及预处理介绍(上篇)

文章目录 前言翻译环境和运行环境翻译环境编译预处理(预编译)编译词法分析语法分析语义分析 汇编 链接 运行环境预处理(预编译)详解预定义符号#define定义常量#define定义宏带有副作用的宏参数宏替换的规则宏和函数的对比 写在最后…

opencv基础的图像操作

1.读取图像,显示图像,保存图像 #图像读取、显示与保存 import numpy as np import cv2 imgcv2.imread(./src/1.jpg) #读取 cv2.imshow("img",img) #显示 cv2.imwrite("./src/2.jpg",img) #保存 cv2.waitKey(0) #让程序进入主循环(让…

RAG系列之四:深入浅出 Embedding

在 RAG 系列之三:文本切分中介绍了如何将文本切分成更小的语义单元,接下来便是将拆分的文本块进行向量化。 什么是文本向量化? 文本向量化就是将文本数据转成数字数据,例如:将文本 It was the best of times, it was…

Android全面解析之context机制(二): 从源码角度分析context创建流程(上)

前言 这篇文章从源码角度分析context创建流程。 在上一篇Android全面解析之Context机制(一) :初识context一文中讲解了context的相关实现类。经过前面的讨论,读者对于context在心中有了一定的理解。但始终觉得少点什么:activity是什么时候被创建的&…

Python数据可视化案例——地图

目录 简单案例: 进阶案例: 继上文数据可视化案例,今天学习用pyecharts练习数据可视化案例2-构建地图。 简单案例: 首先构建一个简单的地图。 代码: import json from pyecharts.charts import MapmapMap() data[…

培训学校课程管理系统-计算机毕设Java|springboot实战项目

🍊作者:计算机毕设残哥 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目、 源…