16
回答
【开源访谈】PostgreSQL 德哥:技术是为业务服务的
终于搞明白,存储TCO原来是这样算的>>>   

    作为世界先进的开源数据库,PostgreSQL 的市场占有率在不断提升,其在国内的发展,也越来越受到企业和用户的关注。和其它开源数据库相比,PostgreSQL 有哪些亮点和不足?已经发布测试版的 PostgreSQL 10 又有哪些新特性值得关注?本期【开源访谈】邀请到 PostgreSQL 中国社区发起人周正中(德哥),听听他对 PostgreSQL 的看法和期望,聊聊他与 PostgreSQL 结缘的那些事儿。

【本期嘉宾】

    digoal (德哥),现任职于阿里云数据库内核技术架构组。PostgreSQL 中国社区发起人之一、常委、兼任社区大学校长;PostgreSQL 中国社区杭州分会会长;PostgreSQL 中国社区大学发起人之一。也是中国开源软件推进联盟 PostgreSQL 分会特聘专家;DBA+ 社群联合发起人之一;DBGeeK 联盟专家团成员。14 项已授权数据库相关专利。

【访谈内容】

1、请简单地介绍一下您自己(技术背景、学习经历、工作经历)。

    大家好,我是 digoal ,目前就职于阿里云数据库内核技术架构组。我从 2006 年开始接触数据库,当时对 Oracle 比较痴迷,经常啃 Oracle 的英文文档到半夜。现学现卖,在当时非常流行的播布客在线教育平台进行了一些分享,逐渐养成了分享的习惯。2008 年我加入一家移动互联网公司-斯凯,当时公司处于起步阶段,人比较少,使用的数据库比较繁杂,包括 Oracle、MySQL、PostgreSQL、mongo 等众多主流的数据库。从 IDC、网络、主机、存储、操作系统、数据库到业务几乎什么都要接触,这种状况下非常历练人。也见证了斯凯从创业到纳斯达克上市的阶段,上市前顺利的完成了所有业务系统的 O 转 P 工作。负责数据库整体系统、存储、主机、操作系统、多 IDC 的架构设计和建设;完成对数据库HA、容灾、备份、恢复、分布式、数据仓库架构设计和建设;并建立了数据库管理和开发的标准化体系。也就是在斯凯,我接触到了 PostgreSQL ,它是一个非常开放,功能非常先进,社区非常的活跃,代码非常的优雅,产品非常的稳定的数据库,我很看好它。2011 年是 PostgreSQL 中国用户会成立的第一年,一群有情有义的年轻人,带着对 PostgreSQL 的执着和热情,开启了推动 PostgreSQL 在中国的技术普及和发展的新篇章。

    2015 年,我加入阿里云。我认为云计算是未来的方向,可以降低企业的成本,提高企业 IT 资源的伸缩性,让更多好的产品在云上触手可及。而且随着云计算的发展,物联网的兴起,数据库复杂计算需求的增多,数据模型越来越复杂,PostgreSQL 的普及会越来越快。现在已经有来自金融、电力、运输、新零售、政府、科研等行业龙头企业的核心数据库在使用 PostgreSQL 。

2、是因为什么接触和喜欢上 PostgreSQL 的?它最吸引你的地方是什么?

    入职斯凯后,因为工作需要,接触了 PostgreSQL 。但是真正喜欢上 PostgreSQL ,是因为它非常开放,功能非常先进,社区非常的活跃,代码非常的优雅,产品非常的稳定。最重要的是在 PostgreSQL 社区结识了一群有情有义的技术好基友。

    PostgreSQL 不仅仅是一个数据库,更是一个数据工厂,它可以通过 PL/language 对接软件生态;通过开放的类型、OP、IDX、AGG、WIN 等对接行业生态,支持各种行业(基因、化学、医疗、图像搜索等);通过开放的 FDW 接口,对接更多的外部数据源;通过 SCAN 接口对接硬件生态,例如 GPU\TPU\FPGA 等。

3、学习过程中是怎么一步步提高自己的技术能力的,有没有一些心得分享?

    从我的角度来给一些建议的话,主要有三点:

    一是仔细的阅读官方文档、看代码。多实践,证实自己的想法。多参与社区的交流,多帮助别人,多分享自己的想法。

    二是要有 GEEK 的理念,一个问题有很多解法,多思考不同的解法。

    三是有问题先思考,不要一开始就求助,真的找不到答案时,可以多看一下 stackoverflow 。

4、对于普通技术人员来说,遇到问题可以请教高手。那对于您这样的技术大神遇到阻力时,会如何去解决?

    其实解决问题的方法总比问题多,所以有问题一定要先思考,如果想不出来,可能是你对产品本身的理解不够透彻,或者对业务的理解不够透彻。那就继续深入的学习,学习文档,学习源码,理解业务的本质。

5、和其它开源数据库相比,PostgreSQL 有哪些亮点和不足?

    先说亮点:

  1. BSD 许可;
  2. 功能强大,支持多核并行,LLVM,向量计算,列存储扩展,外部数据源扩展,插件。支持各种数据类型(除了常规类型,还包括 GIS 、全文检索、JSON、KV、XML、RANGE、数组、枚举、复合等类型),支持多种索引接口(btree,hash,gin,gist,spgist,brin,rum,bloom等),支持非常丰富的 SQL 语法(例如 空间搜索、窗口查询、多维分析、递归查询、HASH,MERGE,NEST JOIN、HASH,GROUP AGG、MERGE SORT 等);
  3. 接口开放,前面也有说到,通过 PL/language 对接软件生态,通过开放的类型、OP、IDX、AGG、WIN 等对接行业生态,支持各种行业,通过开放的FDW接口,对接更多的外部数据源,通过 SCAN 接口对接硬件生态。

    不足的话,XID 还是 32 位的,会带来一次额外的 FREEZE 开销。不过社区正在对此进行改进,未来会支持 64 位,彻底抛弃 FREEZE 。

6、怎么看待开源数据库的未来走向?

    我认为具体会包含以下方面:

  1. 开放接口,对接硬件生态,从单一的围绕 CPU 设计转向围绕多种计算单元,包括 CPU\GPU\FPGA\TPU 的设计。
  2. 更好的利用硬件级指令,例如向量计算。
  3. 开放接口,对接软件生态,打破 SQL 瓶颈,将更多的编程语言集成到数据库中。
  4. 开放接口,对接云端生态,通过开放的接口,与云端其他组件无缝融合,例如阿里云提供的 oss_fdw ,PostgreSQL 可以和云端对象存储 OSS 无缝融合。
  5. 开放接口,对接存储生态,支持更多格式的存储,例如 parqut, orc 等。
  6. 开放接口,对接业务生态,例如 PG 通过开放类型、OP、IDX 等接口,对接了更多纵深行业(图像特征搜索、基因、化学、医疗等,有特殊数据存储、搜索需求的行业)。
  7. 流计算,降低怠速开销,提升分析型查询的性能。
  8. 横向扩展能力,内置 MPP ,SHARDING 的功能。

7、PostgreSQL 10 已经在测试了,最喜欢或最看好的新特性是什么?

    PostgreSQL 10 的很多特性其实都很不错,包括:

  1. quorum 级多副本,用户可以指定事务的副本数,对可靠性要求高的会话,使用多副本保证数据 0 丢失,对可靠性要求低的事务使用单副本甚至异步提升响应速度。
  2. 多核并行增强,支持排序、JOIN、聚合、bitmap scan、MERGE SORT、全表扫描、建索引、多分区扫描、多外部数据源扫描的并行,更加有效的利用服务器的资源,提升 SQL 的响应速度。
  3. 逻辑订阅,支持表级订阅,业务架构设计时,通过逻辑订阅可以实现多实例的数据共享,甚至 multi-master 。
  4. sharding 增强,支持 sort, where, join, agg 的下推。
  5. libpq 支持读写分离。
  6. ICU 支持,各国字符编码一致性保障。
  7. JIT 支持,使得大量数据处理性能有质的飞越。

8、对于数据库相关的技术从业新手,有怎样的一些建议?

    请记住技术是为业务服务的,数据库是基础软件,深入的了解它还不够,还需要更深入的了解业务,了解行业。让数据库可以更好的帮助业务发展。

    另外,拿 PostgreSQL 来说,由于其开放性,我们不仅仅需要学习数据库本身,还需要通过 PG 的扩展,去纵深的了解各个对应的行业。

9、后续有没有一些计划和动作来推动 PostgreSQL 在国内应用的广泛度?

    PostgreSQL 社区是一个大家庭,这里面包括了 数据库厂商、云计算厂商、最终用户、技术支持提供商、高校、数据库周边生态  等各个行业的群体。

    我们今年 9 月份会在深圳举办 PostgreSQL 中国用户会全国大会,10 月份的云栖大会也会设立 PostgreSQL 的专场,同时 PG 社区也会和各个社区合办一些培训、技术类的专场或分享。

    感谢开源中国社区对 PostgreSQL 社区长久以来的大力支持,希望开源中国越办越好,也期待后期的合作机会。

举报
王练
发帖于3个月前 16回/2K+阅
共有16个评论 最后回答: 3个月前

华为/联想存储有能力做个pg的“ExaData”?Oracle一个一体机500W-1000W++

--- 共有 5 条评论 ---
蝴蝶飘飘 回复 @乌龟壳 : 3个月前 回复
乌龟壳@IdleMan 回复@IdleMan : 数据库本来就这样的啊,要读什么才取什么,不过是按某个粗粒度的大小去取的,忘了专有名词了 3个月前 回复
IdleMan 回复 @乌龟壳 : 并不需要rac,要的是智能存储特性——存储只返回符合条件的数据块,而不是返回一大堆数据块再数据库还要过滤掉大量不要的数据块。 3个月前 回复
乌龟壳归根到底这是软件问题 3个月前 回复
乌龟壳pg没现成的多主啊,pogres-xl成熟度没人敢用在关键业务上,greenplum只是OLTP,但它又不需要太强的服务器只是量大就好。 3个月前 回复

pg适合小型应用吗?比如,1CPU/1G 的云主机上 跑 mysql5.7 + tomcat,跑得很欢,PG 行不?

--- 共有 1 条评论 ---
eechen小型应用(比如个人博客)为什么不用SQLite呢?读多写少的小应用,最合适SQLite了. 3个月前 回复

mysql到现在都没有一个boolean类型,即使有了,包括jdbc和一些框架支持的也不好,比如mybatis的generate插件,byte(1)就认为是boolean,byte(4)就认为是byte数字,pg的数据类型非常丰富,而且性能也优异,我还是很喜欢pgsql的,支持德哥

PG绝对好用,使用时限制很少,我们现在就用pg_pathman插件自动分表解决上亿条数据的查询问题。用pg_jieba插件来做全文检索。德哥一直关注着,很勤劳,基本上每天都写PG相关文章,一直在看他写的文章。

--- 共有 6 条评论 ---
玛雅牛 回复 @IdleMan : 用pg_pathman或者等等用pg10 3个月前 回复
玛雅牛 回复 @IdleMan : 可以的pg_pathman支持两种分区模式,list和hash,好像也支持多级分区。你看下官方文档。 3个月前 回复
IdleMan 回复 @eechen : Mysql没用过,PG的分区一牵涉到多个分区的查询,慢得不是定点半点(相比Oracle) 3个月前 回复
eechen程序使用不依赖字典的中文二元分词法,配合MySQL InnoDB的FULLTEXT KEY,一样能轻松实现支持中文的全文检索. 3个月前 回复
eechen回复 @IdleMan : 单机能够容纳亿级数据,为什么不用分区表呢?比如MySQL: PARTITION BY RANGE(id) 3个月前 回复

2005年就用pgsql做了一个项目,感觉pg很抗压。。。。

只是它的sql写法与效率的关系,与我的直觉有点对不上(mssql2005及以后就很对我的直觉)

一直希望pg能首先提供 普通用户都能搭建的多主模式,只是不知道什么时候能实现

顶部