> Image by Tumisu from Pixabay
数据库是任何软件应用程序的基石。您将需要一个或多个数据库来开发几乎所有类型的软件应用程序:Web,企业,嵌入式系统,实时系统,AI,ML,HPC,区块链,IoT和许多其他应用程序。
二十年前,选择数据库要容易得多。在大多数情况下,您可能选择了一个关系数据库系统,然后就完成了。但是在现代软件开发中,选择正确的数据库是最具挑战性的任务之一。
随着微服务,云,分布式应用程序,全局扩展,半结构化数据,大数据,快速数据,低延迟数据的兴起:现在,各种NoSQL都加入了传统的SQL数据库。NewSQL和Cloud数据库。
目前有343个数据库。在这里,我将根据以下标准从它们中选择十个数据库:
我将为每个数据库讨论以下内容:
1995年,两位软件工程师Michael Widenius和David Axmark创建了开源关系数据库管理系统(RDBMS)MySQL。自成立以来,MySQL因其企业级功能,免费,灵活(GPL)社区许可证和升级的商业许可证而迅速在行业和社区中流行。在开源数据库中,PostgreSQL专注于创新和高级功能,而MySQL则专注于健壮性,稳定性和成熟度。
今天,MySQL是最流行和使用最广泛的SQL数据库之一。它也是Web应用程序中最常用的数据库之一。世界上一些最大的Web规模应用程序(例如Facebook,Uber)使用MySQL。
MySQL Community Edition是业界使用最广泛的免费数据库。而且,其商业版本在行业中被广泛使用。
最著名的数据库排名网站DB-Engines将MySQL排名第二,仅次于Oracle:
> Image by Author (data: DB-Engines)
2020年Stack Overflow开发人员调查将MySQL列为2020年最受欢迎的数据库:
> Source: Stack Overflow Developer Survey, 2020
拥有25年历史的MySQL并不是目前最流行的数据库。但是与其他较旧的数据库不同,它仍然保持较高的吸引力,如下所示:
> Source: DB-Engines
此外,Google趋势在过去几年中显示出相对稳定的图表:
> Source: Google Trends
当埃德加·科德(Edgar F. Codd)在关系数据库管理系统(RDBMS)上发表其革命性论文“大型共享数据库的数据关系模型”(1970)时,它彻底改变了数据库系统的面貌。该论文特别启发了年轻的软件工程师Larry Ellison(Oracle公司现任CTO)。后来,他在1979年创建了世界上第一个可商用的RDBMS系统Oracle。从那时起,Oracle一直是领先的商业RDMBS系统,并在Unix和Linux系统中占据主导地位。在过去的41年中,Oracle随着时间的推移不断发展,并为RDBMS和整个数据库系统的创新做出了贡献。
目前,Oracle是商业支持的第一数据库,也是整体上使用广泛的RDBMS之一。它的最新版本(21.c)添加了许多创新功能,这些功能将使其在未来几年成为有吸引力的选择。
四十年来,Oracle为客户提供了稳定,成熟的企业级数据库。尽管它面临来自开放源代码SQL数据库和NoSQL数据库的激烈竞争,但它仍然是DB-Engines排名最高的数据库系统:
> Image by Author (Data: DB-Engines)
但是,在Stack Overflow开发人员调查中,由于该列表受开源数据库的支配,因此它排名第8位:
> Source: Stack Overflow Developer Survey, 2020
Oracle可能以其最新版本赢得了大奖。结果,它在最近几年中获得了很大的吸引力。考虑到市场正在转向开源数据库,这是一个壮举:
> Source: DB-Engines
此外,Google的趋势还显示出Oracle的曲线非常平坦,这在商业数据库中很少见:
> Source: Google Trends
自1970年代初以来,加州大学伯克利分校就致力于通过其开创性的数据库项目Ingres来塑造现代数据库管理系统。1986年,传奇人物Michael Stonebraker领导了POSTGRES(Post-Ingres)项目,以解决现有数据库项目的问题。PostgreSQL诞生于POSTGRES项目的一部分,该项目是一个关系数据库管理系统。在过去的30年中,PostgreSQL在现代数据库开发方面处于领先地位,做出了许多创新,迈克尔·斯通布雷克(Michael Stonebraker)于2014年获得图灵奖,主要是因为他在PostgreSQL中的工作。
如今,PostgreSQL是最常用的数据库之一。它也是最先进的开源关系数据库。
PostgreSQL是最古老的开源和免费数据库之一。它具有巨大的社区支持,并在社区和行业中得到使用。
根据数据库引擎,它是最受欢迎的数据库之一:
> Image by Author (Data: DB-Engines)
根据Stack Overflow开发人员调查,它是2020年第二受欢迎的数据库:
> Source: Stack Overflow Developer Survey, 2020
由于其先进的功能和创新,即使在PostgreSQL引入30年后,它也获得了很多宣传,如下所示:
> Source: DB-Engines
Google趋势在最近几年也显示出对PostgreSQL的吸引力增加,这表明对PostgreSQL的兴趣日益增加:
> Source: Google Trends
1988年,Microsoft与Ashton-Tate和Sybase一起创建了RDBMS作为Sybase SQL Server变体。1989年,他们发布了Microsoft SQL Server的第一个版本。尽管不像其他产品那么创新或先进,但是Microsoft SQL Server多年来经历了重大更新和大修。最初针对IBM OS / 2发行,不久又针对Windows系统发行。在过去的三十年中,它是Windows系统中占主导地位的商业中型数据库。
当前,它是领先的商业数据库系统之一,Microsoft提供了出色的工具支持。
MS SQL是Windows平台中最受欢迎的商业数据库,也是Azure Cloud中首选的SQL数据库。由于这些事实,根据DB-Engines排名,它仍然是第三受欢迎的数据库:
> Image by Author (Data: DB-Engines)
它也是Stack Overflow Developer调查中第三大最受欢迎的数据库:
> Source: Stack Overflow Developer Survey, 2020
MS SQL是此列表中最古老的数据库之一。尽管它是一个稳定可靠的数据库,但它并不是最具创新性或先进性的数据库,并且呈下降趋势,如DB-Engines趋势所示:
> Source: DB-Engines
多年来,Google趋势显示MS SQL呈下降趋势,并且在2021年也不会改变:
> Source: Google Trends
当我们需要在数据库中保存半结构化数据(例如JSON,XML)时,有很多用例。此外,使用面向对象的编程语言向RDBMS加载和访问数据需要附加的应用程序级映射(对象关系阻抗不匹配)。为了解决这些问题,尤其是处理文档数据时,公司10gen(现为MongoDB Inc.)在2009年发布了MongoDB作为第一个文档数据库。在接下来的十年中,MongoDB进行了重大改进。它解决了许多缺点(例如安全性),并创新并开创了许多功能。
当前,它是主要的文档数据库和主要的NoSQL数据库。
作为著名的文档数据库,MongoDB近年来正迅速普及,并且在数据库引擎排名中排名第五。
> Image by Author (Data: DB-Engines)
2020年Stack Overflow开发人员调查还使MongoDB排名第五:
> Source: Stack Overflow Developer Survey, 2020
如数据库引擎所示,MongoDB近年来正逐渐受到青睐:
> Source: DB-Engines
Google趋势还显示了MongoDB的上升趋势:
> Source: Google Trends
2009年,意大利开发人员Salvatore Sanfilippo试图改善其创业公司的可扩展性,并希望开发一个实时日志分析器。他在使用传统数据库系统时遇到了严重的扩展问题,并将Redis创建为分布式内存中键值存储。Redis很快就受到社区的欢迎,并发展成为高度可扩展的内存中数据结构存储,已在业界广泛使用。
几乎所有企业都使用分布式内存数据存储和分布式缓存。因此,Redis在行业中非常受欢迎,如下所示:
> Image by Author (Data: DB-Engines)
Stack Overflow开发人员调查还将Redis列为整体排名第六的最受欢迎的数据库:
> Source: Stack Overflow Developer Survey, 2020
随着云和微服务的兴起,Redis在最近几年受到了极大的关注,如下所示:
> Source: DB-Engines
自成立以来,Google趋势也显示了Redis趋势的直线上升:
> Source: Google Trends
无论是小型创业公司还是Web规模的电子商务公司,都需要全文搜索。Doug Cutting在1999年出于全文搜索目的开发了Java库Lucene。从那时起,Lucene成为全文搜索的行业标准。Elasticsearch是基于Lucene的全文本搜索引擎,最初由Shay Banon开发并于2010年发布。它是一个分布式,多租户的全文本搜索引擎,提供REST API。
近来,Elasticsearch被广泛用作搜索引擎和应用程序的可观察性。结果,它在DB-Engines排名中排名第8,成为最受欢迎的数据库和最受欢迎的搜索引擎:
> Image by Author (Data: DB-Engines)
在2020年Stack Overflow开发人员调查中,Elasticsearch排名第10位,这是全文搜索引擎的一项壮举:
> Source: Stack Overflow Developer Survey, 2020
近年来,由于云计算和微服务的兴起,可观察性引起了人们的极大兴趣。作为现代可观察性堆栈的基石,Elasticsearch近年来获得了巨大的关注:
> Source: DB-Engines
Google趋势提供的数据还显示,近年来Elasticsearch的兴趣显着上升:
> Source: Google Trends
在2000年代中期,Facebook迅速发展,需要大规模扩展的数据库。不幸的是,市场上没有可以满足Facebook扩展需求的数据库。受Google的Big Table论文(2006年)和Amazon的Dynamo论文(2007年)的影响,两位Facebook工程师Avinash Lakshman(Amazon Dynamo论文的合著者)和Prashant Malik于2008年将Cassandra开发为分布式Wide Column Store数据库。一个高度可扩展的数据库,在行业中广泛用于处理海量数据。
Cassandra是最流行的NoSQL数据库和最流行的Wide Column Store数据库之一。它是第9个最受欢迎的数据库,如下所示:
> Image by Author (Data: DB-Engines)
Stack Overflow开发人员调查还将Cassandra排名为2020年的第12位:
> Source: Stack Overflow Developer Survey, 2020
作为处理大量OLAP工作负载的领先数据库,Cassandra在2016年获得了巨大的关注,并且仍保持这一水平:
> Source: DB-Engines
长期以来,Google趋势对Cassandra也表现出稳定的兴趣:
> Source: Google Trends
当Oracle收购Sun Microsystems时,由于Sun Microsystems拥有MySQL,MySQL的未来尚不清楚。MySQL的共同创建者Michael Widenius派生了MySQL并创建了MariaDB。MariaDB是一个关系数据库管理系统,与MySQL协议和MySQL客户端兼容。无需更改代码即可轻松地用MariaDB服务器替换MySQL服务器。与MySQL相比,MariaDB更受社区驱动。
四大SQL数据库主导着SQL数据库域。作为该列表中最年轻的SQL数据库,MariaDB很难获得普及。
但是MariaDB做得很好,并且已经是最受欢迎的数据库之一,如下所示:
> Image by Author (Data: DB-Engines)
根据2020年Stack Overflow开发人员调查,它已经超过了许多成熟的数据库,例如Oracle和IBM DB2:
> Source: Stack Overflow Developer Survey, 2020
凭借众多创新和分布式SQL功能,MariaDB是最流行的SQL数据库之一,如下所示:
> Source: DB-Engines
此外,如Google趋势所示,近年来它越来越受到关注:
> Source: Google Trends
1966年,IBM为Apollo程序开发了首批数据库管理系统IMS(分层数据库)之一。当IBM工程师Edgar F. Codd发表有关关系数据库的开创性论文时,IBM不愿放弃他们的IMS数据库。甲骨文发布了第一个关系数据库后,IBM迅速改正了发展道路,并于1983年发布了Db2作为商业支持的RDBMS。最初,IBM发行了用于IBM大型机的Db2。1987年,IBM发行了适用于Windows,Linux和Unix系统的Db2 LUW。在这里,我将讨论Db2 LUW,因为Db2家族还有其他数据库。
多年以来,IBM Db2经历了许多重大变化,并且像Oracle一样发展了很多。
Db2曾经是市场的领导者,但由于数据库格局竞争现在是多方面的,因此在最近几年已经失去了知名度。
但是,它仍然是大中型企业中最常用的数据库之一,并且在流行度中享有突出的地位:
> Image by Author (Data: DB-Engines)
在具有新近度偏差的Stack Overflow Developer调查中,其排名很低:
> Source: Stack Overflow Developer Survey, 2020
近年来,Db2也没有受到太多关注,如下所示:
> Source: DB-Engines
Google趋势还证实了其持续下降的趋势:
> Source: Google Trends
在此列表中,我显示了2021年要使用的十个数据库。RDBMS系统在该列表中占主导地位。MySQL和PostgreSQL是开源和免费数据库的领导者,紧随其后的是MS SQL。与MySQL兼容的MariaDB越来越受欢迎。
在商业数据库中,Oracle在其最新版本中增加了许多增值功能,并朝着未来迈出了巨大的一步。尽管IBM Db2仍在大型组织中使用,但它会逐渐下降。
在NoSQL数据库中,MongoDB(文档数据库),Redis(内存中键值存储),Cassandra(宽列数据库)和Elasticsearch(全文搜索引擎)是它们领域的领导者。
该列表并不包含所有内容,并且许多重要的数据库类型也无法像NewSQL数据库,Cloud Native Databases那样进入前十名。但这将对2021年的顶级数据库进行高层概述。