zoukankan      html  css  js  c++  java
  • 专访阿里资深研发工程师窦贤明: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
  • 相关阅读:
    mysql修改数据表名
    HDU 5742 It's All In The Mind (贪心)
    HDU 5752 Sqrt Bo (数论)
    HDU 5753 Permutation Bo (推导 or 打表找规律)
    HDU 5762 Teacher Bo (暴力)
    HDU 5754 Life Winner Bo (博弈)
    CodeForces 455C Civilization (并查集+树的直径)
    CodeForces 455B A Lot of Games (博弈论)
    CodeForces 455A Boredom (DP)
    HDU 4861 Couple doubi (数论 or 打表找规律)
  • 原文地址:https://www.cnblogs.com/aliyunblogs/p/5853310.html
Copyright © 2011-2022 走看看