• 李飞飞:云原生数据库是大势所趋


    简介: 本文为钛媒体联合创始人刘湘明与阿里云智能数据库事业部负责人李飞飞对话节选。

    image.png

    作者 | 张帅
    来源 | 阿里开发者公众号

    云原生数据库不是弯道超车,是换道超车。

    数据库、芯片、操作系统并列为全球信息技术三大件,也是企业技术系统必不可少的核心,互联网、金融、政务、电信、制造等主要行业都依赖于数据库技术和产品。在云数据库诞生之前,以Oracle为代表的传统数据库巨头统治着这一领域。

    技术领域的创新可分为两种,渐进性创新和破坏性创新。在一个格局稳定的行业中,具备优势地位的老玩家并不担心其他厂商推出渐进性创新技术,凭借行业积累和资源沉淀,他们往往能轻易赶上并保持领先,只要自身不发生战略误判,领先优势甚至可以持续经年。

    与之相对应的是,老巨头可能产生明显的路径依赖问题,毕竟谁会愿意“革自己的命”呢?

    破坏性创新往往不会发生在原有巨头身上,而是由行业大势挟裹新的入局者,谱写新的故事篇章。每一次技术革命都蔚为壮观,内燃机取代蒸汽机,汽车取代马车,现在轮到云数据库取代传统数据库。

    数据库始于1960年代,在它的发展史上,你可以听到一些响亮的名字:美国通用电气公司推出世界上第一个网状数据库管理系统;IBM推出了层次数据库管理系统IMS(Information Management System),并首次提出关系数据模型;UCB(加州大学伯克利分校)、Honeywell(霍尼韦尔)、Ingres等一众厂商构成了数据库行业的早期时间线。

    此后数据库迎来了黄金年代,Oracle、MySQL、Microsoft SQL Server、PostgreSQL、IBM DB2等一批有代表意义的数据库崛起,并且交错发展近四十年,直到今天仍然在企业生产系统扮演着重要的核心角色。

    本质上,数据库的发展与底层技术的突破息息相关,并不是孤立成型,在企业场景的淬炼与IT基础设施的适配下,演化出适应当时需求的形态——IBM的小型机、Oracle数据库、EMC存储设备,都是时代的产物。

    云计算正在改变一切。传统企业赖以生存的“稳态IT”建设模式很难满足更大数据量、更强计算、更敏捷业务的需求,云数据库替代传统数据库,云计算资源取代私有计算和存储,提供了全新的业务价值,“敏态IT”变成了核心竞争力,没人不爱云计算。

    历史总是螺旋上升的,从传统数据库到云原生数据库,所要付出的努力,不逊于数据库诞生以来的任何一次改变。云计算最大的技术变革是资源池化与资源解耦,以及由此而带来的弹性、高可用、容器化部署、智能化运维等核心能力。云计算时代,数据库值得重新做一遍。

    李飞飞认为,在云计算大潮下,云数据库这个新的赛道上,中国的云原生数据库在很多技术创新领域已经处于领先地位。以阿里云PolarDB为例,从2017年启动自研,采用存储计算分离、软硬一体化设计,在弹性场景下成本仅为传统商业数据库的十分之一,如今已经实现了计算、内存与存储资源的“三层解耦”、多主多写、HTAP、Serverless等功能,以上皆为全球首创或业内领先的技术。

    这是一次中国底层技术换道超车的机会。

    以下为钛媒体联合创始人刘湘明与阿里云智能数据库事业部负责人李飞飞对话节选,以李飞飞第一人称口吻叙述,经编辑。

    数据库的演进:上下牵引,反复迭代

    我认为,所谓的弯道超车几乎不可能,弯道超车只会发生在一种场景,就是两个人的水平差不多的情况下。Oracle干了40年,在云数据库起来之前,常年占据全球数据库市场一半以上的市场份额。它有这么多资本,有这么多客户,吸纳和培养高密度的人才,不断地积累迭代,几乎不可能被弯道超车。

    在这样的情况下,为什么会发生微软整体数据库份额超过Oracle这种事情?不是因为SQL Server,而是因为出现了一个全新的赛道——云数据库。类似地,AWS和阿里云在全球数据库市场份额的排名上升,也是因为云数据库领域的发展。

    船大调头难,但我们这种从零开始的厂商,在云数据库的新赛道上能构建全新的架构,快速地响应市场需求。云计算彻底改变了传统软件系统构建的基本逻辑,它对冯·诺依曼架构里的计算核心模块做了两件事。第一是资源池化,“池化”的比喻很多人都听过,200年前家家户户都要自己打一个水井,今天大家不会再挖水井,而是用自来水。对计算资源从独享式到共享式的利用,就像人类用水的过程,会发生一模一样的变化。

    第二是解耦,以前计算和存储是紧耦合在一起的,现在是计算、存储、网络三层结构。解耦意味着有越来越多的人能参与到云计算的设计上来,由于最基本的服务器存储资源的获取难度大幅降低,用户可以在此基础上设计出更好的操作系统和软件,SaaS玩家会越来越多。云计算的本质就是池化加解耦,之后的挑战就在于,谁能把高可用、自动化调度、智能化运维等问题解决好,谁就会成为云计算的赢家。

    底下的系统结构变了,那上一层的数据库系统一定要变。我越来越深刻意识到,数据库的演进就是上下牵引、反复迭代的过程。

    首先,是上层业务变化的牵引。最早没有数据库系统的时候,我们用文件系统加存储系统来管理业务数据。后来银行业有一个非常具体的需求就是“转账”,所以你看数据库的OLTP(Online Transaction Processing)为什么会有Transaction这个词,就是因为这是银行的业务需求。后来很多行业都发现这个抽象带来了技术好、有价值的产品,才叫关系型数据库的联机交易。所以数据库的诞生就是从银行业的上层业务牵引而来,最早就是为了解决交易过程中的原子性、高可用性、隔离性等。

    如果没有数据库,还是用文件系统的话,上面这种需求也不是不可以实现,那就要求每个程序员都具有很高水平,所有的问题都要到业务代码里去解决,这要经过数年的训练才能搞定。大多数场景下是不可能满足这些要求的,而且随着业务逻辑的不断迭代和演进,这种方式发展下去一定会遇到很大的瓶颈,这是第一个逻辑。

    第二,是下层硬件的牵引。最早计算机的形态是大型机,用于军事用途。随着硅谷半导体行业的兴起,计算密度被做得越来越大,随着计算密度的不断提升,对数据库的设计也产生了很大的冲击,例如HDD(硬盘)变成SSD(固态硬盘),IO吞吐性能一下就上来了,再如原来是单节点架构,现在是MPP(大规模并行处理)架构,这是硬件对数据库创新的牵引力。

    上面是应用,下面是硬件,那云计算干什么?云计算可以提高计算的使用效率,可以把单位计算单元以及单位存储单元的使用效率提升,这是云计算的本质。因为只有一种极端情况,才不需要云计算,就是一个人用一个单位计算24x7x365运行、百分之百负载打满,这种情况基本不存在。在这个过程中产生的生产效率提升、生产资料高度池化的价值,一半让利给客户,另一半留给自己,这就是云计算毛利的商业逻辑。

    回到数据库本身,数据库发展到今天产生了新的机遇,不是因为我们多么与众不同,是因为在这个逻辑下,传统数据库设计模式不是为云计算这个新体系架构设计的。以阿里云为代表的云厂商,在一个新的赛道,在资源池化、架构解耦的前提下,没有历史包袱,能够尽可能地提升资源使用效率。

    未来数据库的发展一定还是遵循上面这个大的逻辑趋势:上层业务需求牵引和下层硬件变革的驱动。所以今天我们做数据库的人要维持两个敏感度,一个是以技术为本,数据处理能力、查询优化、存储压缩,通过技术创新与软硬件结合来提升技术实力。还有一个是很多人很少提到,但是我个人认为越来越重要的,就是面向行业的能力构建。回到数据库最初的形态,Transaction本身就是一个面向行业的能力,当年只有银行有需求,只不过后来其他各行各业发现,银行的抽象很有用,所以它变成了数据库的一个通用能力。

    我认为将来数据库的发展也是这样,某一个行业有一个通用的痛点需求,针对这个行业,谁能先把这个能力做到自己的数据库里面,谁就能够先拿下这个行业。如果今天你有个新能力是别人没有的,客户没有理由不选择你。

    阿里巴巴自研数据库:往前看都是风险,往后看都是机会

    万变不离其宗。阿里巴巴数据库的发展,和数据库领域的大逻辑是一致的,2005年至2009年,电商高速发展时期,阿里巴巴集团曾拥有亚洲最大的Oracle集群;2009年至2010年,淘宝业务的数据量,还有互联网业务所需的弹性,Oracle数据库集群已经不能满足,所以阿里巴巴才有动力去发展数据库。

    我们最早用MySQL分表去解决了Oracle的成本问题,同时我们又在MySQL内核里面做了Group Commit(组提交)能力,淘宝的很多行业需求场景,都转化成数据库能力。2010年至2013年,阿里巴巴成功用自主开源的AliSQL替换了传统商业数据库。2014年,阿里巴巴开始布局自研数据库,因为业务推着我们往前走,比如双11电商场景,有异地多活、热点打卡、秒杀的需求,让我们看到了自研数据库的价值,于是我们坚定投入到数据库这个基础软件的自主研发中去。

    就是我说的第一条动力:淘宝的业务场景催生了一些有鲜明行业属性的需求,比如阿里巴巴决定做“双11”,这是人为制造的一个峰值,数据库能不能搞定这个交易量,我们需要在数据库内核层面做行业属性的竞争力。

    到了阿里云时代,我们开始服务外部客户,外部客户给我们带来了不同的视角,开始做基础设施池化以及资源解耦,数据中心的网络基础设施不断提升,例如RDMA网路的普及。2016年到今天,通过多年积累的数据库技术,我们提供了丰富的数据库服务,比如云数据库的托管服务RDS、云原生数据库PolarDB和分布式版本PolarDB-X,以及云原生数据仓库AnalyticDB、云原生多模数据库Lindorm,这些核心产品形成了我们数据库产品矩阵。

    任何事情往前看都是风险、往后看都是机会。阿里巴巴自研数据库的过程,也是一样,这里面每一个决策,在当时看都是非常高风险的,站在今天,我们才觉得这个决策是理所应当的。

    为什么阿里巴巴最早去做自研数据库?核心还是有电商业务推着你往前走,没有退路;没有电商业务的话,这个事情并不一定会发生。

    今天阿里云数据库在国内至少领先其他厂商一年半到两年的身位,因为阿里云做得早,“春江水暖鸭先知”,我们是最早服务客户、看到趋势的厂商。今天,阿里云更关注两类行业动态:一类是头部云计算厂商,比如微软云、AWS等;第二类是头部的独立数据库公司,比如说Snowflake、Databricks等。尤其是开源领域,由于对市场反应的敏捷度高,发展起来非常快,抓住一个机会就像火山爆发一样。

    中国为什么没有或很少诞生数据库领域的独角兽?我个人认为短期内也很难。中国各行各业的IT标准化程度低,导致很难推广标准的数据库服务,很多行业对软件服务化的认知,还比较初期,甚至觉得完全没有必要为此付费。另外,还有一个问题是传统商业软件盗版横行。种种因素叠加在一起,导致中国的PaaS甚至SaaS层独角兽很少。

    时势造英雄:先有时势,才有英雄

    如果端到端地独立做一个数据库系统,我们和其他数据库厂商比没有太多优势,人才密度可能阿里云有一些优势,但很有可能最终会被资本优势拉平。那其实只有一个逻辑,这个逻辑闭环就是阿里云自己,一定要充分利用阿里云的优势去构建阿里云的数据库,将阿里云IaaS这一层的优势发挥到极致,这样我们才能够构建出来不一样的数据库。

    过去几十年,IT基础设施的规模正在发生巨变,从早期的大型机、小型机,再到X86服务器,再到云+端的演进,底层的设备数量出现了从几十台到几百万台指数级的增长。

    这种基础设施的变化,为上层数据库的演进提供了新的动力。就像物种会随着环境的变化而演进一样,当计算、存储、网络这些基础计算设施不断演进的时候,基础设施之上的数据库系统,也需相应地持续演进。

    不同的基础设施对应了数据库发展的不同历史阶段。数据库经历了从早期的关系型数据库,到后来的数据仓库和关系型数据库配合,OLTP和OLAP两个领域的细分,到后面开源数据库、NoSQL数据库,再到今天云原生数据库的一个发展历程。

    权威市场研究机构Gartner在相关报告中阐述了几个非常重要的趋势:

    第一,数据规模爆炸性增长——我们处在一个大数据时代,毋庸置疑。

    第二,数据的生产和处理的实时化和一体化需求越来越强——这也是为什么阿里云今天提出云原生数据库2.0,提供一站式数据管理与服务。

    第三,生产和数据处理的智能化——现在用户对数据的处理不再停留在传统的事务处理、交易以及简单或聚合类的分析查询,而是希望能从数据中得到更多洞察,利用数据驱动智能的业务决策。

    根据Gartner预测,2022年,全世界75%的数据库会以云的方式运行。未来,数据库领域的核心发展方向是云原生+分布式,以及由此带来的几个核心技术布局:安全稳定、自动化与智能化、数据库大数据一体化、数据仓库与数据湖、多模数据库以及软硬件结合。

    我在阿里云做了四年,学到了很多东西,有很多的挑战,也有很多思考。按照产业逻辑发展,时势造英雄,一定是先有时势,才有英雄,英雄只会决定这件事发生的早晚。很幸运我们今天恰巧碰上了时势,唯愿不负时势。

    附:数据库演进历史

    数据库是企业技术系统的核心。传统商业数据库时代垄断在少数巨头手中,云计算这种底层计算系统化,为数据库技术带来变革;互联网与传统产业融合,数据库支撑的业务场景发生了巨大的变化,也为数据库带来了技术挑战。

    image.png

    image.png

    image.png

    image.png

    image.png

    推荐阅读

    1. 从业务开发中学习和理解架构设计

    2. 代码注释的艺术,优秀代码真的不需要注释吗?

    3. 是什么让一段20行代码的性能提升了10倍


    云原生架构白皮书2022年新版

    未来十年,云计算将无处不在,像水电煤一样成为数字经济时代的基础设施,云原生让云计算变得标准、开放、简单高效、触手可及。本书由阿里云 20+ 位云原生技术专家共同编撰,也是作为业界首本全方位构建云原生架构规划与实践全景图的白皮书。本书在详细阐述云原生架构定义的同时,完整展示云原生架构应用所需的演进路径与设计规则,旨在帮助企业更好地理解与应用云原生架构,助力企业数字化转型升级。

    点击这里,查看详情。

    原文链接:https://click.aliyun.com/m/1000359987/
    本文为阿里云原创内容,未经允许不得转载。
  • 相关阅读:
    代数基本定义
    离散数学CONDITIONAL STATEMENTS
    欧几里德算法及其实现
    欧几里得 算法复杂度
    养成习惯
    解决在myeclipse中启动服务器就进入调试模式的方法
    oracle中对索引的操作
    schema在oracle里是什么意思(转:http://shanbei.info/schemainoraclewhatismeantin.html)
    java 加载properties 文件
    java.io.IOException: mark() not supported
  • 原文地址:https://www.cnblogs.com/yunqishequ/p/16735491.html
Copyright © 2020-2023  润新知