Skip to content

Latest commit

 

History

History
21 lines (11 loc) · 4.84 KB

File metadata and controls

21 lines (11 loc) · 4.84 KB

数据库简史

在信息革命之前,对于数据的管理、存储哪有数据库的概念,其实更多地是依靠人工来进行管理。彼时在以 0 和 1 为基础的数字化时代拉开帷幕之际,对于计算机而言,从硬件角度来看,外存只有纸带、卡片、磁带等概念,而软件也尚未有完善的操作系统诞生,这个时候更多的是依靠分拣机、制表机、纪录机等工具,人工手动地记录各种完整的数据。值得一提的是,如今已经 108 岁蓝色巨头 IBM 在这个时期正是凭借着打字机、处理机、以及大规模定制企业的信息技术和业务解决方案而逐渐壮大。

DBMS

后来到了 20 世纪 50 年代后期,随着磁盘、操作系统、磁芯存储器等数据存储设备的出现,新的数据处理系统迅猛发展起来。其中在操作系统中,也诞生了一种专门管理数据的软件,而它被称之为文件系统。彼时的文件系统对于企业而言,通常被视为一种存储着无数离散的对象的文件柜,不过这也实现了记录内的结构化。

20 世纪 60 年代,当计算机开始广泛应用于数据管理,以及大量信息的涌入时,业界发现传统的文件系统已经远远无法满足对于查询、存储、管理数据的需求,恰逢此时能够统一管理和共享数据的数据库管理系统(DBMS)应运而生,最终基于 DBMS,用户可以更加方便快捷地编组大量数据。1964 年前后,来自军事信息系统的工作人员创下了「(Data Base)数据库」一词,用以表示由分时共享计算机系统终端用户共享的数据集合,可以视作数据库概念的真正诞生。

数据库系统的萌芽出现于 60 年代。当时计算机开始广泛地应用于数据管理,对数据的共享提出了越来越高的要求。传统的文件系统已经不能满足人们的需要。能够统一管理和共享数据的数据库管理系统(DBMS)应运而生。1961 年通用电气公司(General ElectricCo.)的 Charles Bachman 成功地开发出世界上第一个网状 DBMS 也是第一个数据库管理系统---- 集成数据存储(Integrated DataStore IDS),奠定了网状数据库的基础。

1970 年,IBM 的研究员 E.F.Codd 博士在刊物 Communication of the ACM 上发表了一篇名为"A Relational Modelof Data for Large Shared Data Banks"的论文,提出了关系模型的概念,奠定了关系模型的理论基础。1974 年,IBM 的 Ray Boyce 和 DonChamberlin 将 Codd 关系数据库的 12 条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了 SQL(Structured Query Language)语言。在很长的时间内,关系数据库(如 MySQL 和 Oracle)对于开发任何类型的应用程序都是首选,巨石型架构也是应用程序开发的标准架构。

NoSQL

近年来随着互联网的迅猛发展,产生了庞大的数据,也催生了 NoSQL、NewSQL 等新一代数据库的出现。2009 年 MongoDB 开源,掀开了 NoSQL 的序幕,一时之间 NoSQL 的概念受人追捧,MongoDB 也因为其易用性迅速在社区普及。NoSQL 抛弃了传统关系数据库中的事务和数据一致性,从而在性能上取得了极大提升,并且天然支持分布式集群。

然而,不支持事务始终是 NoSQL 的痛点,让它无法在关键系统中使用。2012 年,Google 发布了 Spanner 论文,从此既支持分布式又支持事务的数据库逐渐诞生,。以 TiDB、蟑螂数据库等为代表的 NewSQL 身兼传统关系数据库和 NoSQL 的优点,开始崭露头角。2014 年亚马逊推出了基于新型 NVME SSD 虚拟存储层的 Aurora,它实现了完全兼容 MySQL 的超大单机数据库,于单点写多点读的主从架构做了进一步的发展,使得事务和存储引擎分离,为数据库架构的发展提供了具有实战意义的已实践用例。另外,各种不同用途的数据库也纷纷诞生并取得了较大的发展,比如用于 LBS 的地理信息数据库,用于监控和物联网的时序数据库,用于知识图谱的图数据库等。

与数据库技术的历史发展类似,数据库的托管方式在过去几十年中也发生了很大变化。在网络发展的早期,每个人都必须在自己的物理服务器上运行数据库,EC2 和 Digital Ocean 使这变得更容易,但仍需要深入的技术理解来手动操作数据库。诸如 Heroku 的 Postgres 服务,AWS RDS 和 Mongo Atlas 等托管服务抽象出了许多复杂的细节,数据库管理变得更加简单,但底层模型仍然相同,需要开发人员提前配置计算容量。最新开发的无服务器数据库使开发人员无需担心基础架构,因为他们的数据库只需根据实际使用情况进行扩展和缩小以匹配当前负载,其中 Aurora Serverless 和 CosmosDB 就是一个突出的例子。