《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL开源路线图(1)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL开源路线图(1)

本文主要分享一下Polar DB for PG的开源路线图,虽然路线图已经拟定,但是作为开源产品,所有参与者都能提出修改意见,包括架构核心特性的技术以及周边生态和工具等,希望大家能够踊跃提供想法和建议,帮助产品提升。


本文主要围绕项目的背景和路线图来展开,传统数据库产品已经研发了40多年,知名厂家有很多,产品也是层出不穷。看看数据库排行榜,就知道我们面对多么丰富的数据库产品族谱,加上最近10年来大数据NoSQL、NewSQL的兴起,数据库产品逐渐和大数据处理产生融合的趋势,任何一个新研发的数据库产品一定离不开这些背景,选择一个数据库产品的技术方向,同样受到大环境的影响和约束。


本文将花一些时间阐述对这个背景的理解和分析,并在此基础上提出产品开源的路线图及其所要达成的目标和需要解决的问题。


背景


(一)饮水思源,回馈开源,成就开源

首先介绍的背景是关于开源,讲讲现在数据库上云是如何利用开源的,然后如何回馈了到开源产品,并且最终成就开源。


image.png


过去数据库作为传统的IT基础设施,基本上垄断在几大主力的厂商手里。虽然开源数据库产品很多也很流行,比如MySQL等,都是叫好不叫座,挣钱能力不足,商业能力可能不是很好,这其实由下面的一些因素来决定。因为数据库作为核心的IT基础设施,因此对其可靠性、稳定性、功能全面性和性能要求很高,每个企业在选型数据库时非常谨慎,开源数据库在10年前也没有拿出足够的能力来撼动这些商业数据库的地位。


其次就是在商业上,由于以前使用数据的大部分都是大客户,有充足的资源,他们当然希望被大公司来服务。上述两个因素形成了商用数据库的生态,用户DBA开发以及中间商,大家都是基于这些商用数据库工作,所以一个新产品如果想要进入,它面临的门槛是非常高的,自然就形成垄断,造成某些厂商一枝独大。


随着IT的云化,公有云市场的发展,比如AWS,阿里云等,这些后期的IT提供商从计算,存储,资源优化开始,为用户提供按需的资源,进而自然进入基础软件的供应。


显然,使用来自垄断厂商生产的商用数据库为云用户提供服务,将导致云的利润都被商用数据库厂商拿走,将开源数据库,特别是像MySQL、PostgreSQL推上前线,和商用数据库一争高低,是其背后的商业背景和目的决定的,其中的路径基本上有下面几步。


首先是完善这些数据库的企业级管理能力,也就是今天所谓的RDS服务,比如数据库的部署,数据库的启动、停止升级,扩容备份恢复等操作。这些管理能力的云化和完善,使得上云的用户不再需要DBA来管理数据库,极大减少了用户的运营成本。


因此,第一步是开源数据库上云,用云化管理来替代DBA,实现对商用数据库的商业模式的超越。当然,云化的数据库资源的随用随取也是一个非常重要的点。完成这一步还不够,毕竟开源数据库在本身能力上和商业数据库是有一定差别的。


要想取得商用数据库开辟的大市场,开源数据库的云化增强就开始了,因为补上差距是不够的,不能够吸引客户转投开源数据库,必须有超越商用数据库技术的技术和竞争力。


比如阿里云开发了PolarDB,首先对数据库依赖的存储系统进行云化改造,提供云延伸的扩展性和资源弹性,同时对外维持开源数据库的所有特性,保证开源数据库的生态可以很好地被继承。


改造解决了商用数据库对底层存储硬件固有的依赖,比如其性能和容量完全受限于存储硬件,不容易扩容,也不能实时在线地提供按需吞吐,后续引入的一写多读分布式以及Global DataBase的技术,使得原生基于开源数据库的产品,完成了对传统商业数据库的技术超越,为用户提供了它们不能提供的价值和竞争力。


阿里云在使用开源数据库的同时,也在不断地为开源社区输出企业级的技术。比如阿里维护了MySQL分支AliSQL,比如我们推入PG社区的全局临时表功能。


我们无法往社区推很多东西,因为PG社区非常谨慎的,对每一个特性的需求和设计都有非常严格的要求,需要经过多位重量级的Commit的同意和竞争开发者的同意。很多特性在社区历史上都被其他开发者开发过,只是设计角度和覆盖方面没有满足社区的需求而被搁置。任何一个Patch,都是需要超越以前的版本,最终才能被PG社区接收。我们经过半年多的时间,最终实现了被社区所接受的特性。考虑到社区版本演进的谨慎性,我们有许多技术可以回馈开源社区,但是因为社区的相对谨慎,我们很难做到这个事情,其中的周期非常长,这就成为我们开源PalarDB的一个重要原因。我们希望开源的技术是对社区核能力的辅助增强,所以最好都是垂直于社区能力,用户拿我们的开源软件加上社区的内核版本,就可以同时享用两边的贡献,就是我们目前选择开源高可用能力、分布式扩展能力、后续云化运维能力等功能的主要考虑因素。


通过这些技术的开源,我们就可以和社区共同成长,我们的技术就是社区的一份子,同时社区的发展也能够帮助我们更好地服务客户,最终收益的是开源社区和我们的用户,社区和开源数据库的用户们获得了共同成长的利益和价值,而阿里数据库团队将成为其中的一个助力,这是我们对开源产品的理解。


(二)数据库架构


接下来介绍的是关于数据库的架构,它是如何演进,现在有哪些数据库的架构。


image.png


上图列了三种架构,最左边的是单机数据库,一台服务器在运行一个数据库,存储就是本地磁盘系统,用户通过网络连接数据库进行SQL查询和计算。


很明显,这种架构的问题是当数据库故障的时候,用户服务将会被中断,同时本地盘系统的容量和吞吐有限,当用户负载增加的时候,单机数据库会出现服务响应时间过长等性能问题。但有些商用数据库、开源数据库、MySQL、PostgreSQL,它在一台服务器上部署的时候就是这种类型。


中间这个架构又称为共享存储或 Shared Everything 架构,其特点是多个数据库实例共享一个存储系统。一般这种存储系统是由硬件厂家生产,或者通过云化的存储服务,具备更高的性能和容量。多个数据库实例除了可以共享这种系统外,还可以共享一个数据库,包括其字典表、用户表等。这些数据库实例可以写也可以读,比如Oracle其数据库实例就是可以同时读写,共享存储。PolarDB现在只有一个写节点,其他节点都是读节点。这个架构的特点是计算和存储分离,数据库计算有专门的数据库节点来完成,而存储有专门的硬件或者云化存储系统来实现。


另外一个特点是当有实例故障的时候,可以快速恢复,快速地切换负载到其他实例上去执行,中断时间非常短。但用户负载和要求吞吐增加的时候,这个架构需要提升硬件的规格来实现能力的提升,比如增加数据库节点的CPU核数,增加共享存储的能力等,所以这种扩展能力我们称之为垂直扩展或叫做Scale up。


最右边这个架构称为Shared Nothing架构,或者叫分布式架构,每个数据库实例和单机数据库类似,有自己的存储和计算资源,每个数据库实例都是一个独立的数据库。但是,这些数据库通过一定的MetaData和字典表的管理,实现对用户来看就是一个数据库。每一个数据库实例其实管理一个分片数据库,存储一部分数据库的数据,相互之间是逻辑和物理的隔离,所以称之为是 Shared Nothing架构。其主要特点是当涉及多个分片数据库时,需要执行分布式的SQL计算,需要通过分布式事务保持事务一致性,这种架构的优点是系统可以水平扩展。


当用户需要更大的存储容量,更高的计算吞吐时,就可以通过增加数据库分片,也就是数据库节点的方式来提升系统容量性能,这种扩展方式称为水平扩展或叫Scale out。开源的Polar DB将是后面两种架构的融合。


(三)数据库系统的演进


接下来介绍一下数据库系统的演进,以及演进对我们开源数据库产品的路线的影响。


image.png



无论是传统的商业数据库,还是我们开源数据库MySQL或PG,它处理的都是关系型的数据,也就是结构化的数据。其中又分为两种,RDBMS也就是关系型数据库管理系统,主要处理在线的交易型负载,比如ATM,商家的在线交易等等。


另外一个称为Data Warehouse,也就是数据仓库。和RDBMS一样,都使用标准的SQL来处理数据,但是其负载涉及大量数据,很多表计算非常复杂,典型的应用为ETL和在线分析计算。


随着大数据的兴起,Hadoop平台的普及,用户希望处理的数据类型逐渐多样化,比如时间序列、地理数据、图、向量、文本等等。相应的数据处理产品涌现,它们区别于关系型数据库的最大差别是处理的数据类型和使用的处理语言是不一样的,以及它们和Hadoop等大数据平台的融合,带来了极高的可用性和扩展性,能够水平扩展到几十台甚至几百台、上千台服务器上。


受这些产品的启发,许多新型数据库系统开始转向分布式的高可用、高扩展,引入了共识协议,实现高可用,同时维持对数据库处理语言SQL的支持,典型例子有Google的Spanner,虽然这些NewSQL实现了上述目标,但是其对SQL支持的完整度上和开源数据库仍然有一定的差距,可以说只是后者的子集,需要投入很大的资源来完善这部分功能。


我们的想法是能否在开源数据库的基础上引入分布式,引入共识协议,以及存储和计算层的弹性优化,实现NewSQL产品的高可用、高扩展、高弹性,但是保留对开源生态SQL的完整支持,这是我们开源路线图一个支撑的因素。


《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL开源路线图(2) https://developer.aliyun.com/article/1232546?spm=a2c6h.13148508.setting.15.5e4f4f0ecmbIFO



相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
7天前
|
Cloud Native 关系型数据库 分布式数据库
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
|
3天前
|
运维 关系型数据库 分布式数据库
阿里云PolarDB:引领云原生数据库创新发展
阿里云PolarDB引领云原生数据库创新,2024云栖大会将分享其最新发展及在游戏行业的应用。PolarDB凭借弹性、高可用性、多写技术等优势,支持全球80多个站点,服务1万多家企业。特别是针对游戏行业,PolarDB助力Funplus等公司实现高效运维、成本优化和业务扩展。通过云原生能力,PolarDB推动游戏业务的全球化部署与快速响应,提升用户体验并保障数据安全。未来,PolarDB将继续探索AI、多云管理等前沿技术,为用户提供更智能的数据基础设施。
|
6天前
|
关系型数据库 MySQL 分布式数据库
[PolarDB实操课] 05.通过源码部署PolarDB-X标准版
本课程介绍如何通过源码部署PolarDB-X标准版,涵盖基于Paxos的MySQL三副本工作原理和技术特点。主要内容包括: 1. **Paxos三副本工作原理**:讲解Leader和Follower节点的角色及数据同步机制。 2. **技术特点**:强调高性能、数据不丢失(RPO=0)和自动HA切换。 3. **源码部署步骤**:详细演示从编译生成RPM包到启动DN节点的过程,包括配置my.cnf文件和初始化数据库。 4. **高可用体验**:通过三台机器模拟三副本集群,展示Leader选举和故障转移机制,确保数据一致性和服务可用性。
|
6天前
|
关系型数据库 编译器 分布式数据库
PolarDB实操课] 04.通过源码部署PolarDB-X企业版
本次课程由PolarDB开源架构师王江颖分享,详细介绍了通过源码部署PolarDB-X企业版的全过程。主要内容包括: 1. **编译基础** 2. **使用源码编译部署PolarDB-X企业版** 3. **演示实例**:通过阿里云ECS进行实际操作演示,从创建用户、赋予权限到最终启动并连接PolarDB-X数据库,展示了完整的部署过程。 4. **总结**
|
2月前
|
关系型数据库 分布式数据库 PolarDB
参与有礼|开源PolarDB文档捉虫
2024年9月,开源PolarDB-PG发布兼容PostgreSQL 15版本,为提升用户体验,特举办“开源文档捉虫”活动,邀请您反馈文档问题和优化建议。活动时间为2024年11月1日至2025年2月28日。参与即有机会赢取PolarDB开源社区T恤、新春茶碗及福字版印礼盒等丰富奖品。更多详情及反馈入口请点击链接。
参与有礼|开源PolarDB文档捉虫
|
2月前
|
数据库
|
2月前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
240 4
|
3月前
|
存储 关系型数据库 分布式数据库
使用开源PolarDB和imgsmlr进行高效的图片存储和相似度搜索
使用开源PolarDB和imgsmlr进行高效的图片存储和相似度搜索
|
3月前
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
256 5
|
关系型数据库 分布式数据库 PolarDB
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
384 0

相关产品

  • 云原生数据库 PolarDB