PostgreSQL 和 Oracle 都是面向企业的高级数据库,在设计理念、使用方法、功能等各方面有非常多的相通点。那么作为一名有着多年 Oracle 数据库运维经验的工程师,如何快速的从零开始来了解并熟练掌握 PostgreSQL 呢,完成华丽丽的转型?
本次,我们采访到了即将在 Postgres 中国用户 2016 大会上作分享的阿里云架构师 曾文旌,请他来讲讲自身的工作经历,以及在 PostgresSQL 上的研究心得。
InfoQ:目前 PostgreSQL 数据库在阿里的使用场景有哪些?
曾文旌:在阿里有很多内部应用在使用 PostgreSQL。交易类型的应用或分析型的都有。有的应用使用 Oracle ,应用中有较多的存储过程,只能选择 PostgreSQL 去 O,项目周期才能达到预期。有的应用主体是交易型场景,兼顾部分分型业务,选用 PostgreSQL 很好的满足各类需求,切成相对低。
当然 LBS 相关的应用使用 PostgreSQL 和 PostGIS 也是首选。数据量从几十 GB 到几个 T 的库都有,PostgreSQL 服务相当稳定,应用上线后很少出现问题。
InfoQ:如何利用 PostgreSQL 结合阿里自身的数据同步产品,实现异构数据库的数据同步?
曾文旌:阿里自身的数据同步产品:
- DTS 已经支持了 PostgreSQL 和 PPAS。未来还会支持 Greenplum。
- CDP 可以把很多分析型数据产品中的数据同步到 PostgreSQL PPAS 和 Greenplum。
- dbsync 工具集,包括 mysql2pgsql 和 pgsql2pgsql 我们团队开发的数据同步工具,已经开源。
InfoQ:您之前在传统企业做数据库相关的工作,到现在在阿里云做云相关的工作,经历了什么?有什么经验心得可以分享吗?
曾文旌:我是从数据库内核开发干起的,在之前的公司接触了很多异构数据迁移的案例,例如从 Oracle 迁移到其他数据库的情况。在阿里做过一段时间的 DBA,这段时间做了比较多内部的业务。有部分业务之前是使用 Oracle 的,有去 O 需求。现在在阿里云做内核开发和服务,接触到类似需求的客户就更多了。
关系数据库的理论已经相当成熟,Oracle 和 PostgreSQL 都是该理论的比较完整的实现。Oracle 产品化程度高一些,PostgreSQL 这几年的发展非常的快,性能可靠性都完全没问题。接触过一段时间的 Oracle 的同学再上手 PostgreSQL 是非常快的。大家碰到问题多相互交流,相信会提高得很快。
InfoQ:阿里云同时也在使用关系型数据库 MySQL,它和开源的 PostgreSQL 数据库是怎样配合运行的?做了哪些优化措施?
曾文旌:MySQL 有很多独到的优势,互联网企业大都选择他,同时 PostgreSQL 也有自己独到的地方。有些应用同时使用 MySQL 和 PostgreSQL,他们把不同的数据存放在处理这类数据有优势的关系数据库服务中。再通过 CDP 这类服务把数据同步到 Greenplum 这样的分析性产品中产生报表。
我们在里面做了很多优化:
- PostgreSQL 不仅接入了阿里的内部开发平台 IDB。集团的业务开发可以像使用 MySQL 那样使用 PostgreSQL。他们用这个平台申请 PostgreSQL,发布 DDL 等等,用户习惯完全保留。
- 打通了不同的数据库产品间的数据通道。数据能很顺利的进入 PostgreSQL 和从 PostgreSQL 取走。
- 监控平台也完全接入 PostgreSQL,数据库的任何异常都会通知到 DBA 和业务方。
- PostgreSQL 内核做了安全加固,IO 优化,强化了资源隔离,用户完全不会感到实例一会快一会慢。
InfoQ:您负责阿里集团 PostgreSQL 相关业务和阿里云 RDS for PostgreSQL 运维,大客户上云护航等工作,这期间遇到过哪些技术上的坑?有什么解决方案?
曾文旌:我们在给出方案和实施方案的过程中碰到的问题大多不是技术方面的,我想表达下面几点:
- 目前 PostgreSQL 的成熟程度已经能覆盖绝大多数场景。很多之前在 Oracle 的应用迁移到 PostgreSQL 一样稳定,使用同等的硬件满足之前的业务。省掉了之前昂贵的 lincense 和服务费。
- 在云上使用 PostgreSQL 更具优势,我们了解硬件和操作系统,对数据库内核更可控。之前需要付出的多维的成本一定比云上的服务费用高。
- 就遇到的问题,我举个例子,比较具有普遍性:一个云上的用户使用 PostgreSQL 上线了一个新业务,他发现性能很差。他立即通过工单给我们反馈,我排查发现了几个慢 SQL。用户反馈之前应用跑在 Oracle 上是没问题的,在 PostgreSQL 上创建了和之前完全相同的索引,但还是慢,是不是 PostgreSQL 不行?根据用户的描述,我很快建议用户创建了几个辅助索引,之前的慢 SQL 马上变得飞快。别着急,还没完,再跟用户深入交流,发现他是 Oracle DBA,不太熟悉怎么优化 PostgreSQL 的索引,甚至不太明白 PostgreSQL 上的查询计划一些细节字段表达的意思。由于关系数据库相关的理论的是通用的,稍微理清几个概念,再给出几个调优参数,这位 DBA 很快优化掉了现在数据库中其他几个稍微慢一些的 SQL 语句,整个应用响应时间完全符合预期。用户表示 PostgreSQL 很好很强大,对它的信心大增。
- 过去一段时间在阿里内部和云上接触了大量的用户,比我来阿里之前接触的总和还多。这总分证明了云计算的魅力。同时也希望我们专业发服务能更多的帮助到大家,大家的业务飞速增长的同时,后端数据库也完全能够应对。
InfoQ:感谢曾文旌老师接受采访,也祝愿 2016 PostgreSQL 大象会举办成功!感兴趣的读者可以点击 PostgreSQL 大象会的报名页面,了解更多详情!
关于受访者:
**曾文旌,** 毕业于人民大学,从事数据库内核开发和运维工作近 10 年。深入理解关系数据库理论和实现。熟悉关系数据库在传统领域和互联网的应用。擅长数据库内核开发、SQL 查询优化、数据库调优。目前在阿里云,从事阿里云 PostgreSQL、PPAS、Greenplum 等产品的内核开发和服务等工作。
评论