开源社区访谈之PostgreSQL
2017-06-30 11:00:48 阿炯

PostgreSQL 德哥:技术是为业务服务的

作为世界先进的开源数据库,PostgreSQL 的市场占有率在不断提升,其在国内的发展,也越来越受到企业和用户的关注。和其它开源数据库相比,PostgreSQL 有哪些亮点和不足?已经发布测试版的 PostgreSQL 10 又有哪些新特性值得关注?本期【开源访谈】邀请到 PostgreSQL 中国社区发起人周正中(德哥),听听他对 PostgreSQL 的看法和期望,聊聊他与 PostgreSQL 结缘的那些事儿。

【本期嘉宾】

digoal (德哥)
,现任职于阿里云数据库内核技术架构组。PostgreSQL 中国社区发起人之一、常委、兼任社区大学校长;PostgreSQL 中国社区杭州分会会长;PostgreSQL 中国社区大学发起人之一。也是中国开源软件推进联盟 PostgreSQL 分会特聘专家;DBA+ 社群联合发起人之一;DBGeeK 联盟专家团成员。14 项已授权数据库相关专利。

【访谈内容】

1、请简单地介绍一下您自己(技术背景、学习经历、工作经历)。

大家好,我是 digoal ,目前就职于阿里云数据库内核技术架构组。我从 2006 年开始接触数据库,当时对 Oracle 比较痴迷,经常啃 Oracle 的英文文档到半夜。现学现卖,在当时非常流行的播布客在线教育平台进行了一些分享,逐渐养成了分享的习惯。2008 年我加入一家移动互联网公司-斯凯,当时公司处于起步阶段,人比较少,使用的数据库比较繁杂,包括 Oracle、MySQL、PostgreSQL、mongo 等众多主流的数据库。从 IDC、网络、主机、存储、操作系统、数据库到业务几乎什么都要接触,这种状况下非常历练人。也见证了斯凯从创业到纳斯达克上市的阶段,上市前顺利的完成了所有业务系统的 O 转 P 工作。负责数据库整体系统、存储、主机、操作系统、多 IDC 的架构设计和建设;完成对数据库HA、容灾、备份、恢复、分布式、数据仓库架构设计和建设;并建立了数据库管理和开发的标准化体系。也就是在斯凯,我接触到了 PostgreSQL ,它是一个非常开放,功能非常先进,社区非常的活跃,代码非常的优雅,产品非常的稳定的数据库,我很看好它。2011 年是 PostgreSQL 中国用户会成立的第一年,一群有情有义的年轻人,带着对 PostgreSQL 的执着和热情,开启了推动 PostgreSQL 在中国的技术普及和发展的新篇章。

2015 年,我加入阿里云。我认为云计算是未来的方向,可以降低企业的成本,提高企业 IT 资源的伸缩性,让更多好的产品在云上触手可及。而且随着云计算的发展,物联网的兴起,数据库复杂计算需求的增多,数据模型越来越复杂,PostgreSQL 的普及会越来越快。现在已经有来自金融、电力、运输、新零售、政府、科研等行业龙头企业的核心数据库在使用 PostgreSQL 。

2、是因为什么接触和喜欢上 PostgreSQL 的?它最吸引你的地方是什么?

入职斯凯后,因为工作需要,接触了 PostgreSQL 。但是真正喜欢上 PostgreSQL ,是因为它非常开放,功能非常先进,社区非常的活跃,代码非常的优雅,产品非常的稳定。最重要的是在 PostgreSQL 社区结识了一群有情有义的技术好基友。

PostgreSQL 不仅仅是一个数据库,更是一个数据工厂,它可以通过 PL/language 对接软件生态;通过开放的类型、OP、IDX、AGG、WIN 等对接行业生态,支持各种行业(基因、化学、医疗、图像搜索等);通过开放的 FDW 接口,对接更多的外部数据源;通过 SCAN 接口对接硬件生态,例如 GPU\TPU\FPGA 等。

3、学习过程中是怎么一步步提高自己的技术能力的,有没有一些心得分享?

从我的角度来给一些建议的话,主要有三点:

一是仔细的阅读官方文档、看代码。多实践,证实自己的想法。多参与社区的交流,多帮助别人,多分享自己的想法。

二是要有 GEEK 的理念,一个问题有很多解法,多思考不同的解法。

三是有问题先思考,不要一开始就求助,真的找不到答案时,可以多看一下 stackoverflow 。

4、对于普通技术人员来说,遇到问题可以请教高手。那对于您这样的技术大神遇到阻力时,会如何去解决?

其实解决问题的方法总比问题多,所以有问题一定要先思考,如果想不出来,可能是你对产品本身的理解不够透彻,或者对业务的理解不够透彻。那就继续深入的学习,学习文档,学习源码,理解业务的本质。

5、和其它开源数据库相比,PostgreSQL 有哪些亮点和不足?

先说亮点:

BSD 许可;
功能强大,支持多核并行,LLVM,向量计算,列存储扩展,外部数据源扩展,插件。支持各种数据类型(除了常规类型,还包括 GIS 、全文检索、JSON、KV、XML、RANGE、数组、枚举、复合等类型),支持多种索引接口(btree,hash,gin,gist,spgist,brin,rum,bloom等),支持非常丰富的 SQL 语法(例如 空间搜索、窗口查询、多维分析、递归查询、HASH,MERGE,NEST JOIN、HASH,GROUP AGG、MERGE SORT 等);
接口开放,前面也有说到,通过 PL/language 对接软件生态,通过开放的类型、OP、IDX、AGG、WIN 等对接行业生态,支持各种行业,通过开放的FDW接口,对接更多的外部数据源,通过 SCAN 接口对接硬件生态。

不足的话,XID 还是 32 位的,会带来一次额外的 FREEZE 开销。不过社区正在对此进行改进,未来会支持 64 位,彻底抛弃 FREEZE 。

6、怎么看待开源数据库的未来走向?

我认为具体会包含以下方面:

开放接口,对接硬件生态,从单一的围绕 CPU 设计转向围绕多种计算单元,包括 CPU\GPU\FPGA\TPU 的设计。
更好的利用硬件级指令,例如向量计算。
开放接口,对接软件生态,打破 SQL 瓶颈,将更多的编程语言集成到数据库中。
开放接口,对接云端生态,通过开放的接口,与云端其他组件无缝融合,例如阿里云提供的 oss_fdw ,PostgreSQL 可以和云端对象存储 OSS 无缝融合。
开放接口,对接存储生态,支持更多格式的存储,例如 parqut, orc 等。
开放接口,对接业务生态,例如 PG 通过开放类型、OP、IDX 等接口,对接了更多纵深行业(图像特征搜索、基因、化学、医疗等,有特殊数据存储、搜索需求的行业)。
流计算,降低怠速开销,提升分析型查询的性能。
横向扩展能力,内置 MPP ,SHARDING 的功能。

7、PostgreSQL 10 已经在测试了,最喜欢或最看好的新特性是什么?

PostgreSQL 10 的很多特性其实都很不错,包括:

quorum 级多副本,用户可以指定事务的副本数,对可靠性要求高的会话,使用多副本保证数据 0 丢失,对可靠性要求低的事务使用单副本甚至异步提升响应速度。
多核并行增强,支持排序、JOIN、聚合、bitmap scan、MERGE SORT、全表扫描、建索引、多分区扫描、多外部数据源扫描的并行,更加有效的利用服务器的资源,提升 SQL 的响应速度。
逻辑订阅,支持表级订阅,业务架构设计时,通过逻辑订阅可以实现多实例的数据共享,甚至 multi-master 。
sharding 增强,支持 sort, where, join, agg 的下推。
libpq 支持读写分离。
ICU 支持,各国字符编码一致性保障。
JIT 支持,使得大量数据处理性能有质的飞越。

8、对于数据库相关的技术从业新手,有怎样的一些建议?

请记住技术是为业务服务的,数据库是基础软件,深入的了解它还不够,还需要更深入的了解业务,了解行业。让数据库可以更好的帮助业务发展。另外,拿 PostgreSQL 来说,由于其开放性,我们不仅仅需要学习数据库本身,还需要通过 PG 的扩展,去纵深的了解各个对应的行业。

9、后续有没有一些计划和动作来推动 PostgreSQL 在国内应用的广泛度?

PostgreSQL 社区是一个大家庭,这里面包括了 数据库厂商、云计算厂商、最终用户、技术支持提供商、高校、数据库周边生态  等各个行业的群体。

我们今年 9 月份会在深圳举办 PostgreSQL 中国用户会全国大会,10 月份的云栖大会也会设立 PostgreSQL 的专场,同时 PG 社区也会和各个社区合办一些培训、技术类的专场或分享。

感谢开源中国社区对 PostgreSQL 社区长久以来的大力支持,希望开源中国越办越好,也期待后期的合作机会。

本文源自:【开源访谈】PostgreSQL 德哥:技术是为业务服务的

瀚高王刚:PostgreSQL 的发展将会越来越好

PostgreSQL 是一个功能强大,开源对象关系型数据库系统,拥有超过 15 年的持续开发和经验证的体系结构,赢得了良好的声誉。关于 PostgreSQL 的学习有哪些要注意的事项?与其他数据库相比,PostgreSQL 的主要优势是什么?发展前景又如何呢?本期【开源访谈】邀请到瀚高数据库内核开发工程师王刚,聊聊他在研究过程中所了解的 PostgreSQL。

【本期嘉宾】王刚, 瀚高数据库内核开发工程师,研究生期间,接触到数据库系统实现的课程,随后学习研究 PostgreSQL 源码,毕业后加入瀚高从事国产数据库的开发,目前工作集中在日志相关的技术领域。

【访谈内容】

1、嘉宾自我介绍。(学习、工作经历,以及主要负责的领域等)

我是在研究生阶段深入接触到数据库,主要是因为我导师从事数据库研究,他给我们开了数据库系统实现的课程,然后我就进入了数据库领域。研究生期间参加过两次会议,都是跟数据库有关的,这些经历对我影响挺深,以至于想以后从事数据库相关的工作。找工作也是毫不犹豫的找数据库相关的工作。加入瀚高后,主要负责数据库日志模块的研究与开发工作。

2、您是如何与 PostgreSQL 结缘,并成为数据库方面的专家的?

专家肯定是称不上的,只能算菜鸟了,与 PostgreSQL 结缘也是因为导师,之前只是听说过 PostgreSQL,没有深入接触过,后来导师让我看看 PostgreSQL 的代码,这才走上研究 PostgreSQL 的大道。我也希望能结识 PostgreSQL 内核的大牛们。

3、PostgreSQL 目前在国内外非常流行,其主要原因是什么?

PostgreSQL 这几年在国内越来越流行,阿里、平安科技、瀚高等企业都选择了 PostgreSQL,这其中有国内 PostgreSQL 社区推广的原因,我觉得更重要的原因还是在于 PostgreSQL 本身。PostgreSQL 起源于伯克利大学,可谓是出身名校,并且 PostgreSQL 完全由社区开发,没有大公司掌控,开放的协议便于公司在其基础上做二次开发。PostgreSQL 某些功能至今依然是很多数据库不具备的,以上这些我认为是 PostgreSQL 在国内外流行起来的主要原因。

4、PostgreSQL 对传统数据库是否构成威胁?传统数据库有哪些痛点呢?

我认为不算是威胁,PostgreSQL 也还是属于关系数据库的范畴,因为 PostgreSQL 本身的很多技术都来源于传统数据库,比如说查询优化、事务等。PostgreSQL 在传统数据库的基础上引入了很多新的技术,比如说对 NoSQL 的支持,对象概念的支持。这些恰好是传统数据库的弱势。随着大数据、云计算的流行,传统数据库确实显现了一些不足,高并发下性能低,可扩展性差,但是关系型数据库依然有很多问题值得人们深入研究。

5、与 MySQL 和 MongoDB 相比,PostgreSQL 的核心优势是什么?

首先,PostgreSQL 是最先进的数据库,其内部支持的技术多,比如查询优化的手段比 MySQL 多,PostgreSQL 支持类型拓展、函数拓展,用户在 PostgreSQL 的基础上很容易完成拓展。

与 MongoDB 相比,PostgreSQL 又具有关系型数据库的优点,支持事务,而且现在也支持 NoSQL 类型,应该说 PostgreSQL 的功能是非常完善且强大的,这些都是它的核心优势。

6、谈谈 PostgreSQL 的现状以及未来的发展趋势?

PostgreSQL 在国内发展势头很好,越来越多的公司认可 PostgreSQL,PostgreSQL 本身也不断的加入新的功能,PostgreSQL v9.6 支持并行查询,提高了查询性能,即将发布的 PostgreSQL 10 支持内置分区表。

PostgreSQL 对 NoSQL 也有很好的支持,也可以利用 fdw 轻松的访问其他数据源,这些先进的技术使 PostgreSQL 拥有很好的前景。PostgreSQL 分会的成立,将促进 PostgreSQL 在国内的发展,以后会有更多的企业使用 PostgreSQL。

7、新手应该如何系统地学习 PostgreSQL,您的建议是什么?

我觉得基础很重要,数据库系统的基本概念需要搞清楚,数据库的整体架构需要明白,最好是要了解数据库的技术演进的历史。多读读手册是有帮助的,多参与社区活动。

8、作为数据库领域的专家,能否向大家分享一下您的开发经验,优秀的 DBA 是如何炼成的?

作为刚入职场的菜鸟,经验谈不上了,我讲讲的我的学习经历。第一要具备热情,因为数据库内核有时候是挺枯燥的,庞大的代码,晦涩的理论,需要有耐心,其次要多动手,无他熟尔。

本文源自:【开源访谈】瀚高王刚:PostgreSQL 的发展将会越来越好


PG 势头强劲,不久将与 MySQL 热度不相上下

作为世界先进的开源数据库,PostgreSQL 的市场占有率在不断提升,其在国内的发展,也越来越受到企业和用户的关注。PostgreSQL10 正式版已经发布,有什么新特性值得我们注意?PostgreSQL 接下来会在哪些地方得到更广大的应用?我们该如何深入学习 PostgreSQL 数据库?本期【开源访谈】邀请到 PostgreSQL 中国社区发起人周正中(德哥),让他教你如何学习如何更好的使用 PostgreSQL 数据库。

【本期嘉宾】

digoal (德哥),现任职于阿里云数据库内核技术架构组。PostgreSQL 中国社区发起人之一、常委、兼任社区大学校长;PostgreSQL 中国社区杭州分会会长;PostgreSQL 中国社区大学发起人之一。也是中国开源软件推进联盟 PostgreSQL 分会特聘专家;DBA+ 社群联合发起人之一;DBGeeK 联盟专家团成员。14 项已授权数据库相关专利。

1.您好,请您先简单介绍一下自己

阿里云高级技术专家,PostgreSQL 中国社区发起人之一。首先要谢谢各大技术社区和平台对PostgreSQL给予的支持和帮助,PostgreSQL的发展离不开社会各界的支持。

希望能把PostgreSQL的种子播至四海八荒,让数据库更好的为业务服务,加油。

愿景 -- 公益是一辈子的事,I'm digoal, just do it。

如果您的企业对数据库选型感到迷茫,需要构建数据库管理/开发/安全标准化体系,需要PostgreSQL 分享,或者解答一些数据库类的问题,总之一切与数据库有关的,欢迎在我的GitHub上与我交流。

2.PostgreSQL10 正式版已经发布,您认为有什么重点更新之处?

PostgreSQL 10 的新特性包括:使用基于发布和订阅机制的逻辑复制,声明式的表分区,提升了查询的并发性,显著的性能提升,更强的基于 SCRAM-SHA-256 密码认证机制,提升了监控和控制功能等。

重点更新之处有:逻辑订阅(实现内部单元化),并行计算(实现HTAP,一个数据库同时支撑oltp和olap),FDW 下推(实现内置sharding),等待事件增强,OLTP性能增强。

3.您能简单说一下 PostgreSQL 数据库做业务的优点吗

PostgreSQL就是专注于做业务的,PostgreSQL是个数据库大礼包(支持SQL 2013标准,同时支持流计算、全文检索、图式搜索、空间数据管理、K-V类型、并行计算、存储过程 等),既能OLAP又能OLTP,使用PG可以简化技术栈,简化数据流转。

4.PostgreSQL 数据库主要应用于哪些领域

PostgreSQL 数据库现已在金融、医疗、教育、互联网、政府、物联网、新零售、物流、电商、导航、生物等领域有所建树,接下来还有更多的领域等着 PostgreSQL 数据库去探索。

5.如果之前使用的是其他数据库,该怎么迁移至 PostgreSQL 数据库

各种数据库都可以迁移至 PostgreSQL 数据库,包括DB2, Oracle, MySQL, MSSQL, ACCESS, Sybase等。这里有一份各种数据库迁移到PostgreSQL的指南,里面详述了从其他数据库怎么迁移至PostgreSQL数据库。

6.PostgreSQL 现在全球数据库中排名第四,您觉得它与 MySQL 相比会更有优势吗?

目前热度不如MySQL,最近4年PG连续保持快速的增长,很快会与MySQL热度不相上下。

在功能方面,支持流计算、全文检索、图式搜索,支持时序数据、空间数据、K-V、非结构化、图像、基因、指纹、数组、范围等数据存储和检索。同时支持9种索引结构。支持SQL2013表中,同时支持各个模块的扩展(类型、操作符、索引、函数、语言、等)。支持多核并行计算。简单来说,PG是个大礼包,ALLINONE,既能OLAP又能OLTP,可以简化技术栈,简化数据流转。

同时在复杂查询、大量数据高并发下的稳定性、性能方面会优于MySQL。

7.人工智能现在是一个热点,您觉得 PostgreSQL 数据库能否促进其发展。

PostgreSQL一个亮点就是它的可扩展性,所以PostgreSQL数据库很容易扩展至人工智能领域,相信PG数据库会将人工智能的发展推至另外一个新的高度。也就是因为逐渐热起来的人工智能,也会使得PostgreSQL 数据库得到更好的扩展。人工智能与PG结合将会是新的突破。

8.PostgreSQL 作为全球最先进的开源数据库之一,开源对数据库有什么影响?

开源可以让更多人来为这个产品做贡献,例如PG的很多功能点,实际上都是来自社区用户的贡献。所以说开源推动了 PostgreSQL 数据库的发展。

PostgreSQL 的历史也非常悠久,其前身是 UCB 的 Ingres,后来项目更名为 Post-Ingres,基于 BSD license 下开源。 1995 年几个 UCB 的学生为 Post-Ingres 开发了 SQL 的接口,正式发布了 PostgreSQL95,随后一步步在开源社区中成长起来。作为后起之秀,PostgreSQL 在近几年的势头很强劲,社区和群众基础也在慢慢壮大起来。

9.作为 PostgreSQL 数据库领域的专家,能否向大家分享一下您的学习经验和开发经验?

我在自己的GitHub上给 DBA、应用开发者、内核开发者、架构师整理了一些PostgreSQL的相关资料。包括PPT,书籍,视频和其他相关项目,内容都很详尽。欢迎大家参阅和讨论。

本文源自:PostgreSQL 德哥:PG 势头强劲,不久将与 MySQL 热度不相上下


PgSQL主要贡献者Robert Haas对PostgreSQL内置分片功能的看法


2018年05月19日,流行开源数据库 PostgreSQL 的主要贡献者 Robert Haas 在其个人博客上发表了关于对 PostgreSQL 内置分片功能的看法。

Robert Haas 表示,PostgreSQL 内置分片功能是许多开发者期待已久的特性。即便如此,要在 PostgreSQL 11(将于今年秋季发布)实现的真正的分片功能是不可能的。不过这个实现这项功能的势头正在增强,Robert Haas 指出目前添加的功能对于实现分片是有用的,可能会在未来几年的某个时间达到临界点,而在几年前,关于 PostgreSQL 是否需要内置分片功能的问题曾引发激烈的争论。

Haas 提到,PostgreSQL 11 在分区方面取得了巨大的进步,而其中一些改进对分片十分有利,这个消息非常重要。特别是,哈希分区(hash partitioning)对于将数据平均分配到一组远程服务器非常有用,而分区智能聚合(partition-wise aggregate)使得 PostgreSQL 10 中添加的聚合运算下推功能可与分区表一起使用。

最后,Robert Haas 表示对于 PostgreSQL 内置分片功能抱有极大的希望,期待未来的发展。

官宣正式成为 PostgreSQL Contributor,Richard 有何秘诀?


作为世界上最受欢迎的开源数据库之一,PostgreSQL 国际社区于2024年3月上旬正式公布了新加入的 PostgreSQL Contributor 名单,以认可为 PostgreSQL 开源项目做出实质性、长期贡献的人员。本次公布的名单中包括 3 名 Contributor 和 6 名 Major Contributor。

拓数派技术专家 Richard Guo 本次荣获 PostgreSQL 官方认可,正式成为一名 PostgreSQL Contributor。据统计,Richard 是目前 PostgreSQL Contributor 名单中唯二的中国人。众所周知,PostgreSQL 全球的 Committer 人数长期维持在较少的人数(约 30 人),Contributor 名单中也罕见中国人身影。本次 Richard 被官方认可为正式的 Contributor,这一荣誉既归功于他所在的拓数派公司开放创新企业文化和强大的技术能力,也得益于 Richard 对开源技术的喜爱与坚持不懈的努力。接下来,拓数派的吉祥物 “派派” 将对话 Richard,为大家揭开成为 PostgreSQL Contributor 的秘诀。

派派:您是如何开始参与开源代码贡献的?有什么特别的经历或项目激发了您对开源贡献的兴趣?

Richard:我参与的第一个开源项目是早在 2012 年,当时由于工作原因,我参与了 Linux Kernel 的开发工作,开始对开源代码贡献产生了兴趣。2016 年,由于机缘巧合,我加入了 Pivotal 的开源数据库产品 Greenplum 团队,进行 Greenplum 开源产品的开发工作。由于 Greenplum 是基于 PostgreSQL 内核研发的,于是当时也开始了对 PostgreSQL 开源社区的关注,并开始了对 PostgreSQL 的贡献。如今加入拓数派之后,由于工作需求,也很幸运公司具有拥抱开源的文化,我也在继续参与 PostgreSQL 社区的开源工作。

派派:您认为自己主要在哪些方面对 PostgreSQL 做出了贡献或改进?这些改进对于整个 PostgreSQL 社区有何影响?

Richard:在 PostgreSQL 的代码贡献中,我主要专注于 PostgreSQL 优化器和执行器模块,这也为我后续打造拓数派产品 PieCloudDB 的优化器奠定了基础。在 PostgreSQL 社区,我对代码优化和性能调优花费了不少时间进行研究,参与了一些 Bug Fix 和 Patch  Review 工作,为用户提供更好的体验。我还努力推动新功能的实现,提交过一些新 Feature。曾经提交的新 Feature 包括 "Support Right Anti Join"、"Support Memoize for UNION ALL Queries" 等。

派派:您平时通过什么来提高的自己技术能力?有哪些技术或领域是您特别关注和学习的?

Richard:我一直坚信“实践出真知”,通过多阅读优秀的代码,多思考其中的逻辑和原理,然后在工作中提高对自己代码的质量要求是我认为最快打磨技术能力的一种方式。此外,所谓“三人行,必有我师”,通过多和资深的人交流、讨论,往往能学习到很多意想不到的知识。除了数据库的优化器和执行模块相关的领域,我对 AI 也非常感兴趣,包括数据库与 AI 的结合,以及 Chatgpt,Sora 等前沿生成式 AI 应用,我都非常关注。

派派:对于那些希望成为开源代码贡献者的人来说,您有什么建议或指导?

Richard:在参与开源代码贡献前,对源码的熟悉和了解是前提条件。此外我意识到专注是非常重要的,因此我付出了许多努力来保持专注。举例来说,我尽量减少手机使用时间,关闭聊天工具等,目前我已成功将每天使用手机的时间控制在 1 小时以内。同时也建议大家注重思考和讨论,以不断迭代自己的思维和逻辑,我相信这也是非常重要的。通过积极思考和与他人交流,才能不断提升自己。