各类数据库排名汇总(转载)表 1 所⽰列出了每⼀类数据库的前 3~5 名,排名会不断变化,实时的排名参见  ⽹站。
表 1 各类数据库排名
⼤类类别前3~5名说明
SQL关系数据库Oracle、/MariaDB、SQL Server、
PostgreSQL、 DB2
遵循“表⼀记录”模型。按⾏存储在⽂件中(先第 1 ⾏,然后第 2 ⾏……)
时序数据库InfluxDB、RRDtool、Graphite、
OpcnTSDB、Kdb+
存储时间序列数据,每条记录都带有时间戳。如存储从感应器采集到的数据
键/值数据库、Memcached、Riak KV、
Hazelcast、Ehcache
遵循“键——值”模型,是最简单的数据库管理系统
⽂档数据库、Couchbase、Amazon
DynamoDB、CouchDB、
MarkLogic
⽆固定结构,不同的记录允许有不同的列数和列类型。列允许包含多值,记录允许
嵌套
图数椐库Neo4j、OrientDB、Titan、
Virtuoso、ArangoDB
以“点——边”组成的⽹络(图结构)来存储数据
搜索引擎Elasticsearch、Solr、Splunk、
MarkLogic、Sphinx
存储的⽬的是为了搜索,主要功能是搜索
对象数据库Caché、db4o、Versant Object
Database、ObjcctStore、Matisse
受⾯向对象编程语⾔的启发,把数据定义为对象并存储在数据库中,包括对象之问
的关系,如继承
分布式数据库TIDB  是  公司⾃主设计、研发的开源分布式关系型数据库,是⼀款同时⽀持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备⽔平扩容或者缩容、⾦融级⾼可⽤、实时 HTAP、云原⽣的分布式数据库、兼容 MySQL 5.7 协议和 MySQL ⽣态等重要特性。⽬标是为⽤户提供⼀站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决⽅案。TiDB 适合⾼可⽤、强⼀致要求较⾼、数据规模较⼤等各种应⽤场景。
宽列数据库Cassandra、、Accumulo、
ClickHouse
按照列(由“键——值”对组成的列表)在数据⽂件中记录数据,以获
得更好的请求及遍历效率。⼀⾏中的列数允许动态变化,且列的数⽬可
达数百万,每条记录的关键码不同,⽀持多值列
下⾯对排名靠前的开源数据库做⼀些简单介绍。
1. MySQL/MariaDB
2008 年美国 Sun 公司花费 10 亿美元收购 MySQL,⼀年后 Oracle 公司⼜花费 60 亿美元收购了 Sun 公司,从此 Sun 公司的服务器、操作系统、MySQL 等产品线全部归属 Oracle 公司。
拉⼒·艾⽴森奉⾏的经营哲学是“竞争不过它,我就买了它”。竞争不过,说明竞争对⼿的产品更具优势,所以收购它,从⽽变成⾃⼰的优势。⼏⼗年来,Oracle 从⼀家⼩型数据库公司变成今天覆盖硬件、平台软件、数据库、中间件、应⽤软件各个层次产品线的 IT 巨⽆霸,靠的就是美国的良好环境和总裁奉⾏的收购策略。
鬼步舞怎么跳MySQL 数据库占据中⼩型数据库应⽤市场的半壁江⼭,在这块市场,Oracle 数据库明显占下风,巅峰时世界上超过 70% 的⽹站后台都采⽤ MySQL 数据库。但是⾃从被 Oracle 公司收购后,MySQL 发
展明显趋缓,是继续开源还是闭源,Oracle 公司⼀直没下定论。于是MySQL 的原班⼈马陆续离开 Oracle 公司,另⽴炉灶,推出了 MariaDB 开源数据库。
MariaDB 继承了 MySQL ⼩巧精悍、简洁⾼效、稳定可靠的特征,并与 MySQL 保持兼容。时⾄今⽇,已有 Google、Facebook 等知名企业把应⽤从 MySQL 切换到了 MariaDB 上,各种 Linux 发⾏版的操作系统默认数据库都开始采⽤ MariaDB;⽽ Apple 公司反应更快,当 Oracle 公司收购 Sun 公司时,就切换到了 PostgreSQL 数据库。
截⾄ 2014 年年末的数据库综合排名,MySQL 继续位居第⼆名,但是其表现出来的颓势较明显,⽽ MariaDB 却具备强劲的⽣命⼒。
MariaDB 是⼀个开源的免费的关系数据库,截⾄发稿前的最新版本是 10.0.15,安装包可从  ⽹站下载。整个安装包⼤约 200MB,⼏乎能在所有的操作系统上安装和运⾏,与 Oracle 数据库、SQL Server、DB2 等商业数据库动辄好⼏张光盘相⽐,算是短⼩精悍了。
另外,也可以从这个⽹站下载数据库的源代码。对于⾮数据库型的 SaaS 云提供商来说,云端采⽤ MariaDB 是最好的选择,⽽且可以轻松搭建数据库集。
2. PostgreSQL
PostgreSQL 能被苹果公司⼤量使⽤并替换早期的 MySQL 数据库,说明其⼀定有不俗的表现。在 2014 年年末的数据库排⾏榜
上,PostgreSQL 位居第四位,号称世界上最先进的、最安全的开源数据库,也是⾯向对象的关系数据库。
华为内部局域⽹接⼊控制系统 SPES 也采⽤ PostgreSQL 数据库,在 Linux 操作系统上运⾏,极少出问题。经过⼗多年的磨砺,如今PostgreSQL 数据库具备如下特点:
⾯向对象,安全性极⾼,能运⾏在全部主流的操作系统上,完全 ACID 兼容。
⽀持外键、连接、视图、触发器和存储过程(多语⾔)。
⽀持最新的 SQL 2008 标准的数据类型,包括整型、数字型、字符型、布尔型、可变字符型、⽇期型、时间戳、⾃增长型以及各种⼆进制对象(如图⽚、声⾳和视频等)。
提供了各种流⾏语⾔的编程接⼝,如 C/、、.NET、Perl、、Ruby、Tcl、ODBC 等。
PostgreSQL 数据库同时具备很多众多令⼈振奋的优点,⽐如在线备份、数据域、表分区、表空间、嵌套事务、时刻点恢复、两段式提交、多版本并发控制、⼦查询等。
在 PostgreSQL 中,数据库⼤⼩没有限制,表⼤⼩上限为 32TB,⼀条记录的⼤⼩上限为 1.6TB,字段⼤⼩上限是 1GB,⼀个表包含的记录数没有限制,⼀条记录的字段数上限为 1600 个,⼀个表上创建的索引数⽬没有限制。
另外,SQLite 是⼀个⾮常⼩型的 ACID 兼容的关系数据库,适合嵌⼊式系统。
3. InfluxDB
InfluxDB 是⼀个开源的时间序列数据库,能应付极⾼的写和查询并发数,主要⽤于存储⼤规模的时间戳数据(每条记录⾃动附加时间戳),如 DevOps 监控数据、应⽤系统运⾏指标数据、物联⽹感应器采集的数据及实时分析的结果数据等。InfluxDB 具备如下特征:
美林退烧药几个小时吃一次全部⽤ Go 语⾔编写,并被编译成单⼀运⾏程序,⽆须第三⽅依赖。
简洁、⾼效地写和查询 HTTP(S)编程接⼝(API)。
通过插件能与其他的数据采集⼯具集成,如 Graphite、collectd、OpenTSDB。
可以搭建⾼可⽤性的 InfluxDB 环境。
量⾝定制化的类-SQL 语⾔。
允许给序列数据附加标签来创建索引,以便快速⾼效查询。
通过定义策略轻松实现⾃动失效过时的数据。
基于 Web 的管理界⾯。
对于⼀个具体的时间序列应⽤来说,除存储外,还需要集成数据采集、可视化和告警功能。为此,InfluxData 社区相应提供了
Telegraf(数据采集)、Chronograf(数据可视化)、Kapacitor(告警)三个开源项⽬,再加上 InfluxDB,能部署成⼀个完整的时间序列应⽤系统(简称为 TICK)。这四者的关系如图 1 所⽰。
图 1  数据采集⽰意图
4. Redis
Redis 是遵循 BSD 开源协议的存储系统,数据存储在内存中,因此具备极⾼的性能,可⽤作数据库、缓存和消息中间件。Redis ⽀持多种类型的,如字符串、哈希、列表、集合、带范围查询的有序集合、位图、hyperloglogs 和带半径查询的地理空间索引。
Redis 内置了复制、脚本语⾔编程、最近最少使⽤(LRU)淘汰、事务以及不同级别的磁盘持久化等功能,通过 Redis Sentinel 和集⾃动分区机制实现⾼可⽤性。Redis 采⽤ C 语⾔编写,能运⾏在 Windows、MacOS X、Linux、Solaris 等操作系统上,不过 Linux 是其最佳的运⾏平台,⽆须第三⽅依赖,它提供了最⼴泛的编程语⾔接⼝。
5. MongoDB彭敬慈
MongoDB 是排名第⼀的⽂档数据库,属于 NoSQL ⼤类,诞⽣于 2009 年,正好是兴起的前夜。MongoDB 采⽤ C++ 语⾔开发,能运⾏在 Windows、MacOS X、Linux、Solaris 操作系统上,提供了绝⼤部分计算机语⾔的编程接⼝。保存在 MongoDB 中的⼀条记录称为⼀个⽂档,类似 JSON 语法,例如:
lisheng
从上⾯的例⼦可以看出,⼀个⽂档就是“键:值”对的集合。
MongoDB 的主要优势包括:⾼性能、富查询语⾔(⽀持 CRUD、数据聚合、⽂本搜索和地理空间查询)、⾼可靠性、⾃动伸缩架构、⽀持多存储引擎。MongoDB 适合⽂档存储、检索和加⼯的应⽤场合,如分析。
6. Neo4j
Neo4j 是⼀个⽤ Java 语⾔开发的图数据库,它将结构化数据存储在由“点—边”组成的⽹络(数学术语叫“图”)上⽽不是表中。与关系数据库相⽐,图数据库擅长处理⼤量复杂、互连接、低结构化的数据。这些数据变化迅速,需要频繁查询,如果使⽤关系数据库,那么这些查询会导致⼤量的表连接,因此会产⽣性能上的问题。
Neo4j 重点解决了拥有⼤量连接的传统关系数据库在查询时出现的性能衰退问题。Neo4j 还提供了⾮常快的图算法、推荐系统和 OLAP 风格的分析,⽽这⼀切在⽬前的关系数据库系统中都⽆法实现。Neo4j 提供了⼴泛使⽤的 REST 接⼝,能够⽅便地集成到基于 Java、、.NET 和  的环境⾥。
Neo4j 使⽤ Cypher 语⾔进⾏增删改操作,例如:
创建了两个节点:变量“e1”和“e2”,标签“员⼯”,属性“{……}”。
创建了⼀条边,最终形成下图,如图 2 所⽰。
图 2  最终形成
7. Elasticsearch
Elasticsearch 是⼀个⾼度可扩展的开源全⽂搜索和分析引擎,⽤于存储、搜索和近乎实时地分析⼤规模数据。Elasticsearch 常被⼈们⽤于构建具备复杂搜索功能的应⽤系统,⽐如和优步的搜索,再⽐如⽹店中搜索商品、商业智能、⽇志收集与分析、价格告警等。利⽤ Elasticsearch 实现的数据采集、存储和可视化套件 ELK(Elasticsearch、Logstash、Kibana)在⽇志分析领域应⽤最为⼴泛。
8. Caché
⼤概 20 年前,⼈们提出了后关系型数据库的概念,⽬前已有不少产品,其中由 InterSystems 公司开发的 Caché 是后关系型数据库中的领头⽺,它提供 3 种⽅式访问数据:对象访问、SQL 访问、直接
对多维数据数组访问,⽽且 3 种访问⽅式能够并发访问同⼀数据。多维数据结构和多种数据库访问⽅式构成了后关系型数据库的基础。
Caché 数据库具备如下⼀些特点:
1)速度快
Caché 数据库在同等条件下查询相同数据,⽐ Oracle 等普通数据库要快 7~20 倍。
2)节省存储空间
循规蹈矩的反义词存储空间可能节省 2/3,⽽基于 Caché 的应⽤程序,⽐原来基于关系型数据库的应⽤程序运⾏有可能快 20 倍。
3)使⽤简单
手机如何加密Caché 数据库⽀持标准 SQL 语句,因此不太熟悉 M 语⾔的⽤户依然可以轻松对数据库中的数据进⾏操作。
4)接⼝容易
Caché 数据库⽀持 ODBC 标准接⼝,因此在与其他系统进⾏数据交换时⾮常容易,同时 Caché 亦可以将数据输出为⽂本⽂件格式,以供其他系统访问调⽤。
5)真正的三层结构
Caché 数据库能够在真正意义上实现 3 层结构,实现真正的分布式服务,便于做横向扩张。
6)对象型编辑
Caché 数据库是真正的对象型数据库,开发时⽤户可直接⽤数据库定义⾃⼰想要的对象,然后再在其他开发⼯具中调⽤该对象的⽅法和属性即可完成开发⼯作,⾮常⽅便。
7)⽀持 Web 开发
Caché 数据库提供⾃带的 Web 开发⼯具,使⽤、维护⾮常⽅便,符合当今软件业发展的趋势。
8)价格便宜
Caché 数据库的价格⽐ Oracle 数据库要便宜很多。
Caché 数据库在欧美的医疗系统使⽤最为普遍,被医疗界公认为⾸选的数据库,国内中⼭⼤学第三附
属医院、深圳南⼭医院、北京安贞医院等也采⽤ Caché 数据库
9. Cassandra
Cassandra 是在 Google 的 Bigtable 基础上发展起来的 NoSQL 数据库,由脸谱于 2008 年⽤ Java 语⾔开发,⽬前被贡献给 Apache 基⾦会。Cassandra 被称为“列数据库”,这⾥的“列”不是指关系数据库中⼀个表中的列,⽽是由“键—值”对组成的列表(语法与Python 语⾔中的列表相同),如:
Cassandra 中⼀⾏数据语法是“⼀⾏的键={列,列,…}”,⼀⾏可包含上百万列,⽐如:
Cassandra 中的列族(ColumnFamily)格式是“列族名={若⼲⾏}”,⼀个列族可包含⼏⼗亿⾏,例如:
⼀个 Cassandra 运⾏实例管理很多键空间(Keyspace),Keyspace 相当于关系数据库管理系统中的数据库,⼀个键空间包含很多列族。键空间、列族、⾏、列的关系如图 3 所⽰。