GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

从 0 到 1 的 PostgreSQL 转型之路

2016 年 10 月 19 日

PostgreSQL 和 Oracle 都是面向企业的高级数据库,在设计理念、使用方法、功能等各方面有非常多的相通点。那么作为一名有着多年 Oracle 数据库运维经验的工程师,如何快速的从零开始来了解并熟练掌握 PostgreSQL 呢,完成华丽丽的转型?

本次,我们采访到了即将在 Postgres 中国用户 2016 大会上作分享的阿里云架构师 曾文旌,请他来讲讲自身的工作经历,以及在 PostgresSQL 上的研究心得。

InfoQ:目前 PostgreSQL 数据库在阿里的使用场景有哪些?

曾文旌:在阿里有很多内部应用在使用 PostgreSQL。交易类型的应用或分析型的都有。有的应用使用 Oracle ,应用中有较多的存储过程,只能选择 PostgreSQL 去 O,项目周期才能达到预期。有的应用主体是交易型场景,兼顾部分分型业务,选用 PostgreSQL 很好的满足各类需求,切成相对低。

当然 LBS 相关的应用使用 PostgreSQL 和 PostGIS 也是首选。数据量从几十 GB 到几个 T 的库都有,PostgreSQL 服务相当稳定,应用上线后很少出现问题。

InfoQ:如何利用 PostgreSQL 结合阿里自身的数据同步产品,实现异构数据库的数据同步?

曾文旌:阿里自身的数据同步产品:

  1. DTS 已经支持了 PostgreSQL 和 PPAS。未来还会支持 Greenplum。
  2. CDP 可以把很多分析型数据产品中的数据同步到 PostgreSQL PPAS 和 Greenplum。
  3. dbsync 工具集,包括 mysql2pgsql 和 pgsql2pgsql 我们团队开发的数据同步工具,已经开源。

InfoQ:您之前在传统企业做数据库相关的工作,到现在在阿里云做云相关的工作,经历了什么?有什么经验心得可以分享吗?

曾文旌:我是从数据库内核开发干起的,在之前的公司接触了很多异构数据迁移的案例,例如从 Oracle 迁移到其他数据库的情况。在阿里做过一段时间的 DBA,这段时间做了比较多内部的业务。有部分业务之前是使用 Oracle 的,有去 O 需求。现在在阿里云做内核开发和服务,接触到类似需求的客户就更多了。

关系数据库的理论已经相当成熟,Oracle 和 PostgreSQL 都是该理论的比较完整的实现。Oracle 产品化程度高一些,PostgreSQL 这几年的发展非常的快,性能可靠性都完全没问题。接触过一段时间的 Oracle 的同学再上手 PostgreSQL 是非常快的。大家碰到问题多相互交流,相信会提高得很快。

InfoQ:阿里云同时也在使用关系型数据库 MySQL,它和开源的 PostgreSQL 数据库是怎样配合运行的?做了哪些优化措施?

曾文旌:MySQL 有很多独到的优势,互联网企业大都选择他,同时 PostgreSQL 也有自己独到的地方。有些应用同时使用 MySQL 和 PostgreSQL,他们把不同的数据存放在处理这类数据有优势的关系数据库服务中。再通过 CDP 这类服务把数据同步到 Greenplum 这样的分析性产品中产生报表。

我们在里面做了很多优化:

  1. PostgreSQL 不仅接入了阿里的内部开发平台 IDB。集团的业务开发可以像使用 MySQL 那样使用 PostgreSQL。他们用这个平台申请 PostgreSQL,发布 DDL 等等,用户习惯完全保留。
  2. 打通了不同的数据库产品间的数据通道。数据能很顺利的进入 PostgreSQL 和从 PostgreSQL 取走。
  3. 监控平台也完全接入 PostgreSQL,数据库的任何异常都会通知到 DBA 和业务方。
  4. PostgreSQL 内核做了安全加固,IO 优化,强化了资源隔离,用户完全不会感到实例一会快一会慢。

InfoQ:您负责阿里集团 PostgreSQL 相关业务和阿里云 RDS for PostgreSQL 运维,大客户上云护航等工作,这期间遇到过哪些技术上的坑?有什么解决方案?

曾文旌:我们在给出方案和实施方案的过程中碰到的问题大多不是技术方面的,我想表达下面几点:

  1. 目前 PostgreSQL 的成熟程度已经能覆盖绝大多数场景。很多之前在 Oracle 的应用迁移到 PostgreSQL 一样稳定,使用同等的硬件满足之前的业务。省掉了之前昂贵的 lincense 和服务费。
  2. 在云上使用 PostgreSQL 更具优势,我们了解硬件和操作系统,对数据库内核更可控。之前需要付出的多维的成本一定比云上的服务费用高。
  3. 就遇到的问题,我举个例子,比较具有普遍性:一个云上的用户使用 PostgreSQL 上线了一个新业务,他发现性能很差。他立即通过工单给我们反馈,我排查发现了几个慢 SQL。用户反馈之前应用跑在 Oracle 上是没问题的,在 PostgreSQL 上创建了和之前完全相同的索引,但还是慢,是不是 PostgreSQL 不行?根据用户的描述,我很快建议用户创建了几个辅助索引,之前的慢 SQL 马上变得飞快。别着急,还没完,再跟用户深入交流,发现他是 Oracle DBA,不太熟悉怎么优化 PostgreSQL 的索引,甚至不太明白 PostgreSQL 上的查询计划一些细节字段表达的意思。由于关系数据库相关的理论的是通用的,稍微理清几个概念,再给出几个调优参数,这位 DBA 很快优化掉了现在数据库中其他几个稍微慢一些的 SQL 语句,整个应用响应时间完全符合预期。用户表示 PostgreSQL 很好很强大,对它的信心大增。
  4. 过去一段时间在阿里内部和云上接触了大量的用户,比我来阿里之前接触的总和还多。这总分证明了云计算的魅力。同时也希望我们专业发服务能更多的帮助到大家,大家的业务飞速增长的同时,后端数据库也完全能够应对。

InfoQ:感谢曾文老师接受采访,也祝愿 2016 PostgreSQL 大象会举办成功!感兴趣的读者可以点击 PostgreSQL 大象会的报名页面,了解更多详情!

关于受访者:

**曾文旌,** 毕业于人民大学,从事数据库内核开发和运维工作近 10 年。深入理解关系数据库理论和实现。熟悉关系数据库在传统领域和互联网的应用。擅长数据库内核开发、SQL 查询优化、数据库调优。目前在阿里云,从事阿里云 PostgreSQL、PPAS、Greenplum 等产品的内核开发和服务等工作。

2016 年 10 月 19 日 17:022259
用户头像

发布了 97 篇内容, 共 32.3 次阅读, 收获喜欢 89 次。

关注

评论

发布
暂无评论
发现更多内容

阿里P8大牛手写的源码笔记:Java集合+Java多线程+MyBatis+Spring

Java成神之路

Java spring 面试 多线程 mybatis源码

Mysql学习笔记:InnoDB索引结构浅析

马迪奥

MySQL 索引结构 innodb

彻底理解JavaScript执行上下文

Walker

Java 前端 this指针 函数执行

python——深入类和对象

菜鸟小sailor 🐕

设计模式只是一把锤子

博文视点Broadview

读书笔记 编程 面向对象 设计模式

区块链交易系统开发,期货合约平台搭建

13823153121

用Go-Guardian写一个Golang的可扩展的身份认证

朱亚光

go golang 微服务 身份认证

我敢说,这个版本的斗地主你肯定没玩过?

华为云开发者社区

命令行 游戏 斗地主

区块链合约层是一种自动执行的数字协议

CECBC区块链专委会

区块链 智能合约

如何让知识图谱告诉你“故障根因”

华为云开发者社区

华为云 知识图谱 图谱

开源决策树工具xDecision简介

赫杰辉

决策树 可视化 简化代码

如何正确设置Java.home

谷鱼

音乐创作者必备软件,轻松玩转原创

奈奈的杂社

音乐制作 编曲 电音 作曲 乐团

端-边-云全面协同创新 英特尔携手百度共推产业智能化升级

商业资讯

阿里P9技术专家:Java程序员这些必备技能的进阶书籍一定要读一读

Java成神之路

Java 学习 程序员 面试

云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心

华为云开发者社区

gpu caffe

Mysql学习笔记:分库分表(sharding)

马迪奥

MySQL Sharding

牛批!清华毕业的Java大牛用一个坦克大战游戏项目来演示设计模式

Java成神之路

Java 学习 编程 程序员 设计模式

一次代码评审,差点过不了试用期!

小傅哥

Java 小傅哥 代码质量 代码优化 代码规范

所见即所得的用户增长技术背后是如何实现的

海豚调度

用户增长 大数据技术 大数据架构 用户增长技术 ad-hoc技术

架构师期末作业

傻傻的帅

区块链技术与我们的生活将并存

CECBC区块链专委会

区块链 数字经济

数字货币合约跟单系统开发app,跟单系统搭建源码

WX13823153201

解Bug之路-记一次JVM堆外内存泄露Bug的查找

无毁的湖光

Linux JVM heap memory GC Linux Kenel

区块链技术最重要价值所在

CECBC区块链专委会

区块链 数字经济 互联网革命

知识点总结

Acker飏

不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

海星

@所有人 Flink Forward Asia 2020 向您发出议题征集邀请!

Apache Flink

flink

拥抱K8S系列-07-部署K8S集群(Rancher)

张无忌

Kubernetes rancher

两年Java工作经验涨到23K,这究竟是怎么做到的?

Java架构师迁哥

SpringBoot写后端接口,看这一篇就够了!

华为云开发者社区

后端 swagger pringboot

从0到1的PostgreSQL转型之路-InfoQ