1。1960-IDS让我们将时钟拨回到1960年代。通用电气公司(以下简称GE)创建了早期的基于网络模型的数据库系统IntegratedDataStore,简称IDS。IDS性能较好,当时也在工业界使用。1969年,GE将其计算机业务出售给了霍尼韦尔。IDS的主要开发者是一个叫Bachman的人,他因在数据库方向的发明而于1973年获得图灵奖。当时主要的计算机开发语言叫做COBOL(CommonBusinessOrientedLanguage),于是Bachman等人参与制定了计算机访问数据系统的标准,叫做CODASYL。本标准主要制定了网格模型和一次元组的查询方法。网络模型(NetworkModel)使用有向图来表示实体之间的关系。这种结构逻辑复杂,不利于查询数据,逐渐被关系数据模型所取代。2.1960-IBMIMS同样在1960年代,蓝色巨人IBM开发了InformationManagementSystem,一种基于层次结构模型的数据库系统,简称IMS。IMS最初是为阿波罗登月计划的订单而开发的。层次模型(HierarchicalModel)使用树状结构来表示实体之间的关系。这种结构更符合人们的直觉思维。从上到下,每个节点只能有向下的子节点。3.1970-RelationalModel时间来到了70年代。在分层和网状模型的标准下,IBM人员会因为数据库结构表的变化而不断改写代码,浪费人力。在IBMResearch工作的一个名叫TedCodd的人提出了几个规范来避免这种情况。这些规范是:以简单的数据结构存储数据,可以通过高级语言访问上层不需要关心数据物理存储的细节为了让数据库脱离应用,成为一个更加独立的系统,为避免数据库的变化影响上层应用,Codd提出了关系模型。关系模型(RelationalModel)是一种沿用至今的数据库模型,事实上已经基本成为行业标准。关系模型基于二维表,每个实体映射到一个表,每个实体可以通过表中的记录关联起来。70年代诞生了基于关系模型的三大数据库系统,它们是由数据库界的三位古代大师开发的。SystemR——来自IBMResearch,首席开发人员JimGrayIngres——这是PostgreSQL的前身,伯克利大学,首席开发人员StonebrakerOracle——LarryEllison,OracleCorporation总裁4,1980——关系模型到来在1980年代,数据库仍然处于关系模型及相关数据库蓬勃发展的阶段。1983年,IBM发布了数据库系统DB2,至今仍在广泛使用。由于IBM在SystemR和DB2中都使用SQL,因此他们使SQL成为访问数据库的行业标准。Oracle和Ingres都已经商业化,这一时期还有很多其他商业数据库,如Informix、Sybase、Teradata等,但数据库市场主要被Oracle占据。Stonebraker回到伯克利大学,创建了一个新的数据库系统Postgres,意为Ingres之后的系统(post)。5.1990-BoringDays90年代,数据库设计并没有太大的变化。这段时间看似无聊(Boring),但还是有一些值得关注的地方。微软进入数据库市场,他们分叉了Sybase系统,创建了自己的数据库系统SQLServer。MySQL出现了,主要由MichaelWidenius开发,MySQL的名字主要来源于他的女儿(My)。Postgres系统支持标准SQL,因此它的名字演变成了现在的PostgreSQL。SQLite也是这一时期发展起来的,并成为当今流行的嵌入式数据库系统。6.2000-DataWarehouse2000年代,针对特殊的应用场景,开始出现OLAP类型的数据库。这类数据库主要用于构建数据分析型的数据仓库(Warehouse),且多为分布式部署,以列存储为主。这一时期的主要产品有Greenplum、Vertica、MonetDB等。7.2000-NoSQL同样是在2000年代,人们发现在某些场景下,数据库的可扩展性和高可用特性更为重要,他们并不非常依赖关系数据库(没有事务,没有标准SQL),所以诞生了很多NoSQL数据库。它们的主要特点是:非关系数据模型,如文档类型、Key/Value、Graph等,不提供ACID事务保证,自定义API,没有标准SQL,通常是开源的。这一时期NoSQL数据库的主要产品有:HBase、DynamoDB、MongoDB、Redis等。8.2010-NewSQL2010年代,为了兼容NoSQL的高可用和高性能,同时又不舍弃特性在传统数据库的ACID事务的基础上,诞生了一批名为NewSQL的数据库系统。它们的主要特点是:基于关系模型,这种支持标准SQL分布的数据库的鼻祖应该是GoogleSpanner,然后在此基础上诞生了一些著名的分布式NewSQL数据库,如CockroachDB、YugaByte、TiDB。9.2010-HTAP系统2010年代,为了兼容OLTP和OLAP数据库系统,出现了HTAP(HybridTransactional-AnalyticalProcessing)数据库。这类数据库的特点是兼容OLTP数据库的高性能,执行SQL查询,能够像数据仓库(DataWarehouse)一样进行大规模的数据分析。其主要数据库有HyPer、MemSQL、SAPHANA等。10.2010-云系统2010年代,一些运行在云端的数据库系统也开始出现。这类数据库从一开始就需要适应云环境,提供类似于数据库即服务(DBaaS)的服务。最著名的产品有snowflake、AmazonREDSHIFT等。11.2010-Graph&TimeseriesDatabase除了传统的关系型数据库,上面也提到了一些NoSQL数据库。大约在2010年代,一些其他类型的NoSQL数据库诞生了。例如GraphDatabase(图数据库)、TimeseriesDatabase(时序数据库)等。知名的图数据库产品有neo4j、TigerGraph、NebulaGraph等。知名的时序数据库产品有InfluxDB、Timescale、TDengine、etc.12.结语随着硬件技术和应用场景的不断变化,近年来,在不同的领域,不同的应用方向,诞生了很多不同类型的数据库。例如,多模型数据库(Multi-Model)、区块链数据库(Blockchain)、流式数据库(Streaming)等。数据库行业呈现出百花齐放的格局。这也造就了近年来资本市场对数据库行业的关注,数据库创业也变得一团糟。数据库未来会向什么方向发展,呈现怎样的格局,让我们拭目以待。
