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

 

908e2899872c6186fac5a5045a75d606d28d81f4
窦贤明认为, 支持类型、功能和语法丰富,性能优良
 
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官方介绍:
 
阿里云PostgreSQL官方介绍: https://www.aliyun.com/product/rds/postgresql
 
阿里云PPAS官方介绍: https://www.aliyun.com/product/rds/ppas
 
TB1tl2fNXXXXXaDXpXXXXXXXXXX-600-300.jpg
相关文章
相关标签/搜索