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 年后的历史将把它归类为网络规模时代的众多选择之一。

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

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

相关文章

Redis(10)| I/O多路复用(mutiplexing)

上文select/epoll 在上文《Redis(09)| Reactor模式》 思考问题可以使用I/O多路复用技术解决多多客户端TCP连接问题,同时也提到为了解决最早期的UNIX系统select调用存在的四个问题。 select(int nfds, fd_set *r, fd_set *w, fd_set *e, stru…

机器学习第一周

一、概述 机器学习大致会被划分为两类:监督学习,无监督学习 1.1 监督学习 监督学习其实就是,给计算机一些输入x和正确的输出y(训练数据集),让他总结x->y的映射关系,从而给他其他的输入x&a…

Docker安全

目录 一. cgroup 2. cpu优先级 3. 内存资源限制 4. 磁盘io限制 二. lxcfs隔离 三. 容器特权 一. cgroup 1. cpu资源限制 docker run -it --rm --cpu-period 100000 --cpu-quota 20000 ubuntu root433a1612a171:/# dd if/dev/zero of/dev/null & 2. cpu优先级 docker run -i…

2.11、自定义图融合过程与量化管线

introduction 介绍如何自定义量化优化过程,以及如何手动调用优化过程 code from typing import Callable, Iterableimport torch import torchvisionfrom ppq import (BaseGraph, QuantizationOptimizationPass,QuantizationOptimizationPipeline, QuantizationS…

探营云栖大会:蚂蚁集团展出数字人全栈技术,三大AI“机器人”引关注

一年一度的科技盛会云栖大会将于10月31日正式开幕。30日,记者来到云栖大会展区探营,提前打卡今年上新的“黑科技”。 记者在蚂蚁集团展馆看到,超1亿人参与的亚运“数字火炬手”全栈技术首次公开展示,还可体验基于数字人技术的“数…

什么是全排列?(算法实现)

全排列是什么? 全排列是指将一组元素按照一定顺序进行排列的所有可能结果。以一组数字为例,比如[1, 2, 3]的全排列结果为:[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]。 全排列有许多不同的计算方法,其中…

云服务器搭建Zookeeper集群

文章目录 1.集群配置2.zookeeper的群起脚本3. Zookeeper节点的创建和删除相关4. Zookeeper的选举机制 1.集群配置 Zookeeper的集群个数最好保证是奇数个数,因为Zookeeper的选举过程有一个“半数机制”。 5台服务器,可以设置Zookeeper的集群为3或者5&…

大数据学习(18)-任务并行度优化

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…

uniapp实现公众号微信登录

前端代码 data() {return {openid: "",server: ,code:}; }, mounted() {this.getCode() }, methods:{getCode() {// 非静默授权,第一次有弹框this.code ;var callback_url 回调地址; // 获取页面urlvar appid APPID;this.code this.getUrlCode().cod…

通信原理板块——卷积码(原理、代数和几何表示、编码和解码)

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 1、卷积码定义 卷积码(convolution…

uboot - 驱动开发 - 驱动模型

说明 类似于linux,为了规范、统一驱动适配和驱动接口调用,uboot定义了一套驱动模型(Driver Model),简称DM。本文基于:u-boot-2021.10。 优点 为同一类ip的驱动定义了统一的操作接口,DM在软件层面做了一定的抽象。分…

SM2协同签名算法

在介绍SM2协同签名之前,先介绍下门限签名机制,提到门限签名就不得不提区块链,在与区块链的结合应用中,门限签名的优势在于签名的生成是通过链下的 MPC 协议产生的,其结果是更加安全,避免了合约被黑客攻击的…

网络工程综合试题(二)

1. SR技术有哪些缺点? SR(Segment Routing)技术是一种新兴的网络编程技术,它具有很多优点,但也存在一些缺点,包括: 部署复杂性:SR技术需要对网络进行改造和升级,包括更新…

基于SpringBoot的企业财务管理系统

目录 前言 一、技术栈 二、系统功能介绍 管理员功能实现 财务人员管理 留言管理 薪资管理 财务人员功能实现 报销信息管理 收费信息管理 支出信息管理 员工功能实现 报销信息管理 留言管理 薪资查询 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前…

研究生安排

研一 看论文不懂先记着 论文一定多看的,建议300篇论文,500最好。 选题的时候要心里有谱,先找小论文,再找大论文 研二 确定研究方向和目标 和老师切磋研究的是什么 明确要做的东西是什么,是否已经明确要做什么&#xff…

kubernetes组件

基本队对象 pod 最小单位 service 跟网络相关 Volume Namespace 准备工作: master (1) node1 node2 初始化 做本地解析 10.0.0.51 10.0.0.56 10.0.0.186 关闭swap分区:sed -i s/.*swap.*

Centos安装mongodb

mongodb官网 下载MongoDB cd /optwget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.2.tgztar -xf mongodb-linux-x86_64-rhel70-4.4.2.tgz -C /usr/local/cd /usr/local/mv mongodb-linux-x86_64-rhel70-4.4.2 mongodb部署Mongodb 2.1. 创建目录 cd mo…

k8s资源调度

默认的情况下,一个pod在哪个node节点上运行,是由scheduler组件采取对应的算法计算出来的,这个过程是不受人工控制的,在实际的使用过程中,这不能够满足客观的场景,针对这样的情况,k8s 提供了四大…

基于【逻辑回归】的评分卡模型金融借贷风控项目实战

背景知识: 在银行借贷过程中,评分卡是一种以分数形式来衡量一个客户的信用风险大小的手段。今天我们来复现一个评分A卡的模型。完整的模型开发所需流程包括:获取数据,数据清洗和特征工程,模型开发&#xff0c…

计算机基础知识41

前端 # 前端是所有跟用户直接打交道 比如:PC页面、手机页面、汽车显示屏,肉眼可以看见的 # 后端:一堆代码,用户不能够直接看到,不直接与用户打交道 常见的后端:Python、Java、Go等 # 学了前端就可以做全栈…