阿里妹导读:云计算大潮来袭,传统数据库市场正面临重新洗牌的情境,包括云数据库在内的一批新生力量崛起,动摇了传统数据库的垄断地位,而由云厂商主导的云原生数据库则将这种“改变”推向了高潮。
云时代的数据库将面临怎样的变革?云原生数据库有哪些独特优势?在DTCC大会上,阿里巴巴副总裁李飞飞博士就《下一代云原生数据库技术与趋势》进行了精彩分享。
李飞飞(花名:飞刀),阿里巴巴集团副总裁,高级研究员,达摩院首席数据库科学家,阿里云智能事业群数据库产品事业部负责人,ACM杰出科学家。
大势所趋:云数据库市场份额增速迅猛
如下图所示的是Gartner关于全球数据库市场份额的报告,该报告指出目前全球数据库市场份额大约为亿美金,其中,中国数据库市场份额占比为3.7%,大约为14亿美金。
具体到数据库市场分布,传统五大数据库厂商Oracle、Microsoft、IBM、SAP、Teradata占比达到了80%,云数据库的份额占比接近10%,并且云数据库市场份额占比每年也在快速增长,因此,Oracle、MongoDB等也在大力布局其在云数据库市场的竞争态势。
根据DB-Engines数据库市场分析显示,数据库系统正朝着多样化、多元化的方向发展,从传统的TP关系型数据库发展到今天的多源异构的数据库形态。目前,处于主流位置的还是大家耳熟能详的数据库系统,比如商业数据库Oracle、SQLServer以及开源的MySQL、PostgreSQL等。而一些比较新的数据库系统,比如MongoDB、Redis则开辟了一个新的赛道。数据库License的传统销售方式在逐渐走下坡路,而开源以及云上数据库License的流行程度却在不断提升。
数据库:云上应用关键的一环
正如AWS创始人JeffBezos所说:“Therealbattlewillbeindatabases”。因为云最早是从IaaS做起来的,从虚拟机、存储、网络,到现在如火如荼的语音识别、计算机视觉以及机器人等智能化应用,都是基于IaaS的,而数据库就是连接IaaS与智能化应用SaaS最为关键的一环。从数据产生、存储到消费的各个环节,数据库都至关重要。
数据库主要包括四大板块,即OLTP、OLAP、NoSQL以及数据库服务和管理类工具,也是云数据库厂商发力的四个方向。对于OLTP而言,技术发展已经历经了40年,而如今大家还在做的一件事情就是“加10元和减10元”,也就是所谓的事务处理。当数据量变得越来越大和读写冲突的原因,对数据进行在线实时分析的需求衍生出了OLAP。由于需要Scaleout,而数据强一致性不能够得到保证,就有了NoSQL。而最近又出现了一个新名词——NewSQL,这是因为NoSQL也有所不足,故将传统OLTP的ACID保证与NoSQL的Scaleout能力进行了整合,变成了NewSQL。
数据库系统架构演进:Alldependsonwhatisshared
纵观数据库40年来的发展历史,从最早的关系型数据库时期,衍生出了SQL、OLTP等技术;到数据量急剧增长,需要避免读写冲突,通过ETL、数据仓库以及DataCube等技术实现了OLAP;再到今天,面对异构多源的数据结构,从图到时序、时空到向量等,也就诞生了NoSQL、NewSQL等数据库,同时也出现了一些新的技术,比如Multi-Model和HTAP等。
数据库系统最为主流的架构是SharedMemory:共享处理器内核,共享内存并且具有共享的本地磁盘,这样的单机架构属于非常主流的架构,传统的数据库厂商基本采用的也是这样的架构。
而随着互联网企业的大规模发展,如Google、Amazon以及阿里巴巴,大家发现原来的单机架构有很多限制,其可扩展性以及吞吐量无法满足业务发展需求,于是就衍生出了SharedDisk/Storage架构,即共享存储架构。也就是说数据库底层可能是分布式存储,通过利用RDMA这样的快速网络让上层的数据库内核看起来像是在使用本地的磁盘,但实际上是分布式存储。上面可以有多个独立计算节点,一般是一写多读,但是也可以做多写多读,这就是共享存储架构,其中比较典型的代表就是阿里云的POLARDB数据库。
另外一种架构是SharedNothing。共享存储虽然有诸多优点,解决了很多问题,但是RDMA网络也存在很多的限制,比如其跨越Switch甚至是跨AZ和Region的时候性能都会有所损失。分布式的共享存储达到一定的节点数量之后,性能会出现一定的损耗,所以不能保证访问远程数据和访问本地数据的性能完全相同,所以共享存储的架构当扩展到十几个节点之后就达到了scaleout扩展的上限了。此时,如果应用需要继续扩展怎么办呢?那就需要实现分布式架构了,比较典型的就是GoogleSpanner,其利用原子钟技术能够实现跨数据中心的数据一致性和事务一致性。而在阿里云,基于POLARDB实现的分布式版本POLARDB-X采用的也是SharedNothing架构。
这里需要注意的一点就是:SharedNothing和SharedStorage可以结合。可以在上层做SharedNothing,而对于下层的Shard分片采用SharedStorage架构。这样混合架构的好处在于能够减轻分出太多Shard的痛点问题,减少分布式事务distributed