张文升认为,PG无论在可靠性和性能方面都不输其它任何关系型数据库
张文升,探探DBA,负责探探的数据库架构、运维和调优的工作。拥有8年开发经验,曾任去哪儿网DBA。
9月24日,张文升将参加在北京举办的线下活动,分享PostgreSQL在互联网应用的一些经验。值此,他分享了个人的一些经历,以及对PG的一些看法。
正文:
初接触PG,“What?什么是PG?”一脸懵圈——张文升用时下比较流行的一个词儿形容当时的心情,而且他们的Team也是一身抵触情绪。但动手操作和实验一段时间后发现,PG是一个对开发者非常友好,并且稳定好用的关系型数据库,由此他开始迷上PG。
PostgreSQL非常棒,如何让更多人知道并使用它?仅仅开发基于PG的应用已经不能满足张文升的求知欲。他除了成为专业的基于PG技术售后技术支持外,还和一帮热爱PG的人,身体力行的推广着PostgreSQL在国内的使用。“我愿意和他们一样,为了自由和开源,贡献自己的一份绵薄之力。” 张文升说。
“网络上有很多文章,可能是年代太久远,也可能是其它原因,都认为PG只适合做OLAP,不适合在互联网的应用。数据分析是PostgreSQL的强项,多表join、丰富的FDW、窗口函数等在数据分析都有很大的优势,这一点毋庸置疑。事实上,做OLTP应用,PG无论在可靠性和性能方面都不输其它任何关系型数据库,包括商业和开源的关系型数据库。”为什么要分享PG在互联网应用,张文升在采访中如此说到。
“我想和大家说的是:PG在互联网应用中,同样跑的很欢畅。” 他用过去的事实进一步说明,“例如我的前东家去哪儿网,instegram等互联网公司都大规模的使用PG来支撑海量业务。”
对于上段时间Uber从PG切换为MySQL一事,张文升认为这只是一个很普通的商业公司的行为,但他也指出这是一个不负责任的行为,“Uber工程师把自己搞不定的问题归咎到数据库产品本身,会让很多业内人士错误的认为PostgreSQL很糟糕。”
“很有可能,过几年Uber工程师又会从MySQL迁移到其它数据库......” 他最后还打趣到。
更为具体的内容,请查看以下完整采访:
云栖社区:请介绍下你以及所从事的工作。
张文升:大家好,我叫张文升,曾任去哪儿网DBA,今年7月初加入探探,任探探的DBA。刚毕业工作时,我是从开发做起,也就是“程序猿”,做了近八年的开发之后转行做了DBA,那几年的开发经验,为我日后从事DBA打下了很好的基础,专门从事数据库的运维工作又有好几年了,时间不长也不短。
目前我的工作主要负责探探的数据库架构、运维和调优的工作。探探是一家不大的公司,目前只是C轮,我们的DBA团队也比较小,一共只有三个人,但是个小而精的团队,另外两名DBA同事都非常给力,我们相互学习,各司其职。
云栖社区:能聊聊你是如何和PG结缘的?
张文升:在从事开发的那几年,经常和各种数据库打交道,包括MS SQL
SERVER,ORACLE,自认为对数据库比较了解了。
大约是在2008年的时候,我当时所在的公司有一个某岛国的项目,这个项目在需求书上明确提出了使用PostgreSQL作为后端数据库......我很愿意用当下比较流行的一个词儿形容我当时的心情:“一脸懵圈”!What?什么是PostgreSQL?我们的Team也是一身的抵触情绪,为什么不用我们都最熟悉的ORACLE?但为了顺利的拿下项目,我还是硬着头皮,从Google搜索、下载、阅读文档,从零开始学习PostgreSQL。
说到这里,其实大多数开发都有过为了完成某个有特定需求的项目,短时间攻克一项陌生技术的经历,项目完成后,那项技术就抛在脑后了。但我花了几周的时间读PostgreSQL文档,动手操作和实验了一段时间之后,仿佛打开了一扇新的门,发现PostgreSQL是一个对开发者非常友好,并且稳定好用的关系型数据库;从商业层面讲,它还是BSD协议的,可以免费使用的开源数据库。
我开始尝试在大大小小的项目中开始用它,它的表现也从没有让我失望。慢慢的,我就迷上了PostgreSQL,仅仅开发基于PostgreSQL的应用已经不能满足我的求知欲。在几年以前,一个非常好的机会,我加入了EnterpriseDB(PostgreSQL的一个商业版本,也称为PPAS)中国区的一家公司,成为了专业的基于PostgreSQL技术的售后技术支持。
从此,我开始了我的PostgreSQL职业生涯,先后服务了多家使用PostgreSQL的企业。
云栖社区:你是如何从一名使用者,逐渐成为PG社区核心成员和志愿者的?
张文升:我身边有很多和我一样很喜欢PostgreSQL的朋友,我们经常一起讨论关于PostgreSQL的问题,几年以前我们经常会聊起一个相同的话题:PostgreSQL非常棒,我们如何让更多人知道和使用它?我慢慢的认识了目前我们PostgreSQL社区的主席萧少聪,以及上一任PostgreSQL社区主席李元佳,还有开源数据库圈赫赫有名的PG大学校长德歌。知道了其实有一帮人和我一样,热爱自由和开源,热爱PostgreSQL,并在身体力行的推广着PostgreSQL在国内的使用。我愿意和他们一样,为了自由和开源,贡献自己的一份绵薄之力。
云栖社区:作为拥有多年项目经验的开发者,你对哪个项目中应用PG的过程记忆深刻,为什么?
张文升:我不做开发已经有好几年了,很多的项目已经没有印象了。但是第一个使用PostgreSQL的项目依然记忆深刻。并不是用到了什么特殊的技巧,而是学习PostgreSQL的过程很奇妙,例如PostgreSQL 8.4之后Peter Eisentraut重新操刀的psql命令行:
哦...使用“\l“命令就可以列出实例中所有的Database了;
哦...使用“\watch
n”命令就可以像Linux的watch命令一样循环执行一条命了了,省去了写脚本的麻烦;
总之,各种大的小的惊喜。学习了PostgreSQL之后,也有了一条心得:对于自己不熟悉的数据库,亲自尝试并理解它的设计意图,深入之后会发现新的方法可能是更优解。
云栖社区:你是如何看待PG优劣的?
张文升:这个问题讨论的太多了,我不太想说太多了,几个关键词简单概括一下。PostgreSQL是BSD的开源关系型数据库,严格的事务支持,支持多种语言的存储过程、数据类型和索引类型丰富、PostGIS、ODL,即将发布的9.6中还有Parallel
execution,非常令人期待。当然,PostgreSQL也有不完善的地方,例如没有原生Partition等。
云栖社区:在PG运维上,是否有什么经验和大家分享下?
张文升:数据库是门很复杂的学问,每个数据库有各自的特点,PostgreSQL中国社区的很多同行在PostgreSQL的高可用、高性能上都积累了不少经验。如果大家感兴趣,可以去社区官方网站翻阅近几年大家在PG大会上贡献的话题的文档。
云栖社区:能否罗列下,在本次演讲中,你将会分享哪些点?另外,你有什么话想提前和与会者说吗?
张文升:这次话题我主要想分享PostgreSQL在互联网应用的一些经验。
网络上有很多文章,可能是年代太久远,也可能是其它原因,都认为PostgreSQL只适合做OLAP,不适合在互联网的应用。数据分析是PostgreSQL的强项,多表join、丰富的FDW、窗口函数等在数据分析都有很大的优势,这一点毋庸置疑。事实上,做OLTP应用,PostgreSQL无论在可靠性和性能方面都不输其它任何关系型数据库,包括商业和开源的关系型数据库。例如我的前东家去哪儿网,instegrem等等互联网公司都大规模的使用PostgreSQL来支撑海量业务。所以我想把我的PostgreSQL互联网实战经验与大家分享,算是抛砖引玉。我想和大家说的是:PostgreSQL在互联网应用中,同样跑的很欢畅。:-)
云栖社区:你对上段时间Uber从PG切换为MySQL一事怎么看?
张文升:关于Uber从PG切换为MySQL,前一段时间网络上炒得沸沸扬扬,我也仔细看过Uber工程师的文章,还有很多与Uber工程师不一样观点的文章,例如阿里云德哥对Uber从PG切换为MySQL的分析,《SQL Performance Explained》作者对此事件的分析,都非常中肯。
我对Uber这家公司不了解,个人认为Uber从PG切换到MySQL,只是一个很普通的商业公司的行为,例如换了leader、换了DBA...因为Uber在2013年也曾经从MySQL迁移到了PostgreSQL......,但是Uber工程师把自己搞不定的问题归咎到数据库产品本身,会让很多业内人士错误的认为PostgreSQL很糟糕。很不负责任的妄议一项技术,这一行为我认为非常不可取,而且,通常来说从MySQL到PostgreSQL的迁移成本会比较低,而从PostgreSQL到MySQL的迁移成本会比较高。
PostgreSQL有一个非常开放的技术社区,如果有问题不能解决,可以发送问题邮件到全球开发组织的邮件组,很快可以得到成千上万热心的hacker帮助。
很有可能,过几年Uber工程师又会从MySQL迁移到其它数据库......