作者:魏波,中国PG分会培训认证执行总监、资深数据库工程师,十多年的数据库运维管理及培训经验,掌握PostgreSQL架构部署、性能优化等,致力于推动PostgreSQL在中国的发展。

数据库发展概要

数据库发展历程

数据库整个发展历程可以通过上图概括。具体来讲,从上世纪六十年代到今天,数据库的发展大体经历了上图表述的四个阶段,我们来简单了解一下。数据库技术的发展可以追溯到上世纪60年代,在数据库技术诞生之前数据的存取管理经历了穿孔纸带、卡片、磁带、文件系统的过程,管理过程繁琐、数据冗余,而且相互之间很难关联;不过文件系统的管理方式一直沿用至今,譬如我们个人电脑的C\D\E盘的文件目录,通常用来存放大量的各种类型的数据。

七十年代发生的三个事件标志着数据库技术的诞生

  1. IMS的产生:1968年,IBM公司推出基于层次模型的数据库管理系统IMS(Information Management System)
  2. DBTG报告:1969年,美国数据系统语言协商会下属数据库任务组DBTG(DataBase Task Group)发布了对数据库及操作环境建立的标准规范等一系列的报告。最早的高级语言COBOL就是这个组织贡献的世界上第一个商用语言。
  3. Codd的文章:10970年,IBM公司的研究人员E.F.Codd发表了大量论文,提出了关系模型,奠定了关系型数据库管理系统的基础。目前市场上主流的商业关系数据库都是基于此理论。

以上三个事件中标记了数据库技术的三种模型中的两种:层次模型、关系模型。在两者之间还有另一种网状模型。目前最主流的关系数据库使用关系模型存储管理数据。

三种模型对比:https://blog.csdn.net/gengkui9897/article/details/89295649
知识点:数据库与数据库管理系统的关系
数据库(Database,简称DB)的定义是长期储存在计算机内、有组织的、可共享的大量数据集合。
数据库管理系统(Database Management System,简称DBMS)是位于用户与操作系统之间的一层数据管理软件。
简单的理解:数据库管理系统通过有效使用计算机的CPU、内存、磁盘等资源,管理一个或多个数据库。涉及的具体动作是对数据的增删改查。
关系模型可以简单、灵活地表示各种实体及其关系,其数据描述具有较强的一致性和独立性。在关系数据库系统中,对数据的操作是通过关系代数实现的,具有严格的数学基础。所以一直主流商业数据库厂商结合SQL语言沿用至今。

国内市场从八十年代末期到现在,被国外数据库产品霸占30多年之久。这几个商业数据库分别是Oracle、Sybase、DB2、SQLServer, 可谓是数据库圈的四大天王。

八十年代末,九十年代初,美国关系型数据库产品组团进入中国,具体概要如下:

  1. 1989年,Oracle进入中国市场靠代理开卖Oracle,1992年甲骨文在北京设立独资公司。
  2. 1991年12月,Sybase进入中国大陆,随后投资230万美元正式设立赛贝斯软件。
  3. 1992年,IBM 正式进入中国,并启动了“发展中国”的大战略,协助中国全面开放。带来了DB2和informix。
  4. 1992年10月,Microsoft在北京设立代办处。

时间来到2010年,随着互联网2.0 网站的兴起, 传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS(社交网络服务)类型的业务时,暴露了很多难以克服的问题, 而非关系型数据库NoSQL则由于其本身的特点得到了非常迅速的发展。NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。

NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。例如谷歌、Facebook 这些公司的大量数据存储不需要固定的模式, 无需多余操作就可以横向发展。

下图中展示了主流的NoSQL开源数据库,其中包括列存储、文档存储、KV存储、图存储等类型。目前最流行的是文档存储的MongoDB、KV存储的Redis。

NoSQL 主要特征包括:

  1. 易扩展—NoSQL数据库种类繁多, 但是共同点就是改变数据库之间关系,降低耦合度,提升存储访问效率, 这样就非常容易扩展。
  2. 大数据量高性能—NoSQL数据库都具有非常高的读写性能, 尤其在大数据量下, 同样表现优秀。
  3. 多样灵活的数据模型—NoSQL无需事先为要存储的数据定义字段, 随时可以存储自定义的数据格式。

NoSQL数据库的出现,弥补了关系数据在某些方面的不足,极大的节省开发成本和维护成本。关系数据库和NoSQL都有各自的特点和应用场景,让关系数据库关注在关系上,NoSQL关注在存储上。

2014年-2017年是NewSQL数据库大发展时代,在这期间各大公司纷纷构建了自己的NewSQL数据库。

  1. 2014年10月Amazon Aurora提供可托管关系数据库服务RDS;
  2. 2014年微软发布Azure DocumentDB,支持对任意文档的SQL查询;
  3. 2014年1月CockroachDB编写发布第一个CockroachDB迭代版本;2016年CockroachDB开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,其结合传统 RDBMS 和 NoSQL 特性;
  4. 2015年Alibaba发布商业数据库的OceanBase。
  5. 2017年Oracle发布自治数据库云。

NewSQL 被定义为下一代数据库的发展方向,他是对各种新的可扩展/高性能数据库的简称,兼具NoSQL数据库的海量存储管理能力和关系数据库的ACID特性和SQL便利性。国内外比较有代表性的NewSQL数据库有:SAP HANA 、Google Spanner F1、TiDB、Sequoiadb。

简单来说:SQL+NoSQL=NewSQL。NewSQL系统虽然内部结构变化很大,它们有三个显着的共同特点:
1.支持关系数据模型;
2.使用SQL作为其主要的接口;
3.满足分布式数据库特点。

在这里可以简单来描述NewSQL与分布式关系数据库的关系,两者的主要区别在于底层存储的方式实现上,前者目前主要是通过KV存储实现,简化管理,后者继承了关系数据库存储的一些结构,但两者最终实现的目标基本是一致的,可谓“殊途同归”。主要实现支持弹性扩容、通明分片、高容错性、大数据量处理、业务融合等特点,同时能够很好的利用SQL标准访问数据,降低学习成本。

NewSQL分布式数据库的理论基础可以通过下面几篇论文来了解:
2012年Google发表论文《Spanner: Google’s Globally-Distributed Database》描述一个全球分布式系统,其特点包括:可扩展性、自动分片、容错性、一致性复制、外部一致性,和数据广域分布等,提供多行事务、外部一致性、跨数据中心的透明故障转移等功能
2017年,Google发表论文《Spanner: Becoming a SQL System》,描述查询执行的切分、瞬态故障情况下查询重新执行、驱动查询做路由和索引查找的范围查询,以及改进的基于块的列存等分布式查询优化技术。
2018年,Amazon发表《Amazon Aurora: On Avoiding Distributed Consensus for I/Os, Commits, and Membership Changes》 描述如何通过不变量和利用局部瞬态来避免大多数情况下的分布式共识问题。

另外,OLTP和OLAP的区别则主要体现在业务处理类型上,基本上是关系数据库应对的两种业务类型,前者要求在线实时业务响应及处理,后者主要是大数量的分析,对实时要求比较低,譬如可以允许1个小时才出分析结果,中间你可以出去办点事再回来看结果。

下面附一张数据库行业全景图,供大家参阅。关于数据库的发展历程先说到这里,下面来看数据库的3个发展趋势。

数据库发展趋势

趋势一:商业数据库与开源数据库二分天下
DB-Engines的数据库排行榜排名前十的数据库有一半多都是开源数据库,下图中显示随着互联网应用的发展,开源数据库以其开放自由的生态优势应用越来越广泛,其百分比已逐渐超过商业数据库。

趋势二:不再是一款产品满足所有应用场景
从2010年以后,随着大数据与云计算架构的发展,无论是在数据量的处理,还是数据类型的多样性方面都发生了很大的变化,数据库的种类也变得多种多样,目前从数据的处理类型来分已有超过10个类别,其中包括关系、内存、文档、图、对象、时序数据库等。

趋势三:传统关系型数据库目前依然占有绝对优势
数据库管理系统满足业务需求也遵循20/80的原则,以下图中显示有近80%的业务场景仍然是处理关系模型的数据。尽管近几年的百分比有所下降,但关系数据库已应用发展了30多年,相信未来5年不会有太大的变化。

通过以上3点趋势可以看到关系数据库的重要性。接下来我们来重温一下关系数据库的发展图谱。

  • 首先,E.F Codd博士创建了关系数据库的理论基础,并成功推动了IBM商业数据库DB2的产品迭代;E.F Codd博士1981年获得图灵奖。
  • 然后,Oracle公司的Larry Ellison则将关系数据库的商业成功推向了顶峰;
  • 再次,加州伯克利大学的Michael Stonebreaker教授创立了最强大开源关系数据库PostgreSQL的前身Ingres项目,凝聚全球开发小组的智慧和秉承开放自由的精神,使PostgreSQL展现了超强生命力,越来越受到欢迎;Michael Stonebreaker教授2014年获得图灵奖
  • 最后,Michael Monty Widenius一位孜孜不倦的编码者,成功推出了最受互联网欢迎的MySQL数据库。虽然因为SUN公司被收购间接导致MySQL卖给了Oracle,仍然没有对MySQL的流行产生太大影响,而且由作者发展出了新的分支MariaDB,另外还有一个Percona分支值得提及。

国产关系数据库发展

国产数据库发展概括为以下三个阶段:
第一阶段:八、九十年代数据库理论的学术研究
主要以大学和研发机构为主,主要面向OLTP的关系型数据库。最具代表的是两位人民大学的教授萨师煊、王珊,两位老师著作的《数据库系统概论》一直以来都是高校开展数据库教学的主要教材,可以说桃李满天下。

第二阶段:2000年到2009年,国产数据库有产品没市场
九十年代末期国内厂商逐渐基于十几年的研究成果,衍生出几款国产关系数据库产品,这些产品和背景主要源自于国家的“863”研究计划,“核高基”重大科研专项,以及“973”研究计划等。主要国产数据库产品参见以下列表:

这期间,国内企业大多数业务系统基本已被美国数据库产品占领,大多数企业处于对数据安全稳定和性能方面的诉求,宁可多花钱用国外商业数据库也很少考虑国产数据库,使得国产数据库很难得到快速发展,出现了有产品没市场的尴尬局面,只能依托政策扶持存活。

第三阶段:2010年以后,国产数据库发展弯道超车
一方面,主要得益于国内大数据和云计算技术的蓬勃发展,一线互联网企业通过开源技术的应用成功替换了商业软件。而且通过业务需求的拉动,不断的在开源领域开拓创新,衍生了在自主的互联网业务场景下的数据库服务RDS和数据库产品,逐渐向外输出技术和服务。

另一方面,随着国际政治局势和安全事件的催化,国产数据库厂商在政策强力推动下,也逐渐开始获得更多的市场份额,得以推动国产数据库产品的不断迭代和创新。

2010年以后,在云时代背景下来看有哪些数据库厂商:

国产数据库的发展主要是两条路线:

  1. 仿商业数据库再造:仿造商业成功的数据库进行研发,有的公司也购买了商业产品的源代码。从历史来看,追赶复制,是很难超越的!
    事件:2015年以来,IBM把代码授权了多家中国的公司:华胜天成、南大通用(Gbase 8t)和星瑞格。2017年5月,IBM把整个Informix业务卖给了三哥(印度公司HCL)。这次不是转卖代码了,是把整个人员、办公室、客户都卖了。这样,未来如果我们开发Informix有问题,就要向三哥公司求助。

  2. 基于开源再创新:主要是指基于开源MySQL或PostgreSQL的公司,掌控开源代码后根据国内客户需求的功能再造。可以理解为站在巨人肩膀上,有效避免重复造轮子。这里不得不再次提及PostgreSQL,不仅通过全球开发小组的有效协作稳定迭代PostgreSQL的发展,而且因其自由民主的基因决定了越来越多的数据库产品与其有着或多或少的关系。据了解,国内外与PostgreSQL相关的数据库超过100多款。

国产数据库未来是什么?
相信随着国产数据库产品不断升级迭代,将占领更多的国内市场,并能借着政策指引走出国门!

最后,附一张数据库技术趋势导图供大家参考,数据库技术未来发展方向总结了包括分布式、多模、新硬件融合、软硬一体化、云原生、湖仓一体、智能化、更安全可信九大主题(图可另存后放大查看)。

了解更多PostgreSQL热点资讯、新闻动态、精彩活动,请访问中国PostgreSQL官方网站:www.postgresqlchina.com

解决更多PostgreSQL相关知识、技术、工作问题,请访问中国PostgreSQL官方问答社区:www.pgfans.cn

下载更多PostgreSQL相关资料、工具、插件问题,请访问中国PostgreSQL官方下载网站:www.postgreshub.cn

数据库发展与PostgreSQL生态系列文章二相关推荐

  1. .net 面试题系列文章二(附答案)

    .net 面试题系列文章二(附答案) 内容摘要:本文是.net 面试题系列的第二篇,该系列文章是对网上所有.net面试题的收重新集整理後的系列文章,囊括了c#面试题,vb.net面试题,asp.net ...

  2. Oracle数据库从入门到精通系列之二:SGA和后台进程

    Oracle数据库从入门到精通系列之二:SGA和后台进程 一.SGA 二.后台进程 一.SGA Oracle有一个很大的内存块,称为系统全局区(SGA),用于(但不限于): 维护所有进程需要访问的内部 ...

  3. SQLServer数据库从入门到精通系列之二:认识LDF和LSN(Log Sequence Number) time mapping

    SQLServer数据库从入门到精通系列之二:认识LDF和LSN(Log Sequence Number) time mapping 一.LDF 二.LSN time mapping 一.LDF LD ...

  4. 强化学习系列文章(二十七):VPG+Beta分布在CartPoleContinuous环境中的应用

    强化学习系列文章(二十七):VPG+Beta分布在CartPoleContinuous环境中的应用 在第七篇笔记(https://blog.csdn.net/hhy_csdn/article/deta ...

  5. 强化学习系列文章(二十三):AirSim Python API图像与图像处理

    强化学习系列文章(二十三):AirSim Python API图像与图像处理 参考网址:https://microsoft.github.io/AirSim/image_apis/#segmentat ...

  6. 强化学习系列文章(二十八):进化强化学习EvoRL的预实验

    强化学习系列文章(二十八):进化强化学习EvoRL的预实验 最近在研究强化学习解决离散空间的组合优化问题时,接触到了很多进化算法,实际体验也是与RL算法不相上下.进化算法也常用于优化神经网络的参数,C ...

  7. SOA系列文章(二):服务设计原理:服务模式和反模式

    服务设计系列的法则已经发展到最佳通信实践和取样相关编码的程度.本文提供了设计和实现网络服务的基本原理,并且对面向服务的体系结构(SOA)的相关概念做了一个简要的回顾,以及有关于几种模式和反模式的详细讨 ...

  8. webrtc实现视频群聊系列文章(二)实现网络中一对一视频聊天

    引言 在之前一篇文章写了webrtc实现基本的本地1对1视频通讯,这一篇文章则实现现实网络中一对一视频聊天. 目标 思考 webrtc实现点对点通信的基础是目标和自己之间能够建立网络链接,那么如何建立 ...

  9. 后端开发如何设计数据库系列文章(二)设计大数据量表结构

    上篇文章讲解了传统数据库的一些设计注意点. 本篇为第二篇,在大数据量的情况下,如何去提前设计这个表结构,来达到一个比较好的效果.对于团队,对于后续的维护和扩展都带来更大的便利. 自增id 自增id还是 ...

最新文章

  1. AI还原宋明清三朝皇帝,还找到了最匹配的明星脸,网友:四大美女安排上
  2. linux 检查 文件末尾 是否有空行
  3. java复制文件_java多种文件复制方式以及效率比较
  4. php人才招聘系统描述,基于ThinkPHP框架的人才招聘网站系统PHP源码
  5. java为什么全是乱码_java一切乱码的解释 以及源头
  6. linux红黑树节点没有数据,真正理解红黑树,真正的(Linux内核里大量用到的数据 -电脑资料...
  7. MySql 5.7 json数据格式 增删改查 操作 (不定时更新)
  8. sklearn 决策树例子_使用 sklearn 构建决策树并使用 Graphviz 绘制树结构
  9. 计算机维汉输入法表格,维语输入法
  10. 电气工程师需掌握哪些计算机知识,一名合格电气工程师必须掌握的10个基本技能...
  11. font-style字体设置
  12. LM75AD温度传感器读写
  13. 奥克兰大学计算机专业世界排名,奥克兰大学,15学科排名世界前50!
  14. 终端上网_家里wifi上网很慢怎么办?通过这4招,让网速快到飞起来
  15. VUE连接MQTT即时通讯
  16. [转载]NFC问题分析
  17. innodb_buffer_pool_reads、innodb_buffer_pool_read_requests分析与innodb 缓存命中率计算
  18. 学习笔记5(类和对象)
  19. Java练习题 类 编写一个程序,使用复数类Complex验证两个复数 1+2i 和3+4i 相加产生一个新的复数 4+6i 。
  20. CDN工作中的专用DNS域名解析访问——诺必达

热门文章

  1. php java 哪个难,php和java的区别在哪里,那个更难一些
  2. 如何拍背景虚化的照片_如何拍摄背景虚化照片?
  3. 光伏“十三五”规划出炉:全新解析企业股市
  4. 软件著作权和专利权有什么不同
  5. vue中用v-modle绑定input来实现百分比的计算
  6. 计算机通信工程面试题,通信工程师面试题
  7. 20135327郭皓——信息安全系统设计基础第十周学习总结
  8. Java配置path和classpath的含义详解
  9. 区块链具体技术应用解决方案
  10. 【C++基础】C++入门篇之一篇博客带你看懂为什么学习C++,C语言和C++的主要区别