专访探探DBA张文升:PG在互联网应用中同样也跑的很欢畅

本文涉及的产品
RDS AI 助手,专业版
PolarClaw,2核4GB
RDSClaw,2核4GB
简介: 他是如何从一名路人变成一个使用者,并逐渐成为PG社区核心成员和志愿者的?对PG,张文升又有什么不一样的经验和看法?
d2a533c2c730e156ff4da35268e85b91f8ac9179
张文升认为,PG无论在可靠性和性能方面都不输其它任何关系型数据库

张文升,探探DBA,负责探探的数据库架构、运维和调优的工作。拥有8年开发经验,曾任去哪儿网DBA。

9月24日,张文升将参加在北京举办的线下活动,分享PostgreSQL在互联网应用的一些经验。值此,他分享了个人的一些经历,以及对PG的一些看法。
9月24日 开源数据库企业应用实践 PostgreSQL、 Greenplum专场培训, 点击这里>>> 免费报名
正文:

初接触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迁移到其它数据库......
TB19yMiNXXXXXcAaXXXXXXXXXXX-908-100.jpg
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
算法 关系型数据库 数据库
德哥的PostgreSQL私房菜 - 史上最屌PG资料合集
看完并理解这些文章,相信你会和我一样爱上PostgreSQL,并成为PostgreSQL的布道者。 沉稳的外表无法掩饰PG炙热的内心 。 扩展阅读,用心感受PostgreSQL 内核扩展 《找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南》https://yq.
59714 152
|
7月前
|
数据采集 缓存 监控
京东商品API技术对接手册(2025版)
本接口文档涵盖基础服务能力、核心接口规范、业务场景实现及开发者注意事项。包括请求性能、数据覆盖、同步机制、认证鉴权、流量控制等内容,适用于商品信息获取、价格监控、库存预警等场景,助力开发者高效对接系统。
|
监控 安全 测试技术
现在公司都在用的CI/CD框架到底是什么?
现在公司都在用的CI/CD框架到底是什么?
6876 1
|
供应链 搜索推荐 API
亚马逊商品列表数据接口(亚马逊 API 系列)
亚马逊的商品列表数据接口为电商从业者、数据分析人员和开发者提供了宝贵的市场洞察。通过该接口,用户可以批量获取商品的关键信息,包括基本信息、价格、销售排名和库存状态等,助力市场分析、竞品研究和商品推荐。开发者需在亚马逊开发者中心注册并申请API权限,使用安全凭证进行认证,支持HTTP/HTTPS协议的GET和POST请求。Python示例展示了如何调用接口获取商品列表,并解析响应数据。应用场景涵盖市场趋势分析、竞品对比、个性化推荐及库存管理,帮助商家优化策略,提升竞争力。
749 13
|
Kubernetes 架构师 Java
史上最全对照表:大厂P6/P7/P8 职业技能 薪资水平 成长路线
40岁老架构师尼恩,专注于帮助读者提升技术能力和职业发展。其读者群中,多位成员成功获得知名互联网企业的面试机会。尼恩不仅提供系统化的面试准备指导,还特别针对谈薪酬环节给予专业建议,助力求职者在与HR谈判时更加自信。此外,尼恩还分享了阿里巴巴的职级体系,作为行业内广泛认可的标准,帮助读者更好地理解各职级的要求和发展路径。通过尼恩的技术圣经系列PDF,如《尼恩Java面试宝典》等,读者可以进一步提升自身技术实力,应对职场挑战。关注“技术自由圈”公众号,获取更多资源。
|
Rust Ubuntu Linux
在Ubuntu中为ROG笔记本安装驱动asusctl
在Ubuntu中为ROG笔记本安装驱动asusctl
3407 0
在Ubuntu中为ROG笔记本安装驱动asusctl
Nest.js 实战 (十三):实现 SSE 服务端主动向客户端推送消息
这篇文章介绍了在Nest.js应用中使用Server-Sent Events (SSE)的技术。文章首先讨论了在特定业务场景下,为何选择SSE而不是WebSocket作为实时通信系统的实现方式。接着解释了SSE的概念,并展示了如何在Nest.js中实现SSE。文章包含客户端实现的代码示例,并以一个效果演示结束,总结SSE在Nest.js中的应用。
821 0
Nest.js 实战 (十三):实现 SSE 服务端主动向客户端推送消息
|
安全 Java API
gateway基本配置
【5月更文挑战第7天】API Gateway在微服务架构中起着关键作用,作为客户端与后端服务的统一入口,负责路由转发、安全控制和负载均衡。本文深入介绍了API Gateway的基本配置、常见问题、跨平台配置差异及避免错误的方法。内容包括路由和过滤器配置、动态路由、安全性配置、限流和熔断机制,以及自定义过滤器和服务降级策略。通过示例代码和实践指南,帮助读者理解和部署API Gateway。
1055 3
|
SQL 存储 分布式计算
Spark 3.0 对于 DATE 和 TIMESTAMP 的改进
本文将会深入介绍DATE和TIMESTAMP
Spark 3.0 对于 DATE 和 TIMESTAMP 的改进
|
SQL 缓存 关系型数据库
数据库连接池到底应该设多大?
数据库连接池到底应该设多大?
763 0

热门文章

最新文章

下一篇
开通oss服务