专访阿里资深研发工程师窦贤明:PG与商业数据库差距并不明显

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 在同台机器未做任何优化的情况下测试TPCC,PG与商业数据库的差距并不明显。如果不是极端或特殊的应用场景,性能上差距是比较小的,“这还是原生的,不算我们内部做的性能优化。”他指出。
导语:窦贤明,花名执白,阿里资深研发工程师,参与过PostgreSQL与Greenplum的内核源码维护、开发,以及云上自动化服务之类的工作。
 
908e2899872c6186fac5a5045a75d606d28d81f4
窦贤明认为, 支持类型、功能和语法丰富,性能优良

9月24日,窦贤明将参加在北京举办的线下活动,并做主题为《Greenplum分片案例分析》的分享。值此,他分享了PG、工作上的一些经历和经验。

9月24日 开源数据库企业应用实践 PostgreSQL、 Greenplum专场培训, 点击这里>>> 免费报名
 
正文:
 
和大部分人一样,窦贤明也是被PG吸引过去的。有点特别的是,他之前完全不是做数据库的,“云计算刚刚兴起,分布式方兴未艾时,我一头扎了进去。”而和PG的结缘,也很巧合,“后来分布式数据库有紧急的工作需要去支持一下,然后就接触到了PostgreSQL。”
 
“接触之后发现,代码看起来挺漂亮的嘛,挺像我处女座的风格,然后玩着玩着就进来了。” 窦贤明对PG很是有感觉。
 
而后,他加入阿里,彻底扑入PG的怀抱,负责ApsaraDB For PostgreSQL / Greenplum的内核源码开发与维护工作。
 
这份工作挑战挺多。比如某个特性本来在正常环境没什么问题的,但在云环境中就出问题了;比如针对云环境的优化之外,客户群体的复杂性也带来更高的自动化程度的要求;再者,就是功能上的需求和问题的修复。
 
解决各种挑战的背后,也加深了对PG的认识,积累下许多经验。比如对“为什么CPU满了?”、“为什么IO又满了?”、“为什么执行时间变长了?”等问题的认识,他说,这类问题的原因有很多,除了一些特殊场景以外,大部分是可以通过某些方法去解决的,比如索引、冗余数据的清理等。
 
对于PG性能,窦贤明说,在同台机器未做任何优化的情况下测试TPCC,PG与商业数据库的差距并不明显。如果不是极端或特殊的应用场景,性能上差距是比较小的,“这还是原生的,不算我们内部做的性能优化。”他指出。
 
对于9月24日PG线下的活动,这个直率的专家说:“希望大家能够玩得开心、能给大家带一点帮助就好。”
 
当然,他也讲述了ApsaraDB For PostgreSQL / Greenplum的内核源码开发与维护工作中的挑战是如何应对的、这位资深工程师眼中的PG究竟什么样……等等。

更为具体的内容,请查看以下完整采访:

云栖社区:请介绍下你以及所从事的工作

窦贤明:我是窦贤明,研发工程师一枚。现在在阿里云数据库内核服务组里,参与PostgreSQL与Greenplum的内核源码维护、开发,以及云上自动化服务之类的工作。最近我们刚刚完成了Greenplum在云上的部署,大家可以很方便地来把玩一下,而不用自己费心费力地去搭建。

云栖社区:说说你和PG结缘的过程

窦贤明:我之前不是做数据库的,主要接触内核、驱动、文件系统之类的东西。在几年前,到了一家公司做分布式存储。那个时候云计算刚刚兴起,分布式方兴未艾,有大行其道之势,于是就一头扎了进去。到了之后,分布式数据库这边有些紧急的工作需要我去支持一下,然后就接触到了PostgreSQL。接触之后发现,代码看起来挺漂亮的嘛,挺像我处女座的风格,然后玩着玩着就进来了。

后来就到了阿里这边专门搞这个,还挺巧合的。

云栖社区:你在做ApsaraDB For PostgreSQL / Greenplum的内核源码开发与维护工作中,有没有遇到什么挑战?都是如何解决的?

窦贤明:其实挑战还是挺多的,尤其是我们所支持的云计算环境中。比如某个特性本来在正常环境没什么问题的,但在云环境中就出问题了。这个对我们来说是出现比较多的挑战的地方,需要针对云环境做很多内核上的定制和优化。

除了针对云环境的优化之外,客户群体的复杂性也带来更高的自动化程度的要求。因为不可能人去一个个解决客户的问题,那么如何把这些客户的问题通过自动化来解,是挑战我们去做的事情。

再者,就是功能上的需求和问题的修复。虽说“No silver bullet”,但对于我们客户来讲都是希望功能尽量去完善;另外一个就是内核本身会有一些问题,不管是Bug也好还是设计上、实现上的问题,这些都是要我们团队去处理的。

云栖社区:你还为云数据库的良好运行保驾护航,保障用户在云数据库上的良好体验,能否介绍下当前用户遇到的最常见的问题,以及原因是什么?

窦贤明:在我接触到的问题当中,除了比较特别的使用上的问题外,我们遇到比较多的是性能问题。经常会被问到形如“为什么CPU满了?”、“为什么IO又满了?”、“为什么执行时间变长了?”之类的问题。这类问题的原因有很多,除了一些特殊场景以外,大部分是可以通过某些方法去解决的,比如索引、冗余数据的清理等。

但因为面向的云上客户群体比较复杂一点,对PG和数据库的熟悉程度多少有别,在针对这种问题方面我们团队也是花了很多精力去做这个事情。比如数据库的一键诊断,给用户一个诊断报告,用户看了之后对自己数据库的情况就一目了然了,哪条SQL该怎么做之类的。目前我们收到了比较多的正面评价。

云栖社区:你眼中的PG是什么样的,请谈谈它的优缺点

窦贤明:很多人有一个相对比较一致的看法,认为PG属于比较学院派的。从实现上来讲,PG的代码实现上可圈可点、比较规范,符合数据库原理,甚至可以作为教学范例来看。包括其实现上模块的划分、运行时的架构设计、ACID的实现和用法上权限的设计、SQL标准的支持、数据类型的支持等方面,都是比较中规中矩的,所以第一个关键字就是标准。

第二个是丰富,丰富主要体现在两个方面:

1.支持的类型方面:PG支持非常丰富的数据类型,除了常见的数据类型外,还支持包括JSON、GIS(geography和geometry)、XML、枚举、二进制等,甚至还有数组类型(对,你没看错,就是与编程语言中很相近的数组类型,你肯定懂我在说什么)。除此之外,还可以自己定制类型,比如IP等;同时定制类型的相关操作,比如avg、sum等,而且是强类型。可能大家平常数据库用的比较随意,会比较喜欢弱类型或者自动类型转换,但这个其实有代价的,在云上我们就遇到过很多类似的问题。对于数据库数据类型的合理使用,应该是应用开发者和DBA的必修课,可以带来很多收益。

2.功能和语法的丰富:语法的丰富很好解释,PG支持几乎所有的SQL标准,而且在语法实现上也很规范,这意味着友好和健壮。再加上其所支持的丰富的函数和存储过程语言(你可以用SQL、C、Python、Java、Perl等来写存储过程),这意味着PG可以适应各种各样的功能需求。PostgreSQL天然地具有非常良好的扩展性,依托于PG的插件,你可以很容易地添加或者去除相应的功能。而且,在PG生态里,很多比较牛逼闪闪的功能都是插件所提供的,并且不是内核维护者来开发的。这意味着,你完全可以依据自己的需求做任意的定制。而且我了解的DBA中,很多都具有不错的开发能力,以定制功能需求。

3.优良的性能。我们内部做过一些测试对比,但这里不是太方便公布,只能大概地说,在同台机器上未做任何优化的情况下测试TPCC,PG与商业数据库的差距并不明显。如果不是极端或特殊的应用场景,性能上差距是比较小的,这还是原生的,不算我们内部做的性能优化。

不过也有几个缼点:

第一个是知道的人太少了,生态比较脆弱。很多朋友抱怨找不到PG的DBA,想用,而又不敢用。生态脆弱也就导致中文资料比较匮乏,又导致大家学习成本的上升,从而没有形成正循环。而这个是我们一直在努力的,希望能够在云上让大家更方便、放心地使用PostgreSQL。

第二个就是PostgreSQL因为MVCC实现机制的原因,在特殊场景的使用和处理上对使用者有一定能力的要求。虽然现在常规场景也是即开即用,但出了问题,部分用户没有能够Hold住的能力——当然这个也与前面所说的生态有关系。对于这个问题,我们也在想办法处理,尽量地消除大家的后顾之忧,比如我们的数据库一键诊断和专家服务就是专门针对这类客户的。

云栖社区:本期线下活动,你将分享什么议题?对与会者,有什么寄语?

窦贤明:分享的主题是《Greenplum分片案例分析》:通过简单的内核上的分析,给大家介绍一下GP的分片上的用法,和在云上如何快速的把玩起来。

没啥寄语,希望大家能够玩得开心、能给大家带一点帮助就好。

相关阅读:

阿里云Greenplum官方介绍:

阿里云PostgreSQL官方介绍: https://www.aliyun.com/product/rds/postgresql

阿里云PPAS官方介绍: https://www.aliyun.com/product/rds/ppas

TB19yMiNXXXXXcAaXXXXXXXXXXX-908-100.jpg
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
6月前
|
关系型数据库 数据库连接 数据库
Python执行PG数据库查询语句:以Markdown格式打印查询结果
使用Python的`psycopg2`和`pandas`库与PostgreSQL交互,执行查询并以Markdown格式打印结果。首先确保安装所需库:`pip install psycopg2 pandas`。接着建立数据库连接,执行查询,将查询结果转换为DataFrame,再用`tabulate`库将DataFrame格式化为Markdown。代码示例包括连接函数、查询函数、转换和打印函数。最后限制列宽以适应输出。
|
7月前
|
监控 Cloud Native 大数据
即刻预约|阿里云数据库 SelectDB 版商业化发布会,5月21日14:00与您相约
2024年5月2日14:00,阿里云数据库 SelectDB 版商业化产品发布会将于线上重磅举行,即刻开启预约!👇 直播地址:https://developer.aliyun.com/special/selectdb?utm_content=g_1000393528
824 0
即刻预约|阿里云数据库 SelectDB 版商业化发布会,5月21日14:00与您相约
|
3月前
|
存储 关系型数据库 MySQL
【阿里规约】阿里开发手册解读——数据库和ORM篇
从命名规范、建表规范、查询规范、索引规范、操作规范等角度出发,详细阐述MySQL数据库使用过程中所需要遵循的各种规范。
【阿里规约】阿里开发手册解读——数据库和ORM篇
|
5月前
|
关系型数据库 Java 数据库
实时计算 Flink版操作报错合集之flinksql采PG数据库时报错,该如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7月前
|
存储 SQL Cloud Native
阿里云数据库 SelectDB 版全面商业化!开启现代化实时数据仓库的全新篇章
2024 年 5 月 21 日,由阿里云联合飞轮科技共同举办的「阿里云数据库 SelectDB 版商业化产品发布会」于线上召开。阿里巴巴集团副总裁、阿里云数据库产品事业部负责人李飞飞宣布,阿里云数据库 SelectDB 版在中国站及国际站全面发布,正式开启商业化的全新篇章!
阿里云数据库 SelectDB 版全面商业化!开启现代化实时数据仓库的全新篇章
|
7月前
|
SQL 存储 大数据
济南sql数据库工程师
济南SQL数据库工程师是负责管理和维护SQL数据库的专业人员。以下是关于济南SQL数据库工程师的一些详细介绍: 一、岗位职责 1. 负责数据库日常巡检,及时反馈运行状况,并跟踪解决问题,确
73 21
|
5月前
数据库系统工程师考点笔记
数据库系统工程师考点笔记
472 0
|
5月前
|
编解码 算法 vr&ar
软考中级之数据库系统工程师笔记总结(六)多媒体基础
软考中级之数据库系统工程师笔记总结(六)多媒体基础
34 0
|
5月前
|
网络协议 安全 网络安全
软考中级之数据库系统工程师笔记总结(五)网络基础
软考中级之数据库系统工程师笔记总结(五)网络基础
47 0
|
5月前
|
人工智能 数据管理 Java
软考中级之数据库系统工程师笔记总结(四)程序设计基础
软考中级之数据库系统工程师笔记总结(四)程序设计基础
33 0