瀚⾼王硕:从Oracle到PostgreSQL,细数如何⼀步步打造完整的PG⽣态链
2017年10⽉21⽇,于深圳科兴科学园国际会议中⼼圆满收官。拥抱开源,聆听不同,⼴纳业界同好,与众PGer共话的前世今⽣,来年他⽇。
数据库作为最关键的基础设施,渗透技术领域的⽅⽅⾯⾯,⽽⼀个数据库的流⾏绝⾮偶然,PostgreSQL在中国历经多年磨合,⾯对前进途中的掣肘质疑,作为⼀个PostgreSQL学习中的爱好者,对此,⼜将怎么看?会间,瀚⾼基础软件股份有限公司数据库开发⼯程师王硕,从⾃⼰与PostgreSQL的意外结缘谈起,转⽽剖析PostgreSQL中国的发展困惑,多⽅位阐述了打造完备的PG⽣态链的重要意义。
以下为采访正⽂:
瀚⾼基础软件股份有限公司产品开发中⼼内核开发部部长 王硕
CSDN:⾸先请您做⼀下⾃我介绍,包括您关注的技术领域,以及所在团队等。
王硕:我是王硕,⽬前就职于瀚⾼基础软件股份有限公司,我们公司主要从事开源数据库PostgreSQL的开源⼯作,包括其发⾏版等,⽽我在其中主要负责数据库开发设计相关部分。⽬前我们团队主要致⼒于在PostgreSQL的基础上,针对客户需求开发新特性,以期更好地满⾜客户,促进PostgreSQL的服务落地,从⽽达成推⼴数据库的⽬的。同时我本⼈⽬前也在中国PostgreSQL社区担任核⼼成员之⼀,积极向社区推⼴⼀些我个⼈关注的领域技术,积极写博客做推⼴,我们公司之前也做了很多关于数据库的翻译,⽬前⼤家接触到的80%以上的PostgreSQL中⽂⽂档,都来源于我们的翻译,这主要是因为我们公司内部有专⼈负责这⼀块内容,且社区⼈员的精⼒也相对有限。
⽬前我们团队还可以说⾮常年轻,这⾥的年轻不仅是指年龄层⾯上的,更多是⾯对于数据库这个领域⽽⾔——原本⽆论是在校还是⼯作,⼤家可能接触更多的是基本的软件、业务开发等,但数据库不仅仅是⼀个简单的应⽤,⽽是⼀个完整的产品,在理论、设计等各个⽅⾯都有着相关的限制,因⽽我们需要关注⼤量的内容,每个⼈涉及的东西⾮常多,因为我们的基础软件⼈员流动较为频繁,我们团队相对就⽐较年轻⼀些。
CSDN:就您个⼈⽽⾔,为什么会选择PostgreSQL作为⾃⼰的研究⽅向,在探索过程中是否曾遭遇瓶
颈?
王硕:从严格意义上来讲,不能说是我选择了PostgreSQL。事实上,当初我们公司和学校有合作,⼤学期间,公司⾛进校园展开Oracle宣讲活动,因为我本⾝学的是软件⽅⾯的专业,所以对此颇有兴趣。恰好当时公司说能提供实习,我起初以为是要做Oracle,就决定抓住这个机会加⼊进来。但过了⼀段时间之后才发现,需要去做的是我们⾃⼰公司的数据库–HighGo Database。虽然和初衷有些出⼊,但这⽆疑是⼀个在企业中学习的好机会,便也⼀步步⾛到今天。⽽我真正开始接触PostgreSQL⼤约是在开始⼯作之后半年左右,那时对基础软件已经有了⼀个很好的把握,因此也渐渐从中琢磨出⼏分兴味,慢慢觉得那些数据库理论和算法等都挺有意思,加之我⼤学时期特别喜欢研究⼀些东西,也很喜欢解决问题的过程,学习PostgreSQL恰好击中我的兴趣点。
但⼜⼀段时间之后,我逐渐发现国内的基础软件氛围并不是特别活跃,也因此⽆论是公司还是⾃⼰都开始⽣发了某种基础软件情怀,发⾃内⼼地想让这⼀领域蓬勃起来。我⼤学时期学习的数据库是SQL Server,但多数课程也只是照本宣科,不见得传授太多内容,因⽽我对数据库⼀直处于⼀个懵懂的状态。然⽽数据库的重要性⽏庸置疑,我们也都了解数据库在中国市场中会是⼀个⾮常⼤的蛋糕,却基本上都为Oracle、DB2所垄断,⽽且好多学⽣根本不了解数据库的内核到底是什么,⼤家只知道⼀味地使⽤,往往忽视了数据库的本质。所以很多时候,我们就会想能否由咱们中国⼈⾃⼰打造⼀款⾮常优秀的数据库,去替代,甚⾄是完全取代Oracle,这⼀讨论就更像是⼀种情怀。
⽬前对我⽽⾔,最⼤的困惑就是PostgreSQL的流⾏度问题——诚实地讲,它真的是还不够流⾏,或者说市场占⽐⾮常⼩。虽然我也经常去国外参加⼀些相关会议,总能听到⼤家对PostgreSQL的肯定与褒扬,但如果去关注就不难发现,PostgreSQL⼀直处于第四位,但是其分数却很低,甚⾄还不如第⼀名的零头所以虽然我们⼀直在说我们是第四了,但其实和前位者的差距仍然⾮常⼤。那么这⼀差距缘何⽽来?我认为这⾥反应出了很多问题。当然,之前有很多⼈表⽰MySQL是借助互联⽹的风头才得以扩展开来,但为什么PostgreSQL没能做到?经过和⼤家的交流后,我个⼈认为这是⼀个⾎统问题,PG起源⾮常早,甚⾄可以追溯到1973年,起初就是为了传统企业的应⽤;相对
的,MySQL在互联⽹发展时期诞⽣的,天然的就带有互联⽹的⼀些特性,更适合当时的互联⽹应⽤,并提供⼤量的相关特性。⽐如逻辑复制的功能,这恰是MySQL能成功的⼀个原因。
虽然PostgreSQL的理论⾮常成熟,框架也很好,但是若想要完全搞熟搞懂就需要花费极⼤的精⼒。⾄于Oracle,它⼀个⾮常成熟的环境,这恰恰是PostgreSQL所⽋缺的,故⽽难以与之抗衡。鉴于这诸多阻⼒,怎么去更好地推⼴PostgreSQL就成了⼀个很重要的讨论课题。⽽对于做PostgreSQL发⾏版的我们团队⽽⾔,PostgreSQL良好氛围的重要意义更是不⾔⽽喻。
CSDN:您的团队在PostgreSQL应⽤的过程中,在安全性以及稳定性问题⽅⾯采取了哪些措施?
王硕:针对这⼀问题,在我们最新的产品中在安全等性能⽅⾯都有体现,主要有两个关注点:⼀是数
据全加密,这⼀定程度上和我们的客户⽅向有关,就像此次技术⼤会上,我们可以看到参会嘉宾⼤多来⾃互联⽹公司,⽽我们更多要⾯对的是传统企业和政府客户,他们对数据安全性的要求⾮常⾼,尤其是在磁盘安全性和内部安全性⽅⾯。对此,我们采取了⼀些数据库加密措施,以防遭窃数据可以被还原。
此外,我们也对误操作问题进⾏了防范——开源了⼀个叫做Xlogminer的数据库⼯具。这是⼀款⽇志挖掘⼯具,因为每个数据库都会写WAL⽇志,这⾥我们就是对WAL⽇志进⾏分析,能很好地还原数据库所有操作,从⽽了解什么时间做哪些操作,即可针对性地还原某些误操作的内容。当然,也可以开启数据库log,但是经过测试开启log会⼤⼤降低数据库性能,⽽且WAL⽇志本⾝已经将操作记录下来了,所以通过分析WAL⽇志来还原数据库操作是⼀种最优的⽅式。
CSDN:您在上⼀个问题中有提到本次⼤会的参会⽅主要都是互联⽹公司,那么相较⽽⾔,瀚⾼团队作为与会嘉宾有什么样的特⾊?
王硕:这主要还是⼀个⽅向问题,因为互联⽹公司追求的更多是性能和数据分析的能⼒,⽽我们⾯对的则更倾向于客户的数据安全性问题。
谈到安全性话题,上⾯漏掉了⼀点,就是⾼可⽤层⾯的探讨,⽽对于PostgreSQL⽽⾔,⾼可⽤恰恰是它的⼀个弱项,或者说是失分项。对此我们还做了⼀个新的架构,叫做SDS的架构,其类似于Oracle
的REC。会间也有很多⼈问我,“为什么你们团队会想要做这个SDS模式”?⽽不是⼀些现在⼤家普遍追求的⽅向,像是MPP等互联⽹快速并发的东西。对于这个疑问,归根结底还是定位差异,我们的客户更加看重数据安全性、⾼可⽤,需要在某个节点发⽣损坏时能快速切换过去。⽽且我们⾯对的数据没有互联⽹公司那么巨量,我们的节点可能⽆法⽀持⼏⼗台乃⾄上百台的规模,但从某种程度上看我们的性价⽐会更⾼⼀些,这也是我们的⼀个特⾊。
常见mpp数据库CSDN:本次技术⼤会是由我们国内的PostgreSQL社区主导的,您之前也有提到⼀些海外活动,那么能否请您结合国内外社区情况,谈谈PostgreSQL在国内外的发展态势?
王硕:最近我刚从美国的PostgreSQL Open⼤会回来,包括之前的⼏次参会经历中,其实我们能感受到⼤家对PostgreSQL的热情还是⾮常⾼的,不管教育、⾦融,还是医疗等各⾏各业,都能看到PostgreSQL的⾝影。实际上在国外,特别是美国地区,对于PostgreSQL的认可度⾮常⾼,每次去美国参会就会发现呼声特别⾼,回国就会发现⼀个落差,⽽且分数也依旧不⾼,这是⼀个直观的现象。
再者是⼀个上云的问题,⽬前亚马逊云是全球第⼀的云⼚商,其对PostgreSQL也⾮常⽀持,⽽PostgreSQL现在在国外整体⾛势就是上云——如何上云是现在PostgreSQL⼀个最⼤的发展⽅向,这相对国内也是⼀个不同点。诚然,国内在云领域,阿⾥等云⼚商,都在⼤⼒推⾏云技术,但从PostgreSQL的⾓度来看,其上云进程远没有国外那么快速,这与⽣态链也有⼀定的关系,故⽽相对缓慢⼀些。
此外,由于接触的时间长短不同,国外社区在峰会等活动划分的情况也要相对更细⼀些,主要有以下⼏种类型:PG Open⼤会:⾯向诸多⼚商,主要由⼀些⼚商去介绍⾃⼰的产品,以及PostgreSQL之于其产品的特性等;
PG Conference:主要指的是⽤户⼤会,由⼴⼤PGer互动交流,分享各⾃的数据库使⽤⼼得体会、技术分享;
PG Vision:是由⼀些EnterpriseDB公司引导的⼀个商业探讨会议。
除了这三类之外,还有⼀个经常在加拿⼤举⾏的全球开发者⼤会,主要是介绍数据库⽬前的⽅向、开发的态势,以及每年数据库的⼀些新特性等。⽽国内现阶段其实仅有⼀个Conference⼤会,这也是国内外社区发展的⼀⼤区别。
CSDN:⾯对这些发展落差,尤其对初学者⽽⾔,技术选型时,在了解了PostgreSQL国内外市场占⽐差异之后,未免会对其持疑惑态度,那么您如何看待打造中国的PG⽣态这⼀问题?
王硕:这其实正是我们公司⼀直在试图努⼒的⽅向,就像我们做产品也是想提升PostgreSQL的市场占有率,这⾥就涉及到PostgreSQL的⼀块明显的短板——虽然其扩展性⾮常优秀,可谓什么功能都有,基本上⽤户想要的性能都可以到相应的插件来实现,但真的在实际应⽤时,就会发现需要去学、去
看、去改的东西极其多,很难到⼀个⾮常好的整合。因此我们团队的下⼀步⽬标,就是在PostgreSQL的易⽤性上做出⼀定的优化:不管是在监控、关联⼯具,还是⼀些插件,我们都能够积极地放到数据库上让⽤户得以直接使⽤,尽量透明化,让⽤户⽆需再考虑太多技术问题,从⽽把重⼼落在业务上,促进业务快速发展。
CSDN:从技术渗透的⾓度来看,您在学习PostgreSQL的过程当中,还进⾏了哪些知识技能储备?
王硕:因为我是做数据库开发的,所以在开始研究PostgreSQL之后就需要学习了解很多东西,包括源码等内容,书越看越厚,每看到⼀些新东西就会发现⾃⼰还有所⽋缺。因为数据库本⾝你需要了解,同时与数据库结合的操作系统你也需要深⼊了解,甚⾄于其和硬件的配合也需要懂⼀些,⽐如我最近关注的GPU相关技术——如何⽤显卡提升数据库计算效率。这是我⼀直颇为关注的⼀个技术⽅向,因为GPU的性价⽐较之CPU要⾼很多,CPU毕竟是通⽤的,⽽GPU主要是⽤来做计算的,所以我更想利想GPU去做计算。
再谈SSD,或者说⼤内存,数据库如何更好地与其适配,我们对⼀些参数有所调整。SSD和机械硬盘是不⼀样的,这个问题的处理其实要花费⼤量⼯夫来研究,或者需要⼀定的时间来测试。
此外,我们公司此前还推出了⼀个新特性——利⽤LLVM对数据库查询进⾏加速,我们团队花了很多精⼒去调研相关领域知识。⽽我们现在能够实现某些应⽤常见下,在不更改数据库原有源码的情况下,
使原有查询效率提⾼10倍。当前列式存储、分布式以及SSD的迅猛发展,带来的I/O瓶颈慢慢削弱,CPU的瓶颈⽇益凸显,⽽LLVM正好能解决这个问题。
CSDN:您能否分析⼀下PostgreSQL在哪些应⽤场景下⽐较占优势?
王硕:在我看来,PostgreSQL的优势在于较之MySQL,其更适合⼀些重要级的分析型业务,以及交易性较强的业务,因为其执⾏计划、查询计划器都写得⾮常好,能够对极其复杂的查询做出很好的优化。在这⼀点上,我觉得PostgreSQL要⽐MySQL略胜⼀筹,当然这⾥并不是说MySQL不好,⽽是说MySQL在某些场景下并不是特别适⽤,像是某些互联⽹场景就更适合于MySQL,因为他们更多是简单查询,不需要太多复杂的程序。但换个⾓度分析,数据量⼀旦达到某个⾼度,复杂查询效率就会变慢,这就⼜触及了PostgreSQL不甚擅长的部分,⽽现在也推出了很多类似于PostgreSQL-XL、Greenplum等基于PostgreSQL的新的产品,恰好能解决这⼀问题。
此外我还想补充⼀点,就是我⾮常推荐⾼校展开PostgreSQL的学习,因为其代码⾮常规范,不管注释,还是⽂档及构建函数标的准都很棒。通过了解其代码,可以进⽽深⼊数据库内核知识,这对⾼校学⽣⽽⾔⽆疑是颇有裨益,能助其对数据库的本质有⼀个清晰的认知,不⾄于直⾄毕业对数据库的概念都停留在“存放数据”这样的表层理解,⽽是更多了解存取的原理,以及如何优化等细节问题,代码就是我们最好的⽼师。
CSDN:上⾯的问题中您也有提到⼀些近来学习的新内容,那么能否总结介绍以下您最近会关注的⼀些新的技术⽅向?
王硕:前⾯我有简单提到⼀些,包括利⽤GPU、LLVM技术来解决⼀些问题。此外,最近我还会关注⼀些⼈⼯智能(AI)相关的话题,其实这也与数据库有千丝万缕的联系,包括我们此次技术⼤会对此也会有所覆盖,例如如何利⽤AI去更好地优化我们数据库SQL以及数据库结构,这也是我们未来发展⼀个⽐较好的⽅向。因为和机器相⽐,⼈的精⼒是有限的,⽽若将这部分内容交由机器来完成,只要其算法⾜够完备,便能够替代很⼤⼀部分⼈⼯的⼯作,减少⼈⼒⼯作也会是AI的⼀⼤突出贡献。
CSDN:您平时也会写⼀些博客⽂章等来对⼀段时间的学习内容做⼀个总结,那么这⾥是否有什么亲测有效的学习经验可以同⼤家分享?
王硕:事实上,我最近也⼀直在考虑构建学习计划的事情,考虑到我是从数据库开发起步的,所以可能和⼀些DBA不太⼀样,以PostgreSQL的学习为例,我认为不管是做开发还是做DBA,都需要对代码有⼀个⽐较好的了解。如果是DBA,可能更需要去了解其功能代码,以便在问题发⽣时准确定位,清楚问题出在哪⾥,这时若能⼒去更改⾃然更好,否则提交社区即可。我之前有看过⼀个⼈的博客,他是个DBA,懂技术、懂代码,但他就可以在不更改代码的基础上改变数据库的⼀个特性,这就很令⼈佩服。所以说这是⼀个极佳的学习途径,因为在你⾜够了解代码之后,就可以很好地利⽤这个规则去完成原本数据库不让你去做甚⾄不能达到功能,从⽽得以更好地对数据库进⾏维护优化。
CSDN:最后,您还想和我们的读者分享些什么?
王硕:长期以来,我们公司给⾃⼰定位是“开源数据库软件的先⾏者”,为什么这么说呢?我觉得是主要包含以下⼏个⽅⾯:
⾸先,我们的数据库完全⾃主可控,毕竟PostgreSQL本⾝⽆论是开源协议,还是开源代码,都可以下载去做发⾏版,我们对代码熟悉之后,也就不存在⼀些所谓后门的情况,我们掌握⾃⼰的代码,也可以对代码进⾏⼀些更改。虽然这个过程可能挺痛苦,但是我们也因此占据了⼀些优势,就是可以和现在很多的国产CPU,或国产操作系统进⾏很好的适配。我们专注于推进PostgreSQL,以及打造国产数据库,主要通过以下⼏种⼿段:
1. 和⼀些ISV服务⼚商进⾏合作捆绑,从⽽更好地改变⼀些开发⼈员的习惯,因为很多时候⼤家已经习惯了Oracle、Java这类⾮常便捷
的选择,⼀时间可能很难去换⼀种数据库或语⾔,因为这⽆疑是⼀个痛苦的过程。当然这⼀现象也很好理解,因为如果你突然让⼀个⽤户换个数据库,势必要做出很多更改,也可能会出现⼀些不可预知的问题,他们完全被Oracle绑定了,脱离起来很是困难,所以我们想通过⼀些⽅式改变开发者的习惯,从⽽更好地推⼴PG;
2. 我们也积极地同云⼚商开展⼀些合作,因为现在毕竟是云的天下,所以我们也针对这⼀点推出了云上的数据库服务,这也是我们⽬前
点关注的⼀个⽅向;
3. 我们同⾼校间也有很多合作,第⼀我们会有⼀些定期的校园⾏活动,为⼤学⽣宣讲⼀些数据库知识,其中也包括PostgreSQL相关课
题,帮助⼤家了解PostgreSQL,从学⽣这⼀代开始普及对于PostgreSQL的认知,让他们能够渐渐⽤起来,将来在考虑⼯作等选择时,也有机会将PostgreSQL纳⼊考量,⽽不是只考虑Oracle等。
4. 我们同国内外PostgrSQL社区建⽴了⾮常紧密的联系,我们如今在北美也建⽴了⼀个研发中⼼,主要负责海外事务的对接⼯作,毕竟
PostgreSQL这⼀数据库本⾝源于美国,我们如果能更好地同国际接轨,⽆疑将对我们数据库的产品拉⼒起到很⼤的帮助。我们的美国研发中⼼负责⼈周宝峰在那边负责整体的研发⽅向,接触到⼀些国际上更好的公司,从⽽将这些更好的技术融合到我们⾃⾝的产品当中,这样继⽽助⼒我们的数据库在国内的发展。
最后,我认为打造完整的⽣态链这⼀点尤为重要。现在为什么⼤家不常⽤PostgreSQL功能?很⼤⼀部
分原因就是⽤起来⽐较费劲⼉——⼤家左右,⾮常困难。这就要求我们利⽤⼀切⼿段,包括中间件、管理⼯具、数据库底层,甚⾄硬件等⽅式,合⼒将整个PostgreSQL的⽣态链打造好,同时做好推⼴⼯作,让⽤户⽤起来更⽅便,提升PostgreSQL的认可度与它接受度,让PostgreSQL越来越好。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。