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

窦贤明认为, 支持类型、功能和语法丰富,性能优良

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

想和这些大咖面对面聊PG吗?点击这里>>>免费报名

正文:

和大部分人一样,窦贤明也是被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官方介绍:

https://www.aliyun.com/product/gpdb

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

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

时间: 2024-11-07 18:23:27

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

2015阿里校招研发工程师笔试题

1.C++内存分配中说法错误的是() A 对于栈来说,生长方向是向上的,也就是向着内存地址增加的方向 //错,对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向:对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长. B 对于堆 ,大量的new/delete操作会造成内存空间不连续 //对,对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低.对于栈来讲,则不会存在这个问题,因为 //栈是先进后出的队列,他们是如此的一一对应,以至

在MySQL和PostgreSQL之外,为什么阿里要研发HybridDB数据库?

http://www.infoq.com/cn/news/2016/12/MySQL-PostgreSQL-Greenplum 编者按 在大数据火遍IT界之前,大家对数据信息的挖掘通常聚焦在BI(Business Intelligence)之上.BI具有着明确的分析需求,清晰地知道需要处理哪些信息,并且如何最终获得多维度的SQL类型数据,这种多维度的分析对应的是OLAP处理技术.在实际商业分析应用中,公司复杂信息模型.多样化的分析需求会给数据库带来极大的技术挑战. 对于阿里而言,实现OLAP.进

资深后台研发工程师(转)

资深后台研发工程师 岗位职责: 1.负责搭建平台网络架构及技术架构: 2.把握平台开发方向和技术路线,解决关键技术问题: 3.负责与战略客户.合作伙伴的方案讨论,技术交流以及开发管理: 4.负责参与项目启动.项目计划.项目选型.项目实施.项目验收及项目内部总结等相关工作: 5.参与公司其它技术问题讨论与决策: 6.公司交办的其他事项. 任职要求: 1.5年以上互联网产品研发经验: 2.精通J2EE相关技术,编程基础扎实,熟悉io.多线程.集合等基础框架: 3.熟悉Spring, Spring M

阿里资深工程师分享支付宝热补丁技术—— AndFix原理

本文由嵌入式企鹅圈原创团队成员.阿里资深工程师Hao分享. 上次我们介绍了用dexposed方案实施热补丁的原理,它本质上就是hook要修改的函数,这样一来在正式版本发布时就不能直接拿热补丁的代码集成进去了,因为热补丁是按hook的思路,并且按照实现XC_MethodReplacement类的方式写的,正式的补丁还需要重新包装一边.更重要的是dexposed对art的支持并不好,大大限制了它的使用范围. 今天我们介绍的是AndFix方案:https://github.com/alibaba/An

2015年阿里实习生面试Java研发工程师 小记

5月5日,广州,阿里实习生面试,Java研发工程师,完全被虐orz 几乎没有Java项目开发经验,接近零基础,去水了一发,毫无悬念的被刷了..RP也是杠杠的,准备过的题目一个都没被问到,算法题也是一条也没出orz,面试官貌似不知ACM是何物,GG了..不过这次面试收获还是挺大的.. 面试前: 出地铁的时候感觉每个年轻人都是去阿里面试的,快到酒店的时候此感更强烈,果然上电梯的时候就认识了两个从湖南过来面阿里的大三师兄,一个产品一个安卓开发,都好厉害,安卓开发的还已经拿了两个offer,其中一个是小

蚂蚁金服财富技术部,诚招Java研发工程师。校招内推!!!

蚂蚁金服财富技术部,诚招Java研发工程师. 团队是蚂蚁金服财富技术部核心团队,支持亿级互联网交易清算,在这里不仅能学习到先进的互联网技术,也能了解许多终身受益的金融知识. 内推对象 2020届毕业生(毕业时间为2020.1.1-2020.12.31) 杭州.上海.北京 三地可选 内推方式: 1.微信打开链接,自助内推 蚂蚁金服财富BU内推链接:https://alibaba.tupu360.com/campusActivity/getActivityInfo?activityCode=62hV

专访阿里中间件高级专家沈询

http://www.itpub.net/thread-1904562-1-1.html 大家好,我是主持人皮皮,欢迎做客第118期IT名人堂.从进入淘宝的六年时间里,他一直在努力的坚持着把阿里的DRDS做得更好:在六年的时间里,他从只会用SQL写点简单逻辑的数据库新手慢慢成长为一名分布式数据库领域的老手:那么阿里云的DRDS究竟是什么样的神器?作为阿里核心的中间件又是如何演变成“多点开花”的盛世?它们又是如何为阿里的双11大战保驾护航的呢?本期名人堂我们邀请到了阿里资深专家沈洵坐镇,为我们揭晓

联想北研实习生面试-嵌入式Linux研发工程师

8月中旬暑假去联想北研参加了实习生面试,面试职位是嵌入式Linux研发工程师.投完简历第二天,主管回复我邮件,意思是说随时来面试,到北研时候给他打个电话就行.于是我回复条短信表示感谢,并约好时间第二天上午9点半到. 进入北研里面,感觉环境还可以,绿绿的,还有水.赶紧打听B座在哪里,一会儿主管把我带上3楼一个临时小桌子休息的地方.面试开始. 首先,是自我介绍.我先拿出一份简历给他,然后自己说了2分钟左右,没一点啰嗦.然后他问了我项目的事,因为之前做过软件的项目,负责了很多工作,他也没问特仔细,就说

Web前端研发工程师编程能力飞升之路

今天看到这篇文章.写的非常有意思,于是转载了.看看我们都处于什么的阶段. [背景] 如果你是刚进入web前端研发领域,想试试这潭水有多深,看这篇文章吧:如果你是做了两三年web产品前端研发,迷茫找不着提高之路,看这篇文章吧:如果你是四五年的前端开发高手,没有难题能难得住你的寂寞高手,来看这篇文章吧: web前端研发工程师,在国内是一个朝阳职业,自07-08年正式有这个职业以来,也不过三四年的时间.这个领域没有学校的正规教育,没有行内成体系的理论指引,几乎所有从事这个职业的人都是靠自己自学成才.自