2016全球最强数据库大盘点

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 此文盘点2016年度排名中前十位的数据库,详细介绍每种数据库的特性和缺点,并比拼各大厂商的云数据库服务,最后展望今年的数据库发展。热衷数据库的读者一定不要错过哦!

数据库排名年度盘点

说到盘点,首先肯定得看看DB-Engines的全球数据库排名。下表是2017年1月份前20名数据库引擎最新排名。

16b45770de8386a52cc92dd2e87abf0f713d72da

DB-Engines 2017-01数据库前20名列表DB-Engines 2017-01数据库前20名列表

​DB-Engines这个排名在业界引用得非常多,权威性也很高,总体来说比较客观,它不像很多咨询机构采用市场调查,或者某个数据库厂商发布的数据,而是通过以下6个方面的统计数据来综合评估各个数据库产品得分并给出综合排名:

  1. 数据库相关网站数量(当前通过google、bing、yandex搜索引擎统计)
  2. 公众关注度(通过Google trends计算)
  3. 技术讨论活跃度(通过Stack Overflow、DBA Stack Exchange问答及用户统计)
  4. 招聘职位(通过Indeed、Simply Hired统计)
  5. 专业档案(通过LinkedIn、Upwork统计)
  6. 社交网络信息(通过Twitter统计)

DB-Engines这个方法我认为比较科学,我个人也比较喜欢用这种方式来快速分析事物活跃情况与趋势。当然,这个排名只是反应全球流行程度,不能反应出产品营收情况,也不代表国内流行度排名。下图上各数据库产品的竞争关系及客户流向示意图:

dcd35a82978a2db3d81ec3c2b138f99b1075efc9

各数据库产品的竞争关系及客户流向示意图各数据库产品的竞争关系及客户流向示意图

从排名来看Oracle、MySQL、SQL Server三大数据库产品是绝对遥遥领先,呈三足鼎立局面。PostgreSQL、MongoDB比较稳的站在前五,得分也不相上下,两家一直在争夺老四的位置。DB2曾经是数据库的领导者,但近几年发展乏力,在持续下滑,特别是互联网行业及中小企业IT里基本没有DB2的身影,在金融等领域也受到非常大的挑战,估计明年老六的位置也危险。MongoDB、Redis、Elasticsearch、Neo4j在自己的领域取得了领导地位。

总体来说,去年MySQL、SQLServer、PostgreSQL、MongoDB、Redis、 Elasticsearch 都是市场大赢家,在自家的地盘都发展得非常不错。而Oracle、DB2、Access、Sybase几家都比较悲催,活跃度在不停下滑。

93c870f6851f53733586bd7b9e7474fb7deaea82

2013年以来几大主流数据库排名变化整体趋势2013年以来几大主流数据库排名变化整体趋势

​上图是2013年以来几大主流数据库排名变化整体趋势。

62dd6bfeec86f38063c132fa465ac23a13c02209

2013年以来开源数据库与商业数据库的发展趋势分析

上图是2013年以来开源数据库与商业数据库的发展趋势分析,整体大家能明显感受到开源数据库都呈良好的发展势头,而商业数据库的市场被慢慢吞食,但从近一年发展趋势来看,开源数据库并没有完全打败商业数据库的势头,未来很长时间还会是激烈竞争状态,目前商业数据库主要是靠Oracle、SQLServer在支撑。

3ff6853b382586dec8ef8b800dc87bdd96de407f

​各种数据库类型市场百分比各种数据库类型市场百分比

NoSQL发展一直很快,几年前有些人会说NoSQL要代替关系型数据库,但最近大家都开始冷静一点了,从上图可以看出,NoSQL虽然发展很好,但是目前RDBMS仍是占据了80%的活跃度,处于统治地位。

2016十大数据库点评

一、Oracle(老大,最挣钱的数据库)

Oracle一直是数据库市场占有率最高的产品,但2016年很不好受,一直被老二MySQL威胁,虽然Oracle与MySQL都是Oracle公司的产品,但是MySQL带给Oracle的营收可以忽略不计,这样就间接导致Oracle市场受到影响。那Oracle为什么不直接砍掉MySQL或者减缓MySQL的更新步伐呢,这里很可能是考虑到MariaDB这个分支也在持续快速发展,如果官方的MySQL更新缓慢,那估计很多公司就会选择MariaDB了。所以Oracle也没有办法,既没法让MySQL迁移到Oracle,也没法不搞MySQL,所以只能拼命发展MySQL,争取把用户守住。当然Oracle也在全力投入发展云服务,如果云计算领域搞起来,MySQL可能带来不错的营收。

0cd4c585eede8493ec42aa1d5d19fbda3b26ed54

Oracle12c

​Oracle12c是一个非常重要的版本,相比11g,在设计理念上有了全新的变化,全面拥抱云计算,多租户是12c的最大特性。按Oracle以前产品的发布来看,大版本的第一个版本更多是布道,而第二个版本更具有大规模生产使用价值。2016年发布了12.2版本,12c可以说能进入生产使用阶段。Oracle12.2在云计算多租户方面有了非常大的增强,我简单列了几个重要的点如下,这些点也许普通用数据库的人看起来不太眼,但是对于云计算多租户是非常重要的特性 :

  1. I/O Rate Limits for PDBs(PDB可以按IOPS或Mbps隔离)
  2. Support for PDBs with Different Character Sets, Time Zone File Versions, and Database Time Zones in a CDB
  3. Proxy PDB(PDB代理服务,可以用一个链接指向远程的一个PDB)
  4. Service-Level ACLs for TCP Protocol(每个PDB可以指定ACL安全策略)
  5. Flashback Pluggable Database
  6. PDB Archive Files (.pdb Files)(可以导出PDB为离线文件,然后迁移到其它的CDB上,用于容器迁移)
  7. PDB Refresh,clone PDB and autorefresh,(可用于单PDB的镜像实例灾备、同步、分析)
  8. 一个CDB可以包括4000个PDB(以前最大是252个)

Oracle12.2增加了原生Sharding支持,这与以前的partition及rac不同,sharding可以将数据放在完全不同的主机,属于share nothing的架构,可以说这个特性是专门为那边业务非常大的OLTP系统准备的,相当于内置实现了自动分库分表管理功能。

另外新增了数据生命周期管理功能,大家都清楚,数据库有冷热之分,往往近期的数据经常使用,几年前的数据是偶尔使用,通常好的做法是对经常使用的数据采用行式存储,对不经常使用的数据采用压缩存储或列式存储,这样总体成本更优,当然,要做这样的效果需要付出不小的设计与运维成本,还可能会影响业务体验,所以能做好的人不多。在Oracle12.2里,你可以指定数据的生命周期,让数据库自动帮你管理,就像下面这两条指令:

c51e5837427224e37813f0071f7b25983a5feac3

二、MySQL(最流行的开源数据库)

MySQL在2016年是最大赢家,市场占有率不断攀升,很大一部份原因是互联网行业快速发展,因为开源免费易用,MySQL成为互联网公司最受欢迎的数据库。MySQL最新稳定版本是5.7.17 GA。

f5dc678185e4a98014cb2c22bf0fff755f3595d1

MySQL5.7

​MySQL5.7号称性能是MySQL5.6的3倍,而MySQL5.6号称性能是MySQL5.5的2倍,你信吗?这个问题还是要辩证的理解,首先性能肯定是改进了,但为什么大部份人升级后也没有感觉?这就要从测试方法说起,大部份厂商发布新版本都会说性能提升了多少多少,因为这是最能吸引客户的数据。从官方的测试数据来看,首先是32个并发以上的简单查询,并且超过10万QPS才有区别,如果你的系统没有达到这个并发度那肯定没有体会的。另外是纯内存与CPU计算,如果你的系统瓶颈在磁盘或网络IO那也不会有明显的效率提升。当然,我认为MySQL5.6的ICP这种特性其实对于业务来说更有意义,说不定刚好你的慢SQL可以解决掉。

2016年MySQL5.7也发布了Group Replication特性,应用于要求强高可用的场景,这个特性让MySQL开始有基础与现代新的分布式数据库去竞争,目前只是刚推出,估计离能生产使用还有差距。

MySQL5.7对很多代码进行了优化,特别是高并发下锁的争用,所以在高并发简单SQL性能会有大的提升,另外很值得升级的就是带来了不少新功能,比如原生支持JSON了,原生支持full text search等等,如果你的业务要用上那就不要犹豫了,赶紧升级到5.7吧。

a31d328398e4234e9e2733fca4e2c41369cfb629

MySQL 8.0 DMR

​2016.9月MySQL8.0(原计划是MySQL5.8)刚发了一个DMR版本(开发者版),可以说是有非常大的改进,下面是发出来的几个大特性:

  1. 支持role
  2. 数据字典存储由myisam引擎变为innodb
  3. 支持 invisible indexes,这个对DBA索引调优比较有帮助
  4. 增加column_stats ,相当于Oracle的直方图
  5. Performance schema持续加强,增加了很多error信息采集与展示
  6. 支持SET参数持久化保存

2016年Facebook的RocksDB引擎也火了一把,它本身可以做为一个KV引擎直接使用,也可以和InnoDB或MyISAM一样,做为存储引擎直接用于MySQL,还可以用于MongoDB,非常灵活。RocksDB是基于Google LevelDB上发展进来的,采用LSM Tree的数据结构管理数据,Key Value操作高性能且拥有非常高的数据压缩比,Percona与MariaDB都在跟进,RocksDB的普及对于InnoDB有一定竞争与互补,但对于TokuDB来讲就非常难受,因为RocksDB基本覆盖了TokuDB的应用场景,并且有各大主流公司在支持。

三、SQLServer(Windows上最好的数据库)

5775f424a7de960a75eb0c47ebbe21387f76aae6

SQLServer2016

​SQL Server一直不被很多人看重,认为数据库就是Oracle与MySQL的天下,但是实际上SQLServer的用户非常多,SQLServer发展非常迅猛,微软也网罗了大量数据库的顶级人才。今年微软正式发布了SQL Server 2016及SP1。可以说有很多亮眼的功能,也能看到SQLServer有自己独特的数据库发展规划。列几个SQLServer2016的重磅特性:

  1. PolyBase——PolyBase支持查询分布式数据集。有了PolyBase,你可以使用Transact SQL语句查询Hadoop或者SQL Azure blob存储。你现在可以使用PolyBase写临时查询,实现SQL Server关系型数据与Hadoop或者SQL Azure blog存储中的半结构化数据之间的关联查询。此外,你还可以利用SQL Server的动态列存储索引针对半结构化数据来优化查询。如果组织跨多个分布式位置传递数据,PolyBase就成了利用SQL Server技术访问这些位置的半结构化数据的便捷解决方案了。
  2. 全程加密——支持在SQL Server中保持数据加密,只有调用SQL Server的应用才能访问加密数据。使用该功能,你可以避免数据库或者操作系统管理员接触客户应用程序敏感数据(包括静态数据和动态数据)。该功能现在支持敏感数据存储在云端管理数据库中,并且永远保持加密。即便是云供应商也看不到数据。
  3. 动态数据屏蔽——这个特性可以很好的保护一个表中的敏感信息(如会员表的注册时间不是太机密的信息,但是像手机号码这种信息并不希望普通账号可以查看,动态数据屏蔽可以有效的解决这个问题,它能让普通账号看不到完整的手机号信息,比如138-1234-5678手机号可能会显示为138-****-****)
  4. Stretch Database——Stretch Database功能提供了把内部部署数据库扩展到Azure SQL 数据库的途径。有了Stretch Database功能,访问频率最高的数据会存储在内部数据库,而访问较少的数据会离线存储在Azure SQL 数据库中,最重要的是这可以通过配置规则后由数据库自动完成,对应用没有影响,可以说是混合云的专业数据解决方案。
  5. 支持JSON
  6. 支持R语言做数据分析
f3dc9632a5fe03c504f1bd9ab378aed5c8cef67c

SQLServer for Linux

​除了发布SQL Server 2016外,今年另一个最重大的事情是微软宣称SQLServer要支持Linux了,并且发布了第一个预览版。这可以说是微软一次艰难的决定,Linux现在是越来越好,Windows是不可能干了Linux,更重要的是微软也是大力搞云计算服务的,SQLServer支持Linux也是顺势而为了。

四、PostgreSQL(功能最强大的开源数据库)

PostgreSQL可以说是一个历史非常悠久的开源数据库,从关系型数据库理论提出以来,它一直非常活跃,PostgreSQL的功能非常强大,很多功能可以与Oracle相当。PostgreSQL的代码可读性非常好,又是开源,并且功能强大,所以是学术界非常喜欢研究的数据库。当然,因为工业界应用得不多,也有时会被人理解为学术型数据库。不过PostgreSQL在国外的活跃度比中国高很多,也有许多非常成功的工业界案例。国内很多人也不太了解PostgreSQL,人才方面是非常大的短板,国内缺少非常有影响力的成功案例,也没有很强的商业领导者,所以导致在国内发展得没有MySQL迅速。

f93eee56fb28aea456588072eef3a78d508c227c

PostgreSQL

​PostgreSQL在2016年发布了9.6版本,主要有以下大的更新:

  1. Parallel execution of sequential scans, joins and aggregates——单条SQL支持并行访问可以说是非常有挑战的功能,这个功能曾经也是商业数据库与开源数据库的重大区别,因为Oracle、SQLServer、DB2都支持单SQL并行计算,但是开源数据库基本不支持,PostgreSQL9.6是第一个支持的开源数据库。
  2. Avoid scanning pages unnecessarily during vacuum freeze operations
  3. Synchronous replication now allows multiple standby servers for increased reliability
  4. Full-text search can now search for phrases (multiple adjacent words)
  5. postgres_fdw now supports remote joins, sorts, UPDATEs, and DELETEs——Fdw在PostgeSQL9.6中有了更大的增强,这个功能有点类似Oracle的DBLink,或者是SQLServer的链接服务器概念,也是一个非常实用的组件,可以非常方便的访问远程数据库,还可以访问远程非PostgreSQL数据库,这对于一些数据迁移与异构关联计算非常有价值。
  6. Substantial performance improvements, especially in the area of scalability on multi-CPU-socket servers

五、MongoDB(最好的文档型数据库)

MongoDB是文档型数据库,NoSQL领域的领导者之一,也可以说是当前最成功的NoSQL数据库。能在众多NoSQL中脱颖而出,说明MongoDB一定有不少过人之处 ,我也一直非常看好,因为MongoDB的出现很好的弥补了关系型数据库的很多问题,比如支持Schema Free,在关系型数据库没有支持JSON之前,就是一个典型的难题,曾经有很多开发同学向我咨询对于一个动态属性的表该如何设计表结构,比如商品的属性、游戏装备属性等等?说实话,当时关系型数据库除了预留字段、行转列模式、大字段文本几种方案外,没有什么好的解决方案。MongoDB可以说在这方面非常擅长,因为它的数据交互及存储都采用类似JSON格式,非常灵活,并且可以对JSON数据创建非常灵活的索引,如子属性、数组都能支持索引。新关系型数据库虽然也支持JSON格式,但是与MongoDB还是有较大的差距。

c53d497ea88c2c355e66b996cf51da1e8c2aa9d2

NodeJS+MongoDB

因为是JSON,MongoDB也天然支持js的语法交互,所以又吸引了很多NodeJS服务端同学,甚至有人宣传说NodeJS+MongoDB组合要代替PHP+MySQL的组合了,当然,这更多是给搞js的同学一种方案选择。

MongoDB在很早就有自己的查询语言,与SQL一样强大,不过语法是js格式,下图是MongoDB查询语言与SQL的一个简单对比:

18a33bc21c759deb056ae80fa5d7d732f62fc990

Mongo Query Language and SQL

是不是和SQL很像,这也是MongoDB过人之处,它第一天就知道客户需求并不只是要高性能,要俘获程序员的心,必须要提供强大高效的访问接口语言,由于是文档型数据库,SQL主要是为了面向关系型数据库设计的语言,但是SQL确实非常牛逼,所以提供一个面向文档型数据库类似SQL的语言非常有价值。

MongoDB 也是一个天生支持分布式的数据库,数据自动分片,还支持MapReduce,也内置了一个分布式文件系统GridFS,另外可以挂接多种存储引擎,这些都是非常诱人的功能。

a9f5c5f57e9d35f44832e20f4a6368384abb9add

MongoDB3.4

2016年MongoDB发布了3.4版本,也有一些大的更新,主要的新特性有:

  1. 支持View
  2. 新增对decimal支持,最多支持34位小数位。
  3. 新增支持collation,也就是字符串校验集,校验集会影响字符对比与排序,3.4以前字符串是按字节严格对比,通过设置collation后可以指定校验方式,比如忽略大小写等等,汉字按拼音排序(官方文档特意举了拼音排序这个例子,说明中国用户在MongoDB中份量不小)等等。
  4. 集群管理与日志复制方面也有了进一步增强

Mongo 公司也推出了自己的数据库云服务,MongoDB Atlas,支持AWS上部署,我认为这也是更好的一种云计算服务模式。

六、Redis(最好的缓存数据库)

54caf8369fcd1f601b1dd72fe7420cb645189d6c

Redis

说Redis是缓存服务,估计有些人会不开心,因为Redis也可以把数据库持久化,但是在大多数情况Redis的竞争力是提供缓存服务。说到缓存服务必然会想到Memcached,因为几年前Memcached是最流行的缓存服务,但随着Redis的发展,Redis在很多方面比Memcached更好用,比如,Redis支持更多种数据类型,包括hash、set、list等等。Redis也支持数据持久化,另外2015年发布的Redis 3.0开始支持集群服务。Redis还支持subscribe/publish命令,可以用于简单的消息发送与订阅,总体而言95%的情况,如果是缓存服务,我们都可以选择Redis。

Redis在2016年发布了3.2版本,最重要的是支持GEO地理信息存储支持。Redis原计划下个版本是3.4,后来计划重命令为Redis 4.0,今年已经推出了RC1,Redis4.0有许多大的变化,最重要的是模块化特性,官方希望Redis是一个底层基础设施,开发者可以在上面构建更多有意思的东西,比如对神经网络、机器学习数据计算扩展,还有如图数据、二级索引、时序数据、全文索引等等。http://antirez.com/news/110(备注:antirez是redis最核心开发成员,90%以上的代码是他贡献的)

七、ElasticSearch(最好的搜索服务)

fe95f43400fb55db8a42b7e5b572dca73fbecaa0

Elasticsearch

Elasticsearch本是一项搜索服务,但是因为它实在太强大太好用了,以至于有一些业务把它作为数据存储与搜索服务。搜索与数据库本来就非常密切,很早以前的数据搜索都会采用数据库内置的like模糊查询或全文检索实现,但随着互联网搜索业务的快速发展,对搜索选项也要求更丰富,另外早期的搜索并不一定需要数据库这样完全实时的需求,所以数据库对全文搜索的支持一直不太理想,这也产生了很多的专业搜索引擎产品,Lucence就是最流行的开源搜索引擎框架。近几年随着大数据快速发展,搜索引擎需要有更强的分布式支撑,另外由于业务的竞争,需要大量的日志数据采集与分析,实时性要求更高, Elasticsearch 在这方面脱颖而出, Elasticsearch 是基于lucence开发的分布式搜索服务,并不只是一个框架(Lucence需要二次开发),而是可以直接使用的服务。 Elasticsearch 对文档模型也有了进一步的增强,更有一些文档型数据库的感觉,甚至有人把它完全当分布式数据存储服务(主流大数据存储真的没有太好的准实时查询功能)。

ElasticSearch在2016年快速增长,从去年13名前进到第11名。ElasticSearch今年发布了5.0版本,这个版本号跳跃得比较大,主要是因为elastic公司考虑到与自己旗下的Kibana等产品版本号统一,解决用户搭建ELK或ElasticStack日志分析架构选择组件版本的困扰。

八、Neo4j(最好的图数据库)

图数据库一直是NoSQL领域非常重要的分支,Neo4j可以说是图数据库的绝对领导者,虽然这个名字很土(很容易联想到log4j、dom4j这些通用java组件)

e1aa8abfc0405a442a4ba176eb8daecb9956e411

neo4j

图数据库虽然现在流行度并不算太高,主要原因是目前大部份问题可以采用关系型数据库或大数据方案解决,图数据库更擅长描述基于关联关系的场景应用,可以用来解决一些特殊的场景,如人员关联关系、事务关联关系等等,比如社交关系计算、物流路径计算等等。但是由于图数据库整个理论不像关系型数据库那么扎实,大家也没有总结出太多的实践经验,再加上性能与扩展性上并不是很突出,所以影响力还不大。

从我个人认为图数据库是非常有前景的,因为当前关系型数据库对于傻瓜计算是比较擅长,但对于人工智能方面非常无力,而图数据库的结构更像人的大脑信息保存模式,不擅长搞大数据运算,但是可以很容易发现两个相隔十万八千里的对像关系。关系型数据库擅长把一类东西模式化存储,比如有汽车、衣服、家具、食物、照片、朋友等很多信息,RDBMS可以设计为按每种类别用一张表格存储,这样可以很方便回答类型下面的问题:

  1. 总共保存了多少件衣服
  2. 红色的汽车有哪些
但是要回答下面两个问题会相对困难:
  1. 找出所有是长方型白色的东西
  2. 找出附近有宝马汽车的朋友或(朋友的朋友)照片

如果要回答上面问题,RDBMS需要再增加维护各种属性与物品的关系。但是像上面这种关联性问题会有很多组合,所以通过RDBMS来维护并不轻松。图数据库的存储格式更适合解决这类问题,因为它更擅长关联查找计算。图数据库更像人脑计算,如果未来机器学习大量应用,或许是图数据库普及的时刻。

Neo4j提供了类似SQL的图查询语言Cypher,Cypher语言的描述能力非常强大,甚至已经成为图查询语言的通用标准。一个简单的图数据库Cypher查询语言如下:

11ef55bd5269fb4fba781dff9410c3d85080e62d

Cypher

下图是Neo4j官网列出的典型客户:

cc0b5b7f547cd5537972c5bd7ea6e8e55b21b4e9

Neo4j典型客户Neo4j典型客户

九、Cassandra(最好的列式数据库)

02e3a06a4de2ee400df571571c2d6a556bea7364

cassandra

​现在把Cassandra说为列式数据库完全是不太恰当的归类,最初的Cassandra确实是有列式数据库的概念,但是实际上现在已经完全看不到列式的东西,可以说完全是一个标准分布式数据库。Cassandra除了具备表、字段、二级索引这些概念外,还支持触发器、物化视图,你敢信吗,但他真的支持。Cassandra的接口语言是CQL,CQL查询数据用select,支持insert、update、delete,创建表也是用create table,创建索引也是用create index,语法与SQL基本一模一样,但是功能方面有一些限制,比如不支持多表关联,对where条件也有许多严格的限制等等。另外增加支持了list、set、map、tuple等高级数据类型支持,可以说是SQL的一种扩展。

Cassandra与HBase起步与实现原理很像,但是应用的场景却差别很大。Cassandra在国外非常流行,但是国内基本没有用户,而HBase在国内非常流行。这是为什么呢?我个人理解是:在Facebook推出Cassandra的时候,国内各大互联网公司也是研究得热火朝天,但是因为Cassandra产品并不太成熟,另外原厂Facebook不久后又放弃了这个产品,加上国内除了BAT以外的厂商并没有太多分布式数据库的压力,所以并没有快速流行。当时的 Cassandra也不能解决BAT的分布式数据库需求, 而同时像阿里巴巴等公司大量宣传用MySQL去IOE的经验,采用了Cobar与TDDL这样类似的中间件架构,很多公司都开始朝这个方向走,因为对系统相对改造成本更小,所以大家也不关心Cassandra的后来发展。而HBase是基于Hadoop体系产生的数据存储产品,这个领域MySQL也没有优势,国内大数据也发展地非常火热,加上BAT、小米大量宣传HBase成功案例,所以HBase快速流行起来。

十、SQLite(最流行的嵌入式数据库)

嵌入式数据库有很多种,在以前说不出哪种市场占有率最高,但是随着手机移动开发的流行,SQLite嵌入式数据库异军突起,占领了手机嵌入式数据库的领导地位。在google上搜索iOS数据库或Android数据库开发,立马全屏都是SQLite的介绍。SQLite是一个完整的关系型数据库,支持标准SQL,支持函数索引、外键、视图、触发器、ACID,扩展支持自定义函数、JSON、全文索引、GIS等高级特性,可以说功能非常全,但是程序包不到500KB大小,可以在几百KB的内存上运行,是当前手机或掌上嵌入式设备存储结构化数据的最好选择。

SQLite是开源免费软件,同时也有收费功能,主要是支持加密、压缩等高级特性,这些功能对于数据安全要求比较高的业务非常有意义。

SQLite一直在持续更新,但最近大的功能不多,目前最新版本是SQLite 3.15.2,也许是他太领先了,找不到对手,另外开源协议是Public Domain,可以说是基本是没有任何限制的开源协议,相比MySQL、MongoDB等开源数据库来说,没有任何使用风险,不清楚商业营收是否有保障。

OceanBase(最有潜力的分布式关系型数据库)

717b5b93798bfb616146a08ec8f1087e9ad01ae6

云数据库OceanBase

​OceanBase是一款阿里巴巴/蚂蚁金服自主研发的高性能、分布式的关系型数据库,支持完整的ACID特性。它高度兼容MySQL协议与语法,让用户能够以最小的迁移成本使用高性能、可扩展、持续可用的分布式数据库服务,同时对用户数据提供金融级可靠性的保障。

OceanBase主打的是分布式与高可用特性,目前已经支持了关系型数据库最主要的功能,高度兼容MySQL语法,你可以使用MySQL命令客户端或MySQL JDBC Driver直接访问OceanBase,这个特性对于应用改造成本非常低。

OceanBase有超过6年的研发历史,在国产数据库中,OceanBase在功能方面并不算最强大,但是发展非常快,2015年底正式发布了OceanBase 1.0。另外,存储过程这些更复杂的特性也在研发中。OceanBase已经是支付宝、网商银行最核心的数据库,承载了支付宝双十一所有交易服务。OceanBase天生就有阿里巴巴集团应用场景锤炼,特别是支付宝、网商银行这种支付与银行领域,并且数据库技术也是阿里非常看重的核心竞争力,所以起点非常高,并且OceanBase已经通过阿里云对外输出,希望未来能成为世界顶级数据库引擎。下图是2016年阿里巴巴集团CEO逍遥子在互联网大会介绍OceanBase:

f57a28334359e63cf0accbd259afdd62ba17117a

阿里巴巴集团CEO在互联网大会介绍OceanBase

​OceanBase目前并不对外提供下载,但是可以通过阿里云使用OceanBase,如果你是一家对高性能与高可用及海量存储要求非常高的业务,那阿里云OceanBase是不错的选择,直接使用云服务,也免去了运维管理成本。

全球云数据库服务大比拼

数据库服务一直是云计算厂商非常核心的竞争力,从目前公有云市场来看,AWS、Azure、阿里云这三家厂商是排在前面,并且各有特色,下表是几大厂商提供的数据库服务产品对比:

8bd562f1bb8258968b3eb0e93bcc470b94a29f00

3A(AWS、Azure、阿里云)数据库服务

AWS

AWS可以说是产品非常全,并且客户体量非常大,产品的成熟度也非常高。

7c20f6108dbc1efcdd9b3f3e1b632aca39830c1e

AWS Database Service

2016年主要是发布了SnowBall数据迁移系列产品,可以帮助用户快速迁移PB级的数据量到云上。下图是AWS最新发布的Snowmobile,可以用卡车来完成上百PB的数据迁移,比传输网络传输快50倍。

66615f57f77ec37fb6d6c81526112ca742e860dc

Snowmobile

Azure

Azure是微软出品, SQLServer是微软自家核心数据库引擎,同时SQLServer在数据管理与迁移工具方面非常强大,2016年又推出SQLServer Stretch Server的混合云解决方案,可以说在SQLServer方面支持力度最强。Azure除了SQLServer之外,同时也提供了表存储、Redis缓存、数据仓库,并通过第三方支持MySQL服务,给用户提供了丰富的选择。

1ba15600fe7df7eb1340431ecda4610ffd54fe67

Azure Database Service

阿里云

阿里云近两年快速发力,两年前只有MySQL与SQLServer两个引擎,发展到现在的十几种,如PostgreSQL、MongoDB、Redis、DRDS、ADS(分析型数据库服务)、Greenplum等等,丰富的数据库引擎也是阿里云的核心竞争力之一。在国内,阿里云的性价比也最有优势。

a39966a424c2f4cbf3d481ce373d0ad361ce4530

阿里云数据库服务

除了支持丰富的数据库引擎外,2016年阿里云也正式发布数据传输与数据管理两个数据库服务类的产品。

225dbcd8da6a6588fec0646be2bf49eb8c542c8c

数据传输

数据传输服务包括数据迁移、同步、订阅,你不仅可以非常方便地数据迁移上云,还能轻松搭建异地机房数据同步架构,通过数据同步或订阅也可以方便的将数据实时分发到搜索引擎或数据仓库。

9c7a5882495f6e2a76037007679e1faf6eaba2b1

数据管理

数据管理服务在阿里云用户活跃度非常高,是一款可以免费使用的服务,它能很高效的帮助你管理各种数据源中的数据,包括MySQL、SQLServer、MongoDB、Redis等等,你不再需要使用Navicat、phpMyAdmin等客户端数据库工具。数据也是在内网传输,更安全高效。数据管理服务还提供了各种数据图表分析、数据变更统计、性能诊断等十几项特色功能。更有意思的是,只要数据库可以连接上,就算你的数据库在本地,你不是阿里云的用户也可以免费使用数据管理服务。

云计算国际上还有两家航母级公司在使劲往里面投入

一家是Oracle

Oracle可以说在云计算方面起步较晚, 市场份额还比较低, 但是Oracle的产品线是全宇宙最全的,从IaaS、PaaS、DaaS、SaaS全都覆盖,自家做数据库、OS、CPU、服务器,还有最全的SaaS类软件。Oracle在数据库云服务主要销售Oracle、MySQL数据库及Hadoop大数据服务。AWS这种云计算服务对于传统基础IT公司冲击特别大,特别是IaaS及DaaS方面,现在Microsoft、Oracle、IBM都在痛苦的转型,各自都在结合自己的优势突围。云计算给惠普、DELL、EMC这种偏硬件的企业压力更大。

另一家是Google

Google是最先提出云计算的概念,但是发展得非常不顺利,因为Google提的云计算与当前的流行的概念已经完全不一样了。Google最早主要是提供GAE这个PaaS服务,没有搞起来。最近两年完全转型为IaaS+PaaS,和AWS非常像,新的平台叫GCP(Google Cloud Platform),但是公有云市场已经被AWS领先很多。Google在数据库方面带来了分布式技术的突破,研发了BigTable、Spanner这样领先的分布式数据库技术,但是BigTable与Spanner只是一项内部应用的技术,离市场需要的产品不一样,业界大部份公司还不需要这样复杂的技术。云计算服务不仅要有技术基础,更需要有很强的产品设计能力。另外云计算和互联网一样,是一个基础设施,不能因为用户上了云计算就必须要全部改变他原有的软件架构,就像不能因为用户要上网就必须把电脑全换了一样的道理。

Google公有云服务地址: https://cloud.google.com/products/,以下是Google主要提供云计算服务:

57ee14bf496780a2b29b6d2bd42c2bdb97480f0f

国内其他云厂商也提供了数据库服务,包括腾讯云、百度云、华为云,但是产品线及成熟度还有待提升,这里就不详细说了。

数据库2017年展望

数据库一直是IT界非常活跃的技术,也是当今计算机系统非常核心的构成。从网络/层次数据库到关系型数据库,到面向对像数据库、分布式数据库、时序数据库,然后是NoSQL(KV型、文档型、列式数据库、图数据库)与大数据以及NewSQL,可以说,数据库界从来没有消停过。全球顶级软件厂商都非常重视在数据库领域投入,包括微软(SQLServer)、Oracle(Oracle+MySQL)、IBM(DB2)、SAP(Sybase+HANA)、Google(Spanner)、Facebook(RocksDB)、阿里巴巴(OceanBase)、Amazon(Aurora)等等。相信数据库在未来竞争会更加激烈,这里对数据库在2017年做一个简单的展望:

  1. MySQL超越Oracle成为流行度第一的产品
  2. RDBMS、NoSQL、大数据继续互相学习,RDBMS地位仍然稳固
  3. 图数据库开始发力
  4. 机器学习应用于数据库领域
  5. 数据库云服务竞争激烈,混合云解决方案会是重要战场
  6. 国产分布式数据库OceanBase加入市场竞争

作者:叶正盛  来源:新浪微博
相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
存储 SQL Oracle
2019国产数据库大盘点
虽然国产数据库,相比前几年大火的O2O、共享经济等概念,并没有获得资本的大力追捧,但是我们欣喜地看到,还是有很多IT人在坚持此道。接下来就带大家一起来盘点一下国产数据库的发展现状。
5220 0
2019国产数据库大盘点
|
SQL NoSQL 关系型数据库
2016全球最强数据库大盘点
本文盘点2016年数据库市场各个数据库市场、技术特点等
9209 0
|
19天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
21天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
36 4
|
2月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
65 3
Mysql(4)—数据库索引
|
28天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
158 1
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
87 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
120 4
|
16天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
125 0