购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 数据库发展概述

数据库在计算机科学领域一直扮演着重要角色。早期的计算机从本质上来说是一台巨型的计算器,关注的是算法,主要用于科学计算。计算机不对数据做持久化存储,它批量地处理输入数据,输出计算结果,并不保存数据结果。当时没有专门的数据管理软件,程序员不仅要规定数据的逻辑结构,并且还要在程序中设计物理结构,包括存储结构、存取方法、输入/输出格式等。因此,程序中存取数据的子程序随着存储的改变而改变,数据与程序不具有一致性;没有文件的概念,数据无法复用,即使两个程序使用相同的数据,数据也需要输入两份。

20世纪60年代,随着计算机进入商业系统,当解决一些实际业务问题时,数据便从算法处理过程的副产品变成了核心产品。此时数据库管理系统(DataBase Management System,DBMS)得以成为一门专门的技术领域发展起来,数据管理是其核心任务,即对数据的归集、分类、组织、编码、储存、处理、应用和维护。这一任务自发轫之始至今虽然没有太多变化,但其管理组织数据的理论模型和相关技术在计算机软硬件发展、处理业务的复杂性和多样性、数据规模的变化共同推动下,经历了数次变迁,总结起来可以分为以下几个阶段。

1.1.1 萌芽

早在1960年,查尔斯·巴赫曼(Charles Bachman)加入通用电气(GE),并开发出第一个数据库系统——Integrated Database System(IDS),该系统是一个网状模型(Network Model)数据库系统,后来查尔斯·巴赫曼进入数据系统语言委员会(Conference/Committee on Data Systems Languages,CODASYL)的数据库任务组(DataBase Task Group,DBTG),制定了网状模型的语言标准,便是以IDS作为主要输入。1969年,IBM为阿波罗计划开发了一款数据库系统IMS(Information Management System),使用了层次模型(Hierarchical Model),支持事务处理。层次和网状模型是数据库技术的先驱,很好地解决了数据的集中问题和共享问题,但缺乏数据独立性和抽象级别。用户在对这两种数据库进行存取时,需要明确数据的存储结构,指出存取方法和路径,对于使用者而言较为复杂,因此并没有流行起来。

1.1.2 商业化起步

1970年,IBM公司的研究员E.F.Codd在他划时代的论文 A Relational Model of Data for Large Shared Data Banks 中提出了关系模型(Relational Model),该模型为关系数据库技术奠定了理论基础,关系模型基于谓词逻辑和集合论,有严格的数学基础,提供了高级别的数据抽象层次,并不规定数据存取的具体过程,而是交由DBMS自己实现。当时也有人认为关系模型过于理想化,只是一种抽象数据模型,难以实现高效的系统。1974年,当时在UC Berkeley的Michael Stonebraker和Eugene Wong决定开始研究关系数据库,并开发出INGRES(Interactive Graphics and Retrieval System),证明了关系模型的高效和实用。INGRES使用了一种称为QUEL的查询语言。与此同时,IBM也意识到关系模型蕴含的潜力,在实验室中开发出关系数据库System R,还有与之相适配的结构化查询语言SQL。20世纪70年代末,INGRES在Oracle和IBM DB2中得到发展和商业化实现,最终于1986年被ANSI组织采用并作为关系数据库的标准语言。SQL语言只描述想要什么样的数据,而不关注如何获取这些数据的具体过程,把使用者从繁重的数据操作细节中解脱出来,恰恰成为关系数据库得以成功的关键。

1.1.3 发展成熟

经过10年的发展,关系数据模型理论深入人心,E.F.Codd也于1981年获得了图灵奖。理论模型的成熟,催生出了一大批商用数据库产品,例如Oracle、IBM DB2、Microsoft SQL Server和Infomix等一大批流行的数据库软件系统均出现在这一时期。数据库技术的发展与程序设计语言、软件工程、信息系统设计等技术互相影响,也促进了数据库理论研究继续深入,例如数据库研究人员借鉴和吸收了面向对象的方法和技术,提出了面向对象的数据库模型(简称对象模型)。至今,许多研究都是建立在数据库已有的成果和技术上的,针对不同的应用,对传统的DBMS,主要是RDBMS进行不同层次的扩充,例如建立对象关系(OR)模型和建立对象关系数据库(ORDB)。

商用数据库的发展也推动了开源数据库技术的不断演进。进入20世纪90年代,开源数据库项目也蓬勃发展起来,当前的两大开源数据库系统——MySQL和PostgreSQL——均诞生于这一时期。早期数据库主要用于处理在线交易业务,被称为在线联机事务处理系统(On-Line Transaction Processing,OLTP)。经过近20年的发展,单机的关系数据库技术及系统日趋成熟,商业化渐成规模。随着关系数据库在信息系统的广泛应用,业务数据积累越来越多。如何利用数据支持商业决策,逐渐引起了一些学者和技术人员的兴趣,这种对大规模数据进行分析查询的场景被称为在线分析处理(On-Line Analytical Processing,OLAP)。1988年,为解决这类问题,IBM公司的研究员Barry Devlin和Paul Murphy创造性地提出了一个新的术语——数据仓库(Data Warehouse)。随着互联网时代的到来,以往面向专业人员的系统直接向所有人开放,导致业务处理的数据规模发生了数量级的增加,数据库面对的处理请求规模呈爆炸性增长,使得传统单机数据库难以应对。借助云的力量,分布式数据库等新兴技术开始走上历史舞台。

1.1.4 云原生与分布式时代

在云原生时代,数据库的处理能力如何随着业务处理规模增加而扩展,有两种不同的实践方法。一种方法是垂直扩展(Scale up),提升数据库各个组件的容量,使用更好的硬件,比如小型机、高端存储,如著名的“IOE”解决方案,数据库系统架构使用多个计算节点共享一份存储,称为Shared-Storage架构,如图1-1(a)所示。另一种方法是水平扩展(Scale out),还是保持原来单个数据库实例的容量不变,用更多的数据库节点组合为一个无共享(Shared-Nothing)分布式系统来解决问题,每个节点根据分布规则(Sharding Rule)存储一部分数据(Shard),处理一部分请求,如图1-1(b)所示。

图1-1 数据库的垂直扩展与水平扩展

两种方法各有利弊,前者本质上还是一个单机形态,所有计算节点共享所有状态、数据或元数据,基本上所有功能都可以和单机版保持兼容。对于很多传统企业来说,保证业务的平滑是很重要的,应用尽量不做改动,便能获得扩展功能,这种方式无疑是合适的。但是扩展性受限,计算节点不可能无限制地添加,计算节点越多,同步状态的代价越大,包括存储容量也受限于共享存储的能力。如此一来,对处理互联网业务的海量数据和请求来说就显得力不从心了。因此,大部分互联网企业更看重数据库扩展能力,自然选择了用廉价硬件水平扩展的方案,代价就是数据做了水平拆分。很多业务的查询和事务变成了跨数据分片或跨节点,复杂度和开销较大,因此大部分互联网业务可以通过选择拆分规则来避免。

互联网业务的快速发展带来的海量数据不仅对在线事务处理带来扩展性需求,也使数据分析的形态发生了变化。21世纪初期,Google发表了著名的“三驾马车”:分布式文件系统(Google File System)、分布式表格(BigTable)和分布式计算模型(MapReduce),催生了大数据的概念。随后,开源社区积极跟进,实现了以Hadoop生态为主体的开源大数据处理技术体系,成为业界的事实标准。自2006年以来,对于大数据处理究竟是Hadoop体系更好还是传统的数据仓库技术路线更好,一直都是争论的热点。然而,无论选择哪种技术路线,“更简单的使用模式、更强劲的性能体验、更大的数据处理规模、更实时的处理能力”一直都是学术界和工业界研究的热点。随着时间的推移,以Hadoop为代表的大数据生态和以传统数据仓库为代表的数据库生态,在大数据领域正在逐渐向彼此靠拢。“SQL on Hadoop”成为大数据领域一个非常重要的研究方向,而数据库也逐渐向“数据库的体验,大数据的能力”方向发展,SQL逐渐成为被统一接受的通用查询分析语言。

进入21世纪以来,随着信息技术的不断发展,产生的数据越来越多,种类也越来越丰富,传统关系数据库的关系模型是严格的结构化数据,在处理频繁变化的业务和一些专用的特殊结构时殊为不便。一些使用更灵活的数据模型定义(Schemaless)或特殊的数据模型的数据库出现了,统称为NoSQL系统。NoSQL数据库主要包括键值(Key-Value,KV)数据库、文档(Document)数据库、图(Graph)数据库三大类。键值数据库的代表为Redis、HBase和Canssandra;文档数据库的代表为MongoDB;图数据库的代表为Neo4j等。这些数据库都是为了满足某些特定的要求,而在一些技术细节上做了取舍,满足特定场景下数据规模、灵活性、并发或性能的极致要求。在特定的场景下,NoSQL比关系数据库具有更优异的表现,包括性能、可扩展性、可用性及性价比等,然而关系数据库依然凭借SQL强大的表达能力、普适成熟的规范和完整严格的ACID语义牢牢占据主流。

进入21世纪20年代,云计算渐成规模,各大云厂商也纷纷推出了自己的数据库服务,传统的数据库厂商也纷纷试水云计算领域,推出基于云形态的数据库产品。数据库自此进入云时代,开启了新一轮波澜壮阔的变革之旅。 z6EHTr9FTN7SdiQsah9tt8eHFoIfM6/uNnRGpMDLmuvt/V4nOkRXrdtBMCTCpBw0

点击中间区域
呼出菜单
上一章
目录
下一章
×