云原生数据库的前世今生你了解多少？
谢邀。之前已经写过不少云计算相关的回答，对Iaas和Paas都做了不少分析。其实目前国内外的技术方向已经确定，头部几家厂商包括亚马逊云科技、阿里云、腾讯云在内，也都持续在基础设施上发力。 不过云原生这个概念倒是最近1年才频繁听到，和数据库一结合，瞬间变得更高大上了。想必也有人和我一样好奇——所谓云原生数据库，是不是新瓶装旧酒呢？ 正好借这个问题，我们可以试着从它的过去、现在和未来中找到一些答案。  还是以亚马逊所提出的云服务为基础： 2006年，亚马逊把基于分布式操作系统聚集起来的强⼤计算能⼒，通过互联⽹分发给普通⽤户——⼈们给这种计算资源的在线分配服务起了个名字叫云计算，亚马逊云科技也应运而生。 我们知道，算力依赖于数据，算力革命本质上是数据量暴增时代下的必然产物。如果把数据看作新时代的石油，算力就相当于开采和炼油设备。没有数据，算力就是一堆0和1构成的冗杂编码，无法有效发挥其价值。而云计算，或者说云原生中最重要的“开采设备”，就是数据库。 我们之前聊过亚马逊云科技的S3存储服务，那么云原生数据库又是指什么呢？ 首先，从SQL到NoSQL，随着移动互联网的发展和大数据技术的广泛应用，涌现出越来越多的新型数据库，然而最初的关系型数据库依然占据主导地位。主要原因之一是关系型数据库采用了 SQL 标准——一种高级的非过程化编程接口语言，它将计算机科学和易于人类理解认知的数据管理方式完美的衔接在一起，目前还难以超越。 而不论是关系型还是其他类型的数据库，都只能满足过去的自建服务器时代下，类型固定、算力需求小、数据量不大的应用——最重要的一点是，成本太高。 所以，云原生数据库应运而生。 首先 ，云计算的出现和发展，让越来越多的企业开始将包括数据库在内的企业应用部署在云上。通过云服务形式提供数据库功能的云数据库应运而生。而云原生数据库，就是基于容器化、微服务、Serverless 等理念设计的具备弹性伸缩与全球部署能力的、能随时随地访问的计算节点，除了为调用方提供基础的存储、计算服务外，还可以灵活及时调动资源进行扩缩容，助力企业降本增效，成为行业发展新趋势。因此，数据库在云时代不可避免的迎来变革：一方面，此时的数据库向内存和分布式方向演进和发展；另一方面，在云托管环境下，关系型数据库逐渐暴露出一些问题。 而为了适应变化，和云计算一样，在数据库领域，也是亚马逊云科技首先提出并大规模实现了这种叫做“云原生数据库”的服务。我们就以亚马逊云科技的经典解决方案为例，来看看云原生数据库服务的整体设计思路和顶端架构是如何演进的。 演进的核心其实是需求推动——传统商业数据库的束缚导致人们渴望使用云原生，因为基于云原生，可以很方便的实现数据库的专库专用，选择更多，成本更低。而云原生数据库借助公有云的优势，可以实现很多的传统数据库无法实现的特性。比如serverless、极致弹性伸缩，全球架构，与其他云原生服务联动（机器学习赋能）等等。这里我们先以serverless+极致弹性伸缩的特性为例，来看看目前业界最领先的云原生数据库是怎么演进和应用的，以及它们能覆盖哪些场景。 比如，2018 年面世的Amazon Aurora Serverless v1。虽然是Amazon Aurora 的一种按需自动扩展配置版本，但它会根据应用程序的需求自动启动、关闭以及扩展或缩减容量，让开发者无需管理任何数据库实例，即可在云服务器中运行数据库。这种弹性伸缩+全球架构+低运维的巨大优势，让整个云原生数据库的概念落地又向前不少。而之后推出的Babelfish for Amazon Aurora PostgreSQL也一样，甚至更进一步——它使 Aurora 能兼容基于 Microsoft SQL Server 编写的应用程序，可以平滑迁移。类似的还有Amazon DevOps Guru，它基于机器学习来帮助开发和运维工程师快速检测、诊断和修正 Amazon RDS中与数据库相关的各种问题。 同样演进而来的还有Amazon DynamoDB 。与原始 Amazon Dynamo不同，它通过几个原始 Amazon Dynamo 组件搭建出一套易于使用的云服务。换句话说，用户不再需要配置集群，只需要通过创建一个表（Table）存储数据就可以实现无缝缩放，甚至无需安装单个库来操作数据库（也是Serverless的理念）。同时Amazon DynamoDB非常有弹性，可以无缝扩展到每秒 100,000 次写入——如今司空见惯的横向扩展与弹性，对当时的数据库来说还是天方夜谭，但是DynamoDB在彼时所构建的云原生架构，使极致弹性和横向扩展用例成为可能。 去年的 Prime Day 期间，在全球数万亿次 的API 调用下，Amazon DynamoDB 以个位数毫秒的性能保持了高可用性，达到每秒 8920 万个请求的峰值——这是远超之前的一次突破。Amazon Dynamo到Amazon DynamoDB 的这种演变非常重要，因为在此之前，没有一个数据库是以这样前所未有的方式拥抱云，以及它的弹性和可扩展性。这，就是云原生数据库的最大优势——具备无服务器特性，可以支撑无法预测的工作负载，并在极限场景下保持平稳性能。  最后提一个场景——直播。这是一个对数据和推流非常依赖的技术领域，视频、弹幕的存储与计算，都依赖大量的NoSQL。关注直播行业的人可能注意到，虎牙在2019年曾有过一次大的技术架构调整——他们全面接入了亚马逊云科技的云原生数据库，用DynamoDB 存储用户的动态信息，包括支付、状态、好友关注等，用Aurora存贮相对静态的信息，比如用户的基础信息。 相较于原先的Oracle，Amazon Aurora能自动扩容，且因为计算和存储分离，当数据量较大时，能单独升级计算实例，确保性能。同时，异常情况下，通常只需 10 秒左右就能自动实现故障转移，对终端用户没有任何影响。而利用其全球数据库功能，虎牙直播在亚马逊云科技亚太区域部署数据库，在其他区域建立副本，提高当地用户的使用体验。 可以看出，云原生数据库可以为各种涉及数据与存储的创新业务场景赋能，不仅提升了数据库性能，而且解决了可扩展性问题，让传统互联网公司可以无缝迁移到云上，这让它成为云时代的一个代表。  在Gartner 发布的2021年DBMS 市场收入数据中，云的用量在以惊人速度逐年增加。一方面，DBMS 市场持续加速增长，规模接近 800 亿美元；另一方面，市场格局变动，发力越早的云平台供应商就越处于领先地位。其中，亚马逊云科技在 DBMS的市场收入增长 42.3%，几乎是市场增速的两倍，这也侧面印证了“云计算+数据库”的强大力量。 在2022年的今天，难以忽视的一点是，云技术正成为我们日常生活中越来越重要的组成部分——手机应用、汽车驾驶、工业制造，甚至于智能场景下的衣食住行，都离不开云。而距离亚马逊推出Amazon Web Services并开启算力革命，已经过去了十六年，云原生，其实也是受到整个产业上下游的需求催生而来的，客观上极大缩减了企业和平台的服务器搭建与运营成本。 如果你要问云原生对整个计算与存储架构的改变是否会持续下去，前景又究竟如何？我的答案是——未来可期。 PS.下个月亚马逊云科技的中国线上峰会要开幕了，对云原生数据库感兴趣的朋友可以点击链接，后续还会有更多关于技术的分享~ 