作为根底软件皇冠上的明珠,数据库技术始终以来都是开发者关注的焦点。这关注度是如此之高,简直天然买通了学界和产业界的隔膜,以至于对于数据库技术的每一篇重要论文面世,都可能导致一批价值数十亿美金的公司呈现。
而在最近几年,纵观整个数据库产业,云数据库逐步成为焦点中的焦点。据 Gartner, Inc 称,到 2022 年,所有数据库中有 75% 将部署或迁徙到云平台,只有 5% 曾思考返回到本地。而 IDC 认为,到 2025 年,寰球超过 50% 的数据库将部署在私有云上;在中国市场,这个数据更为夸大,达到了 70% 以上。
那么问题来了,如果云数据库,或者叫云原生数据库,是确凿无疑的下一个风口。那么其当下次要的技术和倒退方向是什么?咱们该如何对待云原生数据库的发展趋势?亚马逊云科技在 2020 年公布的 Babelfish 或者可能带给咱们一些启发。
Babelfish,一个被人低估的重磅公布
Babelfish 在 2020 年的 re:Invent 上公布,由亚马逊云科技 CEO Andy Jassy 发表。
简略来说,Babelfish 是云数据库 Amazon Aurora PostgreSQL 的一个插件,它让 Aurora 可能兼容 Microsoft SQL Server 编写的应用程序。
Babelfish 刚刚公布,Youtube 上就有许多工程师制作视频表白了不了解。因为自打云数据库呈现,相干迁徙服务就在产业内随处可见,简直每一家私有云企业,都能提供相干迁徙服务,只不过大部分是针对 Oracle 的。有一家叫做 Enterprise DB 的美国,专门提供从 Oracle 到 PostgreSQL 的迁徙服务。相干代理层、SQL 语言转换工具更是层出不穷。
事实上,亚马逊云科技本人就有相干的迁徙服务,比方 Amazon Schema Convertion Tool 做架构迁徙,Amazon Database Migration Service 做存储迁徙。
那么,Babelfish 存在的意义是什么呢?多加一层代理减少后端解决老本吗?
实际上,只迁徙架构和存储是不残缺的,构建在数据库之上的利用还没有实现迁徙。以 Babelfish 服务的场景来说,基于 Microsoft SQL Server 构建的利用应用 T-SQL 与数据库交互,这与 PostgreSQL 齐全是两码事。如果你想将利用也同步迁徙,除非把这部分重写一遍。
这也让数据库迁徙成为了业内十分少见的动作,不是大家不想(毕竟谁也没法保障最后的架构选型永远正确),但老本切实是太高。
这种迁徙老本,咱们能够通过一套比拟通用的迁徙计划来感触下:
比起这种惨重的迁徙,如果数据库天生兼容,是不是不便太多了?这也是 Babelfish 存在最次要的意义。
而许多人,会低估 Babelfish,可能也是因为只看见了其商业层面的意义,而没有留神到其技术层面的难度。
Oracle 和 PostgreSQL,许多个性雷同,转换尚且艰难;切换到 T-SQL 和 PostgreSQL 就更加简单了。数据库的同步转换要留神许多异样简单的细节问题,包含查询语言的转换,存储过程的转换,动态游标的转换,触发器的转换,等等。
亚马逊云科技 的 Sébastien Stormacq 曾在公布的博客中指出,在 T-SQL 中,MONEY 类型具备四位小数精度,PostgreSQL 则只有两位小数精度,这种轻微的差别可能会导致四舍五入谬误,并对上游流程(例如财务报告)产生重大影响。
他说:“在这种状况下,Babelfish 会确保保留了 SQL Server 数据类型的语义和 T-SQL 性能:咱们创立了一个 MONEY 数据类型,使其行为与 SQL Server 应用程序预期的一样。”
Babelfish 的计划是用 hooks(钩子)办法在 PostgreSQL 内置引擎中实现,将本人裸露为不同的数据库(否则就只能批改 PostgreSQL 许多外围区域的代码),其架构图如下:
精妙之处在于,通过数据库内核局部执行器层面的扩大开发,Babelfish 实现了 T-SQL 与 pgSQL 之间的相互调用。也就是说,新写 PostgreSQL 代码能够调用之前利用写的 SQL Server 代码。对于写过存储过程的敌人们来说,这个性能曾经和 Babelfish 的名字一样,带上“科幻”色调了。即使曾经应用了最硬核的实现形式, Babelfish 也没有齐全实现兼容,ADD SIGNATURE 等一些性能、语法还没有实现。亚马逊官网工程师说:“SQL Server 曾经倒退了 30 多年,咱们不心愿立刻反对所有性能。相同,咱们专一于最常见的 T-SQL 命令并返回正确的响应或谬误音讯。”
这也恰好阐明了相似迁徙加速器的开发难度,也证实了为什么开源路线才是最适宜 Babelfish 倒退的,因为开源能够让足够多的开发者参加到产品迭代中来。
同理,一个如此高难度的开发我的项目,也不太可能是举足轻重的。相同,它可能是亚马逊云科技 2020 年最重要的公布之一。
数据库碎片化时代,真的来了?
亚马逊在云计算畛域的公布,曾多次疏导了整个产业的倒退方向。比方,2012 年公布的 Amazon Redshift 疏导了云原生数仓的倒退方向,2014 年公布的 Amazon Lambda 疏导了 Serverless 的倒退方向(Gartner 到 2019 年才确认 Serverless 为将来趋势),Amazon Aurora 自身也是云原生数据库的先驱产品。
如果说,Babelfish 也代表了一种方向,那么或者是,数据库碎片化的时代,真的来了。
数据库这个产品自身因为开发难度太高,长期以来都被少数几家公司把控着,其中的佼佼者 Oracle 更是以极快的速度晋升着商业数据库的开发门槛。
但数据库“单极”化发展后导致的价格高、绑定危险低等问题,也让泛滥企业逐步难以忍受。当下,各种类型的数据库层出不穷,关系型、键值、时序、图形……让人难以抉择。另外一个重要的景象是,大部分云原生数据库都是基于 PostgreSQL 研发而来,但后续的许多研发力量却没有投入到高性能、高可拓展性等传统技术概念自身。
数据库兼容,这一开发难度高,与性能无关的个性,却成为了亚马逊云科技的研发重点。某种意义上也阐明,遍地开花的各类型数据库还将长期存在于产业内。人们习惯认为,产业的长期发展趋势是从繁多走向多元,最终通过市场筛选,回归繁多。但这次,“单极”时代可能真的一去不复返了。
此外,在 2020 Gartner 的魔力象限报告里,云数据库畛域有数家占领导地位的企业,亚马逊、微软、Google 位居前三位。
而就在 2019 年,前三名还是微软、Oracle、亚马逊。老大老三打着打着,老二没了……
现在,有 Babelfish 加持的 Amazon Aurora,兼容了 Microsoft SQL Server,恐怕受伤的还是 Oracle。云数据库之间的墙壁在倒塌,而传统商业型数据库的竞争难度在进一步加大。
而乘上碎片化时代东风,公布了 Babelfish 的 Amazon,也牵强附会的成为了云数据库市场新的领头羊。
写在最初
数据库行业远未走到终局,也不会有所谓的终局。但云原生数据库能够取得的劣势并不仅限于数据库自身,比方 Amazon Aurora Serverless 提供的弹性伸缩服务,Amazon Aurora Global Database 晋升了数据寰球同步能力与业务连续性,Amazon DevOps Guru 将机器学习引入了利用治理。这是“合力”,将数据库在云上的体验拉伸到了全新的维度。
在云数据库畛域,这种“合力”将主导接下来的市场格局。
11 月 30 日,2021 re:Invent 又将到来,Adam Selipsky 将首次以亚马逊云科技新任 CEO 的身份亮相。置信云数据库市场的趋势动向,也将随之更加清晰。