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

RDBMS 的历史回顾

“数据库”这个词是怎么来的?当 SQL 是 SEQUEL 时它代表什么?通过这篇有关 RDBMS 历史的文章了解所有这些内容以及更多内容。
埃里克·迪特里希用户头像 经过 埃里克·迪特里希  核心 · Anush Gasparyan 用户头像 经过 阿努什·加斯帕里安  · 2017年7月21日 · 意见
 喜欢 (15)
 评论 (6)
 节省
  鸣叫 
  分享 
13.1K 次观看
加入 DZone 社区并获得完整的会员体验。 免费加入
如果您必须选择一种统一的技术来将所有开发人员聚集在一起,那么您可能会比选择关系数据库做得更糟糕。当然,没有一个话题能够真正统一 

那么为何不?我们可以将软件归结为两个核心组件:数据和行为。因此,就像我们都学习编程语言来表达行为一样,我们也学习一些记录和保存宝贵数据的方法。

当我们将足够多的数据以某种有组织的格式放在一起时,我们就拥有了一个数据库。当我们以“关系”的方式组织数据库时,我们就有了一个关系数据库。然后,当我们添加管理和优化对关系数据的访问的功能时,我们就拥有了一个关系数据库管理系统(RDBMS)。

毫无疑问您对这些产品有一定的熟悉度。其中包括 Oracle、Microsoft 的 SQL Server、PostgreSQL 和 MySQL 等行业支柱。

最新的 DZone 参考卡

移动数据库要点


事实上,它们与风景如此完美地融合在一起,以至于你很容易认为它们是理所当然的。但他们从哪里来,为什么呢?这些年来它们是如何演变的?今天,让我们回顾一下RDBMS的历史。

第一个数据库
您可能会惊讶地发现数据库的概念早于现代计算。您可以在这篇文章中更详细地阅读它,但我只想说,这个概念的根源可以追溯到 1880 年美国的人口普查,那个时代的创新者设计了“制表机”,在所谓的“制表机”上打孔。 “打卡。” 这些卡片和存储它们的方法成为最初的“数据库”(或数据库)。

20 世纪 60 年代初,一位名叫查尔斯·巴赫曼 (Charles Bachman) 的人将这一概念自动化。后来,他因创建“集成数据存储”或 IDS 的努力而获得了图灵奖。他利用物理卡数据库中的概念,例如“文件”、“字段”和“密钥”,构建了一个系统,将应用程序逻辑与数据存储分离到文件中。即使是现在,相隔 50 多年,我们仍然会认为这是一个数据库。

在巴赫曼的领导下,20 世纪 60 年代出现了两种类型的数据库:网络数据库和分层数据库。您可以在这里单独阅读这些内容。简而言之,层次模型将数据组织成树,而网络模型是一种松散的结构,允许直接建模 m 到 n 的关系。

关系革命
如果您还没有听说过 EF Codd,您可能想了解一些有关他的信息。就计算机科学界的人物而言,他留下了相当长的阴影。Codd 构思了我们今天使用的关系数据库模型。适当地,由于他在那里工作,您可以在 IBM 网站上阅读有关他的信息。

当 Codd在 1970 年发表他的开创性论文时,世界已经经历了现有的数据库模型足够长的时间,以了解它们的优点和缺点。这些缺点中最主要的是数据和数据的物理存储之间的耦合造成的困难。换句话说,记录本身告诉搜索者到哪里寻找后续记录。

那时,您无疑明白,处理能力和磁盘空间的成本要 高得多。这些系统在最初存储数据时表现良好。但新的处理方式或新查询的需要会导致昂贵且耗时的返工。

科德极大地改变了这一点。他的关系模型将数据的形式与数据的物理存储解耦。仅此一点就带来了重大改进。但科德的“12 条规则(实际上是 13 条,因为他对它们进行了零索引)”会稍后出现。这些规则要求消除任何重复的数据,同时有效地优化存储成本。

SQL 的兴起
我们的历史正在开始完善现代数据库。但我们还有很多工作要做。

如果您参加过任何大学水平的数据库课程,您可能听说过Boyes-Codd 范式 (BCNF)。如果您对模式重复数据删除练习只有模糊的记忆,请不要担心。我不会让你重新复习你的课程作业,除非你认识到这个 Codd 与关系模型之父是同一个 Codd。

他的犯罪正常化伙伴雷蒙德·博伊斯 (Raymond Boyce) 曾与科德和 IBM 的另一位名叫唐纳德·张伯伦 (Donald Chamberline) 的绅士一起工作。他们都在数据库领域做出了重要的工作。但博伊斯和张伯伦联手创建了一种从这些新型“关系数据库”请求信息的标准方法。他们将其称为“结构化英语查询语言”或简称“SEQUEL”。后来它变得更短,成为“结构查询语言”或“SQL”。

虽然 SQL 并不是唯一针对此类查询提出的游戏,但它确实胜出。当然,有很多因素促成了这一结果。但 SQL 的一个可以说是杀手级的特性是它的 声明性。应用程序程序员只需指定 他们想要哪些记录,而不需要指定 如何检索它们。“如何”成为 RDBMS 的实现细节。

互联网爆炸
关系模型的起源发生在 20 世纪 70 年代的 IBM,SQL 的概念也是如此。但 SQL 的大幅崛起发生在 20 世纪 80 年代。各种商业 RDBMS 供应商的崛起也是如此。80 年代,随着大家都围绕 SQL 标准进行标准化,出现了许多 RDBMS 数据库产品和供应商。事实证明,RDBMS 在企业中获得了巨大的商业成功。

然而,就像新形成的恒星系统中的星子一样,这些小型 RDBMS 并没有持续存在。通过一个增长的过程,较大的竞争对手吸收了较小的竞争对手,直到我们今天所知道的参与者开始出现并成熟。

这发生在互联网出现的时候。如果说 20 世纪 80 年代 SQL 的爆炸式增长是一件大事的话,那么没有人为接下来发生的事情做好准备。随着网站成为网络应用程序,数据对通信的重要性前所未有。突然之间,地球上几乎每个开发人员似乎都需要对某些 ​​RDBMS 进行客户端-服务器访问。

这种需求给供应商带来了优化、扩展功能集的压力,并普遍迎合应用程序开发人员的需求。供应商纷纷提供各种产品,并鼓励 RDBMS 占据“宇宙中心”的角色。

重新审视竞争
这里还有最后一块拼图尚未连接。我打赌你能猜到。当然,我说的是 NoSQL 运动的出现。

回想一下,当科德工作时,他试图解决他那个时代的昂贵瓶颈:磁盘空间和处理。关系模型极大地节省了空间。但有时,这是以某些类型的数据变得极其复杂为代价的。换句话说,并非所有事物都适合关系存储和规范化。例如,大量事务日志并不能真正从规范化中受益。

随着“网络规模”的概念逐渐融入我们的集体意识,一些人开始重新审视 RDBMS 对于每个应用程序的普遍假设。他们实现了诸如文档数据库之类的东西,以新的“非传统”方式存储和处理数据。他们在这样做中取得了巨大的成功。

正是带着一种恰如其分的对称感,我们到达了现在。在 RDBMS 占领计算世界之前,它有一些竞争对手。现在,大约 40 年后,它再次出现了一些竞争对手。对于计算而言,没有什么比 RDBMS 更重要了。但 40 年后的历史将把它归类为网络规模时代的众多选择之一。

相关文章:

RDBMS 的历史回顾

“数据库”这个词是怎么来的?当 SQL 是 SEQUEL 时它代表什么?通过这篇有关 RDBMS 历史的文章了解所有这些内容以及更多内容。 埃里克迪特里希用户头像 经过 埃里克迪特里希 核心 Anush Gasparyan 用户头像 经过 阿努什加斯帕里安 2017年7月21日 意见…...

windows 离线安装 vue 环境

由于公司要求在内网开发项目,而内网不能连接外网,因此只能离线安装 vue 环境,在网上找过很多的离线安装方法,但都没有成功,于是在不断的尝试中找到了以下方法。 1、找一台与内网电脑相同系统的有网电脑。 2、在有网的电…...

python实现批量pdf转txt和word

文章目录 背景需求环境安装完整代码效果 背景需求 已经获取到了大量的pdf在download文件夹中,但是我需要的是txt文件和word文件~ 环境安装 pip install pdf2docx pdfminer.six完整代码 # pip install pdf2docx pdfminer.siximport os from pdf2docx …...

c++ 并发与多线程(12)线程安全的单例模式-2

一、内部静态变量的懒汉单例(C++11 线程安全) #include <iostream> #include <thread> #include <vector>class Single { public:// 获取单实例对象static Single& GetInstance();// 打印实例地址void Print();private:// 私有构造函数,防止外部创建对…...

银河麒麟v10x86或者arm离线安装服务

银河麒麟v10x86或者arm离线安装服务 最近有个项目&#xff0c;甲方的服务器用的全是国产化服务器银河麒麟&#xff0c;架构是x86的然后也无法连接外网&#xff0c;需要离线安装服务正常思路就是找到离线安装的包&#xff0c;然后拷贝到现场的服务器中进行安装所以问题就在于如…...

【Ansible自动化运维工具 1】Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)

Ansible常用模块 一、Ansible1.1 简介1.2 工作原理1.3 Ansible的特性1.3.1 特性一&#xff1a;Agentless&#xff0c;即无Agent的存在1.3.2 特性二&#xff1a;幂等性 1.4 Ansible的基本组件 二、Ansible环境安装部署2.1 安装ansible2.2 查看基本信息2.3 配置远程主机清单 三、…...

Telegram 引入了国产小程序容器技术

Telegram 宣布为其开发者提供了一项“能够在 App 中运行迷你应用”的新功能&#xff08; 迷你应用即 Mini App&#xff0c;下文中以“小程序”代替&#xff09;。 在一篇博客文章中&#xff0c;Telegram 的开发者写到“小程序提供了可替代互联网网站的灵活界面&#xff08;cre…...

Capture One Pro 23图像处理工具「Mac」

Capture One Pro是一款专业的图像处理软件&#xff0c;旨在为摄影师和其他专业用户提供最佳的图像编辑和后期处理工具。 Capture One Pro 的主要功能包括 RAW 文件处理、图像编辑、颜色校正、曝光控制、局部调整、批处理等。它的相机支持列表非常广泛&#xff0c;几乎可以支持…...

rust OJ实战

目录 力扣 414. 第三大的数 力扣 628. 三个数的最大乘积 力扣 414. 第三大的数 给你一个非空数组&#xff0c;返回此数组中 第三大的数 。如果不存在&#xff0c;则返回数组中最大的数。 示例 1&#xff1a; 输入&#xff1a;[3, 2, 1] 输出&#xff1a;1 解释&#xff1a;…...

聊聊KafkaListener的实现机制

序 本文只要研究一下KafkaListener的实现机制 KafkaListener org/springframework/kafka/annotation/KafkaListener.java Target({ ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE }) Retention(RetentionPolicy.RUNTIME) MessageMapping Documented …...

Golang洗牌算法(Golang乱序算法)

Golang 洗牌算法&#xff08;乱序算法&#xff09;&#xff1b;需求背景&#xff1a;从一个文件下下读取所有文件&#xff0c;获取他们的名字&#xff0c; 将名字乱序排序&#xff0c;按着乱序后的序列&#xff0c;通过名字去找到文件&#xff0c;再上传&#xff0c;以达到上传…...

SpringBoot 源码分析(三) 监听器分析以及属性文件加载分析

前言 在创建SpringBoot项目的时候会在对应的application.properties或者application.yml文件中添加对应的属性信息&#xff0c;这些属性文件是什么时候被加载的&#xff1f;如果要实现自定义的属性文件怎么来实现&#xff1f;在讲属性加载之前先讲下监听器分析。 一、监听器分…...

记录nvm use node.js版本失败,出现报错: exit status 1: ��û���㹻��Ȩ��ִ�д˲�����

使用管理员权限运行cmd&#xff0c;再使用nvm use node.js版本号 参考&#xff1a; nvm use (node版本号)时报错&#xff1a; exit status 1: &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;㹻&#xfffd;&#xfffd;Ȩ&#xfffd;&#xfffd;ִ&#xf…...

【蓝牙协议】简介:蓝牙芯片、蓝牙协议架构

文章目录 蓝牙芯片架构另一个视角由下到上看&#xff1a;Controller-->Host由上到下看&#xff1a;Host-->Controller 蓝牙协议架构视角HW层——蓝牙芯片层Transport——数据传输层HOST——协议层 总结 参考&#xff1a;https://zhuanlan.zhihu.com/p/585248998 参考&…...

【深度学习】

什么是深度学习&#xff1f; 感知器 为了实现模拟人类的学习&#xff0c;科学家们首先设计了构成神经网络的基本结构神经元&#xff08;感知器模型&#xff09;&#xff0c;然后再由大量的神经元构成复杂的&#xff0c;能够实现各种功能的神经网络。 这种模式和超能陆战队中的…...

centos启动tomcat 并指定jdk 版本

在tomcat的catalina.sh文件手动设置JAVA_HOME变量即可 例如&#xff1a; 前提是文件存在 保存配置重新启动tomcat...

day37(事件轮询机制 ajaxGet执行步骤与案例(五个步骤) ajax属性 PHP返回JSON对象(两种))

一.事件轮询机制 1. 无论同步还是异步代码都要经过主线程编译&#xff0c;同步代码开始排在执行栈(主线程)上&#xff0c;异步代码开 始存放在任务队列中 2. 主线程优先执行同步代码&#xff0c;同步代码必须前一行执行完&#xff0c;后一行才能执行&#xff1b;当异步代码…...

Flume基本使用--mysql数据输出

MySQL数据输出 在MySQL中建立数据库school&#xff0c;在数据库中建立表student。SQL语句如下&#xff1a; create database school; use school; create table student(id int not null,name varchar(40),age int,grade int,primary key(id) ); 请使用Flume实时捕…...

MySQL——EXPLAIN用法详解

EXPLAIN是MySQL官方提供的sql分析的工具之一&#xff0c;可以用于模拟优化器执行sql查询语句&#xff0c;从而知道MySQL是如何处理sql语句。EXPLAIN主要用于分析查询语句或表结构的性能瓶颈。 以下是基于MySQL5.7.19版本进行分析的&#xff0c;不同版本之间略有差异。 1、EXP…...

69 划分字母区间

划分字母区间 题解1 贪心1&#xff08;方法略笨&#xff0c;性能很差&#xff09;题解2 贪心2&#xff08;参考标答&#xff09; 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&am…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

MCP和Function Calling

MCP MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09; &#xff0c;2024年11月底&#xff0c;由 Anthropic 推出的一种开放标准&#xff0c;旨在统一大模型与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而…...

使用homeassistant 插件将tasmota 接入到米家

我写一个一个 将本地tasmoat的的设备同通过ha集成到小爱同学的功能&#xff0c;利用了巴法接入小爱的功能&#xff0c;将本地mqtt转发给巴法以实现小爱控制的功能&#xff0c;前提条件。1需要tasmota 设备&#xff0c; 2.在本地搭建了mqtt服务可&#xff0c; 3.搭建了ha 4.在h…...