《PolarDB for PostgreSQL源码与应用实战》——如何参与贡献PolarDB for PostgreSQL开源(上)

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

本文分享的内容是如何参与贡献PolarDB for PostgreSQL开源。


说起开源,近年来的开源项目越来越多,开源也越来越热,那是什么原因呢?每个人都有自己的想法,我个人认为随着软件行业的发展,无论是软件的消费端还是生产端,都有对软件产品的诉求。


软件的消费端也就是我们的用户,他希望产品是长久的,不会因为某些原因停止服务或没有人维护了,也希望软件产品的后续功能能得到继续支持。作为软件的开发人员,也就是软件的生产端,更希望的是能开发出更多、更新、更炫的功能,并能快速地分享给大家。而开源正是给他们提供了一个非常好的温床,一个好的开源项目离不开大家的支持和贡献,更离不开好的开源管理。而作为开源的参与者,也就很想知道如何能快速高效地参与进来,并开发出符合开源标准的高质量代码。本文将简单讲一下PolarDB for PostgreSQL开源项目开发环境的快速搭建以及一些开发的规范,最后用一个案例来演示一下如何快速参与到我们的贡献中。


开发环境搭建


作为开发人员,最想有的就是一个比较适合自己的开发环境,就像砍树的人需要一个锋利的斧头一样,使得自己能够快速地投入到工作中,而不是为其他繁杂的问题所影响,正所谓“欲善其事必先利其器”


(一)开发环境搭建—系统环境搭建与依赖安装

image.png


开源环境搭建分成两部分,一部分是讲一下系统环境搭建,虽然我们在开源项目里已经提供了Docker版本的快速部署,但是还是需要给大家介绍里边具体做了什么,因为作为开发人员,如果要对这里面的内容进行开发和维护,肯定要知道里边具体都做了什么。


由于我们项目是基于PostgreSQL(后面简称为PG)开发,如果以前参与过PG的开发,基于对PG的了解,大家都知道PG是一个基于C语言开发的。我们这里首先需要安装一些C语言的编译环境以及依赖库,同时为了方便我们后期调试使用以及代码编辑,也需要安装一些其他的工具,比如git。这个git实际上是我们的一个代码管理工具,可以快速获取到最新代码,GDB用来调试debug我们的代码,vim可以进行一个快速的编辑,还有SSH服务等。SSH服务在集群部署中会使用到,然后安装一些PolarDB的依赖,这些依赖是后续一些编译工作能够顺利展开的重要保障。


比如说,我们这里提到的bison和flex,如果我们后期开发过程中需要添加新的SQL语法或者是对现有语法进行修改,肯定就需要安装这些依赖,为什么呢?因为我们的语法解析器正是基于两个工具进行开发的。


(二)开发环境搭建——源码获取与编译安装


下面介绍一下代码。

image.png


image.png


我们的代码是托管在GitHub上,可以通过前面安装的git管理工具git clone,快速获取最新的代码,同时也欢迎大家去浏览GitHub项目地址,时刻可以看到开源的最新动态及讨论。通过git clone拿到最新代码之后,我们首先要考虑的工作就是进行编译。


前面讲到装了很多依赖,这里我们的编译工作会顺利很多。我们提供了一个build.sh的快速编译脚本,通过这个脚本可以快速进行编译安装,然后它的默认安装位置就会安装到HOME目录下的polardb子目录以及polardbhome的子目录下。


这个脚本都做了什么?实际上做了三件事,就是我们的configure,用来检测依赖环境,然后生成make file,然后是我们的一些make,进行编译,然后就是make install进行安装。


对于我们这种开发人员来讲,更关心的肯定是一些我们的自己手动编译安装的步骤,因为对于这种编译的环境,我们肯定有根据自己的这开发要求进行修改,这里提供了一些简单的手动编译过程,通过configure命令,指定几个参数来进行configure。


Configure里比如“-O0”,可以通过这种“-O0”让编译器不要去优化一些我们的代码,这样在debug过程中可以得到更多有效的信息,enable-debug实际上是在我们编译的命令上加了一些参数,比如加了个-g的参数,这样也可以在debug过程中提供代码详细的文字信息。enable-tap-tests实际上是一个基于TAP测试框架,因为我们产品的测试分成两部分,一部分可以认为是内核功能的测试,还有一部分功能可以认为是一些周边的工具,包括插件的测试,有一些周边的工具和插件,就用了基于perl这种tap的测试框架,我们在这里面支持它,方便后期的测试。对于Python需要支持,因为我们有些代码是基于Python开发,prefix参数指定了默认的安装目录,刚才上面提到,如果通过build.sh去进行编译安装,它指定的一个目录,我们根据自己的需要和开发的目录管理可以指定一个目录,然后编译DMA高可用的一个功能,我们就照着对应的目录进行编译即可。然后回到code主目录进行编译,进行安装。


最后是contrib目录,我们所有的插件都放在这个目录下面进行编译和安装。到此为止,开发环境搭建已经初步完成,可以进行编译代码的debug调试,包括编译等工作都可以在这上面运行了。


有些同学有自己的一些习惯提升开发环境,大家可以根据自己的喜好安装,比如Eclipse、Source Inside、VScode等,在这里不做具体介绍。


(三)开发环境搭建—regression 测试


image.png


我们拿到一个环境编译,安装完之后,想快速验证一下这个产品是否好用,或者想快速知道产品的一些特性功能。我们提供了一个测试框架,这种测试框架是通过make check、make check-world,然后make checkdma、make check-world-dma 这几个命令可以快速对产品内核的功能进行一些测试验证,包括一些周边工具的测试验证。比如 make check-world、check-world,可以看到它是在5个目录下面分别进行make check,如果看到它的make file是怎么写,在这么一个make check的过程中,实际上不仅它包含了上面提到的make check,make check只是测试我们内核功能。


刚才前面也提到了,测试功能主要分成内核功能还有一些设施周边的工具和插件,这种make check-world就可以测试到所有的模块,它通过这种方式也包含了核心功能的测试,执行一个make check-world,时间会稍微长一点,但是它可以做一个全量测试。


我们这个开源版本里面提供了 make checkdma,checkdma 是什么?实际上前面提到这是支持DMA高可用的一个版本,这种高可用的是一个三节点集群版。前面像 make check、make check-world,是一个单节点模式下运行的测试,想测试在集群下的所有测试是否通过,我们提供了一个快速的命令 make checkdma,类似于 make check-world 功能,区别在于启动每个测试的时候都是启动一个集群的测试,而不是一个单节点测试。


《PolarDB for PostgreSQL源码与应用实战》——如何参与贡献PolarDB for PostgreSQL开源(中) https://developer.aliyun.com/article/1232497?spm=a2c6h.13148508.setting.19.5e4f4f0ecmbIFO


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6天前
|
数据库
|
12天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
52 4
|
27天前
|
存储 关系型数据库 分布式数据库
使用开源PolarDB和imgsmlr进行高效的图片存储和相似度搜索
使用开源PolarDB和imgsmlr进行高效的图片存储和相似度搜索
|
30天前
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
111 5
|
1月前
|
人工智能 自然语言处理 关系型数据库
阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成
近日,阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成。
|
1月前
|
关系型数据库 分布式数据库 数据库
PolarDB 开源:推动数据库技术新变革
在数字化时代,数据成为核心资产,数据库的性能和可靠性至关重要。阿里云的PolarDB作为新一代云原生数据库,凭借卓越性能和创新技术脱颖而出。其开源不仅让开发者深入了解内部架构,还促进了数据库生态共建,提升了稳定性与可靠性。PolarDB采用云原生架构,支持快速弹性扩展和高并发访问,具备强大的事务处理能力及数据一致性保证,并且与多种应用无缝兼容。开源PolarDB为国内数据库产业注入新活力,打破国外垄断,推动国产数据库崛起,降低企业成本与风险。未来,PolarDB将在生态建设中持续壮大,助力企业数字化转型。
78 2
|
2月前
|
存储 关系型数据库 分布式数据库
揭秘PolarDB:中国云原生数据库的超级英雄,如何颠覆传统数据存储?
在数字化时代,数据成为企业的核心资产,而云原生数据库则是推动企业转型的关键。PolarDB凭借其先进的存储计算分离架构,在性能、可靠性和易用性方面脱颖而出,成为国内领先的选择。它支持多种数据库引擎,提供多副本存储机制,并采用按量付费模式,有效降低管理和成本压力,助力企业实现高效、可靠的数字化转型。
62 1
|
2月前
惊世骇俗!开源 PolarDB-X 部署安装大冒险,全程心跳与惊喜不断!
【9月更文挑战第8天】作为技术爱好者的我,近期成功完成了开源 PolarDB-X 的部署安装。尽管过程中遇到不少挑战,但通过精心准备环境、下载安装包、配置参数及启动服务等步骤,最终顺利实现部署。本文将详细介绍部署全过程及可能遇到的问题,为您的 PolarDB-X 探索之旅提供参考与启发,希望能让大家在技术海洋里畅游得更加顺利!
126 2
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB开源项目未来展望:技术趋势与社区发展方向
【9月更文挑战第5天】随着云计算技术的发展,阿里云推出的云原生分布式数据库PolarDB受到广泛关注。本文探讨PolarDB的未来展望,包括云原生与容器化集成、HTAP及实时分析能力提升、智能化运维与自动化管理等技术趋势;并通过加强全球开源社区合作、拓展行业解决方案及完善开发者生态等措施推动社区发展,目标成为全球领先的云原生数据库之一,为企业提供高效、可靠的服务。
88 5
|
2月前
|
关系型数据库 MySQL 分布式数据库
PolarDB开源社区动态:最新版本功能亮点与更新解读
【9月更文挑战第6天】随着云计算技术的发展,分布式数据库系统成为企业数据处理的核心。阿里云的云原生数据库PolarDB自开源以来备受关注,近日发布的最新版本在内核稳定性、性能、分布式CDC架构及基于时间点的恢复等方面均有显著提升,并新增了MySQL一键导入功能。本文将解读这些新特性并提供示例代码,帮助企业更好地利用PolarDB处理实时数据同步和离线分析任务,提升数据安全性。未来,PolarDB将继续创新,为企业提供更高效的数据处理服务。
168 3

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB