当前一些流行的数据库系统

在我们讨论数据库的最新趋势时,总会参考DB-Engines 上所提供的排名信息。DB-Engines全球数据库排行榜每个月都会更新当前各数据库的热度排行。本文将依据该排行榜选取其中一些流行的以及个人感兴趣的数据库系统,查阅网络资料,简单阐述这些数据库系统的应用情况特点。

DB-Engines 2019年3月数据库热度排行前15

“IOM”的商业数据库

IOM这个词化用自IOE,指的是IBM、Oracle和Microsoft三家公司。由于EMC并没有在当下流行的数据库产品,故将其的“E”用微软的“M”代替。IBM是最早使用SQL(SQL其实也是IBM的实验室发明的)的公司。而Oracle的数据库和Microsoft的SQL Server则是数据库业界的“御三家”其二(另一是MySQL)。

稳坐头把交椅的Oracle Database

要说地球上最好最完备的数据库是什么,几乎所有人都会说Oracle。Oracle数据库是甲骨文(Oracle)公司的核心产品(甚至公司名都是后来改的),并且一直开发了三十多年。这就犹如历史相当的微软主打的Windows和Office软件——东西能不好吗。

Oracle可以说是数据库中的“高富帅”。作为最高端的数据库,其让人影响最为深刻的特点就是“贵”——其标准版软件的报价都要六位数。但其价格高昂的背后是即为齐全的功能,其包含了丰富的功能组件和各种中间件。这也导致了用户在运维和开发上的困难。此外,由于Oracle对待外界事物的谨慎态度,也造就了Oracle数据库极高的封闭和安全性,所以Oracle适合于金融、电信等对可靠性要求极高的大型企业。

由于Oracle对安全性和可靠性的要求很高,导致了其运行速度较MySQL等产品更慢。并且,想要用好Oracle的产品功能和更好地发挥其性能,企业相关的管理人员需要较高的管理技术水平,这也使得企业需要承担很高的运维成本。

“富二代”Microsoft SQL Server

SQL Server可谓是不折不扣的“富二代”。由于带了Microsoft家族的标签,这使得SQL Server在Windows平台下进行数据库应用开发的较为理想的选择之一。它能够和Windows深度结合。SQL Server的优势在于它在Windows上使用最方便、开发最方便、运维最方式。凭借良好的易操作行和友好的用户界面,SQL Server赢得了不少中小型企业用户的青睐。

带它的缺点也很突出,就是能力较弱。SQL Server是“御三家”中功能最少的一个,并且运行平台也只限制于Windows。由于Windows平台的限制,SQL Server在高可用、灾备、并发等方面的性能也不足。其在运行速度和安全性上的表现属于一般水平。

可见,SQL Server是成也Microsoft,败也Microsoft。但随着近几年Microsoft“服务为先,云为先”的战略调整,公司内部也在降低Windows的地位。这使得Microsoft开始积极地拥抱其它平台,推出了.net跨平台战略。这也使得SQL Server有望从Windows上扩展到其它如Linux等平台。

令人惋惜的IBM DB2

1970年,IBM里的科学家科德发表了一篇名为“大规模共享数据库的数据关系模型”的论文1。但令人遗憾的是,IBM并不是很重视这项革命性的发明,只是把它放到了当时IBM的主打数据库“System R”下的一个小项目里。不过甲骨文公司的创始人看到了这个类型数据库的前景,这使得Oracle崛起。直到1983年,IBM才将System R等数据库整合成了IBM的旗舰数据库产品DB2。但由于IBM一贯的整机售卖的商业策略,使得DB2只能在IBM自家的大型机上运行,到了上世纪90年代DB2才开始支持其它的计算机和操作系统。这使得DB2渐渐丧失了数据库的市场份额2

由于IBM保守的风格以及专注于硬件的售卖,DB2的产品往往是和IBM的大中小型机捆绑在一起的。这使得DB2在非IBM机器上使用得很少。但在21世纪初期,靠谱的商业关系型数据库只有Oracle和DB2可选择,而企业多会采购IBM的大型机,所以企业往往就会选择和大型机捆绑的DB2。捆绑搭售的方式也使DB2在金融等重要领域占据了不小的份额。由于这些领域的要求极度稳定性,这些核心设备是不会轻易变动的,所以到现在DB2也还有不错的份额。但随着近几年去IOE化运动的盛行,DB2的市场份额也和Oracle一样受到了不小的影响。

“大象”和“海豚”——开源的关系数据库

MySQL上的那只小海豚想必都很眼熟了。正好,PostgreSQL的LOGO上的动物和PHP的一样是大象,不过只有象头。如果要选用一款开源数据库,我们往往会在这两个数据库间徘徊不定。MySQL声称自己最流行,而PostgreSQL(下文称PG)则标榜自己最先进。此外,还有些数据库系统不像它们俩处于开源数据库顶端,但也有属于他们自己的地位。

被招安的MySQL

在“御三家”中,MySQL是唯一的开源数据库,这意味着它不需要高昂的授权费以及具有强大的兼容性。但是也正由于其开源的特点,使得其运维和售后支持远弱于商业数据库,并且开发也是最不方便的一个。

但由于其代码开放,开发者可以随意地对其进行裁剪和改造。IT公司会根据公司业务需要对MySQL进行修改。所以MySQL非常适合互联网企业。

但MySQL的所有权被Oracle公司获得后,其将MySQL的商业版本售价大幅提高,并且对是否支持MySQL社区版摇摆不定,这也为MySQL的自由化蒙上了一层阴霾。

“战未来”的PostgreSQL

PostgreSQL最初由伯克利分校开发,是基于BSD/MIT许可,完全由社区驱动的开源项目。相较于MySQL,PG的性能及其稳定,性能上不弱于MySQL甚至某些情况下比MySQL好。其对于SQL标准支持的完备性比MySQL强。但其也在设计时也存在较为理想化的问题,对语法数据的要求较为严苛。此外由于当前应用没有MySQL太广泛,其在技术人员培养生态发展等方面还有许多路要走。近几年来,国内外有许多团队开发了基于PG的产品,使用PG的公司也越来越多。虽然现在相较于MySQL,PG的产品还不是太成熟,但相信其在未来还是大有可为的。

前途未卜的替代品MariaDB

近几年,MySQL的所有权经历了一系列戏剧性的事件后落到了Oracle的手上。作为数据库龙头老大哥的甲骨文也一直想消灭MySQL,但由于社区的反对和反垄断的威胁一直不敢下手。不过也给MySQL造成了一些风波。开源社区就想另起一个分支,做一个真正开源的MySQL。所以在2009年,MySQL的创始人Ulf Michael Widenius以MySQL为基础,成立分支计划MariaDB。到现在,主要的Linux发行版以及维基百科、LAMP等知名网站和应用已经从MySQL切换到了MariaDB。

MariaDB 5.5的版本是和MySQL 5.5完全兼容的。但随着甲骨文在MySQL 5.5之后走了另外的技术路线,这两个产品间的差异将会越来越大。在目前甲骨文仍然开源MySQL,其它公司开发MySQL分支的情况下,MariaDB 的前景如何还不明朗。

小而美的SQLite

SQLite不是传统意义上CS架构的数据库系统。它其实是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它能够嵌入到应用程序中,所以很多应用使用SQLite作为应用本地数据库。此外,由于SQLite的体积小、速度快、兼容性好,它可以运用在如智能手机等各种嵌入式设备上。但是由于其的简单性,使得它缺少了能多大型数据库的功能,并且在安全性上也较大型数据库弱。

云计算和大数据的浪潮——NoSQL的崛起

进入21世纪10年代,云计算和大数据产业蓬勃发展,数据规模急剧膨胀。关系型数据库为了维护数据的一致性付出了巨大代价,使得读写性能相对较差。但是,这类数据在业务上的一致性要求并没有那么严格,关系型数据库已经不能为这样规模的数据提供很好的服务了。这时,一些不使用关系数据模型的数据库发展了起来。

而Redis和MongoDB正是当下运用最广泛的NoSQL。它们在高并发场景下的性能非常优越。

高并发的缓存池Redis

Redis是一个开源、支持网络、基于内存、可选持久性的键值对存储数据库。它将数据都存在内存,并定期将数据写入磁盘做持久化,这使得Redis对数据的读写都非常快。但其在内存不够时会使用算法删除数据,所以它是不可靠的。由于这些特性,开发者往往将Redis作为MySQL数据库的缓存来使用,以实现高并发的需求。此外,由于Redis单线程的特性,也可以将其作为多服务器系统的分布式锁。

目前,各大云计算厂商都有围绕Redis进行开发的产品。Redis已经成为了云计算中不可或缺的组件之一。

大数据时代的通用数据库MongoDB

相较于Redis,MongoDB更像MySQL,支持更强大的查询功能但不支持事务。MongoDB的数据也主要存在内存,但当内存不足时,它只将热点数据放入内存。在应用场景上,MongoDB主要解决海量数据的访问效率问题。并且相较于SQL数据库,其的使用成本更低。所以,在数据间没有过于复杂关系的情况下,可以使用MongoDB代替MySQL。可以说MongoDB在大数据时代是MySQL的有力竞争者。

写在最后

数据库作为计算机系统的重要组成之一,在几十年的发展过程中有稳定,有变革。在当前,有如Oracle一样的产品经过几十年风雨屹立不倒,也有像MongoDB这样乘着大数据的浪潮崛起的产品。相信在今后,数据库市场将更有活力,迸发出更多的新技术新产品,助力人类的数据处理。

本文在最初只要求简单写个500字小论文,但是在查阅资料和构思提纲的过程中发现就算再精炼也没法把我像写的内容完整地表述清楚。索性放开字数限制,把想写地东西都写完整、写过瘾为止,也可作为今后查阅之用。实在抱歉,还望理解。

本文在撰写时查阅了众多网络资料,由于资料十分繁杂,无法一一列出,深感抱歉。

注:本来这篇文章是课程小论文的,后来发现写多了索性传上来当一篇博客了。因为大多数系统没用过,所以很多地方写得可能有纰漏。


  1. Codd, E.F., A relational model of data for large shared data banks. Communications of the ACM, 1970. 13(6): p. 377-387.
  2. 吴军, 浪潮之巅. 2016, 北京: 人民邮电出版社. 2册(18,170页).
Last modification:March 24th, 2019 at 10:21 pm

Leave a Comment