窦贤明认为, 支持类型、功能和语法丰富,性能优良
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的分片上的用法,和在云上如何快速的把玩起来。
没啥寄语,希望大家能够玩得开心、能给大家带一点帮助就好。
相关阅读:
- 阿里Java研发工程师实习面经
十分幸运 拿到阿里云的offer,感谢周围无数人对我的支持和鼓励,所以写篇面经希望可以帮助大家. 面试中,运气占很大一部分的,所以你们若是没有通过,一定不要气馁,继续加油. 每个努力的人 都值得钦佩, ...
- 阿里Java研发工程师实习面经,附面试技巧
作者:如何进阿里 链接:https://www.nowcoder.com/discuss/72899?type=0&order=0&pos=17&page=1 来源:牛客网 前 ...
- 2017阿里C++研发工程师-校招-单词匹配
题目描述 给一个字符串, 然后给一个字典. 把字符串分解成字典里的单词组成的句子, 请输出所需空格最少的方案.并输出该方案. 样例 例如: 字符串为: str="ilikealibaba&q ...
- 2017阿里C++研发工程师-校招-笔试模拟
题目描述: 猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生00下一对小兔,之后开始每年都会生下一对小兔.生下的小兔又会以同样的方式继续繁殖. 兔子的寿命都是x(x>=3) ...
- 在MySQL和PostgreSQL之外,为什么阿里要研发HybridDB数据库?
http://www.infoq.com/cn/news/2016/12/MySQL-PostgreSQL-Greenplum 编者按 在大数据火遍IT界之前,大家对数据信息的挖掘通常聚焦在BI(Bu ...
- 阿里资深工程师分享支付宝热补丁技术—— AndFix原理
本文由嵌入式企鹅圈原创团队成员.阿里资深工程师Hao分享. 上次我们介绍了用dexposed方案实施热补丁的原理,它本质上就是hook要修改的函数,这样一来在正式版本发布时就不能直接拿热补丁的代码集成 ...
- 学生党如何拿到阿里技术offer: 《2016阿里巴巴校招内推offer之Java研发工程师(成功)》
摘要: 这篇文章字字珠玑,这位面试的学长并非计算机相关专业,但是其技术功底足以使很多计算机专业的学生汗颜,这篇文章值得我们仔细品读,其逻辑条理清晰,问题把握透彻,语言表达精炼,为我们提供了宝贵的学习经 ...
- 2015年阿里实习生面试Java研发工程师 小记
5月5日,广州,阿里实习生面试,Java研发工程师,完全被虐orz 几乎没有Java项目开发经验,接近零基础,去水了一发,毫无悬念的被刷了..RP也是杠杠的,准备过的题目一个都没被问到,算法题也是一条 ...
- 蚂蚁金服财富技术部,诚招Java研发工程师。校招内推!!!
蚂蚁金服财富技术部,诚招Java研发工程师. 团队是蚂蚁金服财富技术部核心团队,支持亿级互联网交易清算,在这里不仅能学习到先进的互联网技术,也能了解许多终身受益的金融知识. 内推对象 2020届毕业生 ...
随机推荐
- HTTP协议及WWW服务应用
一.用户访问网站的流程图 二.DNS解析的流程图 三.用户访问网站的基本流程原理阐述 ① 用户在浏览器中输入请求的地址回车 ② 先找本地的缓存和Hosts文件,有解析的对应IP直接返回个客户端IP地址 ...
- linux 可执行文件与写操作的同步问题
当一个可执行文件已经为write而open时,此时的可执行文件是不允许被执行的.反过来,一个文件正在执行时,它也是不允许同时被write模式而open的.这个约束很好理解,因为文件执行和文件被写应该需 ...
- RSNAKE 的 Slowloris DOS攻击工具初试
Slowloris 号称低带宽对服务器进行DDOS攻击 原理就是对WEB服务器发送 不完整的包并且以 单一 \r\n结尾,并不是 完整的HTTP包.造成WEB服务器堵塞达到最大连接数. 官网给出介绍 ...
- UBUNTU 安装中文语言包命令
本次在UBUNTU安装国外程序,需要中文包 才会是中文. apt-get install language-pack-zh-hans 解决.
- leetcode--539. Minimum Time Difference
Given a list of -hour clock time points in "Hour:Minutes" format, find the minimum minutes ...
- 关系型数据库MySQL主从同步-读写分离
1.环境准备 我的数据库版本是MySQL 5.6 MySQL主机至少两个实例,可以是多实例,可以是多台主机 关闭selinux,关闭防火墙等基础优化 2.安装 yum -y install make ...
- 几句话说说跨IDC分布式数据库Calvin
CalvinFS拿了FAST 15最佳论文:找到了失联十三年的小伙伴:年终/年初整理资料,发现做团委工作的 King 师兄对Calvin有兴趣:最近其他团队对分布式事务和存储问题/兴趣较多……几件事激 ...
- springboot-15-启动时加载数据的方法CommandLineRunner
有时需要爱项目启动时, 去加载一些配置文件什么的, 可以使用监听器的方式加载, 这是可以通过实现接口 CommandLineRunner来实现需求: Spring Boot应用程序在启动后,会遍历Co ...
- vue view 表单验证正常逻辑
<template> <Form ref="formInline" :model="formInline" :rules="rule ...
- redis集群与分片(2)-Redis Cluster集群的搭建与实践
Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...