其他
黄东旭:开源数据库的国际化思考与实践
可能因为TiDB是开源的,最近在国内开源也是比较热的主题。有些朋友会说Snowflake 也不开源,或者Databricks的Delta Lake 一开始也没有开源,并且现在一些云服务厂商,比如 AWS Aurora 的 Redshift ,基本都不开源。所以开源会是数据库或者新一代的基础软件的一个必要条件吗?下图为一个名为ossinsight 的开源项目,它把Github上的数据实时抓下来做数据分析。从宏观角度来看,开源项目即使基数很大,仍然在呈指数级地增长。
Supabase 是一家非常有意思的数据库公司,在它的主页有两句 slogan ,"Build in a weekend.Scale to millions."。从我们的角度来看,一周能Build 出来的也就是原型,而millions 对于数据库性能来说是个很小的数字。Supabase 提供的服务很简单,它把PostgreSQL 放到云上,给客户提供易用的服务。而它的目标客户不会关心它能不能跑一个亿的 TPS ,而是整体的用户体验非常流畅。
过去几十年,我们发明了太多的OLTP 数据库,比如Oracle 、MySQL 、DB2 、 PostgreSQL ,同时我们又发明了多个Data Warehouse ,比如Greenplum 、Terdata 、snowflake 。这样就导致整个系统非常复杂。最近半年,尤其在美国,HTAP 是个非常重要的趋势。比如 Google 隆重推出了名为 AlloyDB 的全托管式 PostgreSQL 数据库,它的特点是支持实时分析。
经常有人说数据库到底要不要追求高性能,当然要。但是高性能到底意味着什么,目前没有一个人能够给我讲清楚。实际上大家真正去使用数据库的时候,更在意的是性能是不是可预期的,就是稳定性。其实,可预期的性能比高性能更重要。比如说数据库服务告知开发者,不管是 100 并发、1000 并发甚至1 万并发响应都是100 毫秒,而不是说在压力小的时候 1 毫秒,压力大的时候是2秒。所以不稳定的快不如稳定的慢,尤其在云上。如果厂商要提供数据库服务的话,这一点是比单纯追求极致的性能会更加重要的设计思路。
这次不提云原生,因为目前来说所有东西都是云原生的,当云原生成为必选项以后,一定会出现基于云原生出现新的生态和技术。Serverless 就是一个很好的例子,云原生的下一站一定是 Serverless 。这里需要一个新的概念 Full Stack Service 。比如 Vercel 这个网站和应用托管平台,前端不需要关心CDN 的服务器,应用层不需要管部署在那个服务上。这些新一代的服务提供商,他们在每个链路上都是 Serverless 的解决方案,以后整个链路串起来变成全栈 Serverless 的体验。现在云上数据库存算分离已经变成基本要求,以后厂商能多大程度地去利用 Serverless 就意味着能多大程度地去利用云上的弹性的资源,能多大利用弹性的资源意味着能够创造多少利润空间,这点其实特别重要。
作为 Database 厂商,我们经历了 SQL 到 NoSQL 再到 new SQL 又回到了 SQL ,接下来 API 会变成兵家必争之地。SQL 是访问数据库的一个标准的语言,但是 SQL 其实离真正的应用还是有点远。真正的应用一定是通过 API 来去访问数据,但这意味着用户还要去管理 API 去写很多代码去封装数据库,把数据库的数据访问变成 API 再提供给应用。所以下一个趋势是让 API 的封装和使用变得更加的简单。对一个数据库公司来说,用户是谁,很多人说是 DBA。早年我也觉得产品就是给像数据库的使用者、管理员和这个基础软件的开发者去用的。但是现在真正我们的用户是构建应用的开发者,甚至未来世界都可能没有DBA 。当然,目前来看 SQL 仍然是一个非常重要的一个接口,至少比 NoSQL 要好。
— 推荐阅读 —