湖北移动湛颖:撇开浮夸,正视差距

发表时间:2018-02-28

2017年10月21-22日,PostgreSQL 2017中国技术大会于深圳科兴科学园国际会议中心圆满收官。拥抱开源,聆听不同,广纳业界同好,与众PGer共话PostgreSQL的前世今生,来年他日。

学术界浮躁之风日盛的当下,有说眼下国内的技术圈恰如滚水入茶,茶菁空悬,浮而未歇,需要的或许正是撇开浮沫残菁,冷静观之,正视差距,从跟跑到并跑——漫漫长路,我们还能走得更远。湖北移动网优中心规划部技术负责人湛颖站在学习者的角度,分析了PostgreSQL在移团队内部的具体实践,以及其在国内外的发展差距,机遇一直都在,而我们要做的,还有很多。

采访正文如下:

CSDN:首先请自我介绍一下,包括您所关注的领域和您所在的团队?

湛颖:我来自湖北移动网优中心IT部门,主要负责我们整个部门的需求分析和IT系统规划,以及中间件的选型工作。我的团队一共有四名成员,而另外三位则分别负责需求分析、数据库管理和应用开发。

CSDN:您为什么会选择PostgreSQL作为研究方向?或者说团队内部为什么会选用PostgreSQL?在转型过程中是否遭遇过一些瓶颈,踩过一些坑?其中是否有想要和大家分享的经历?

湛颖:因为我们的很多应用都会涉及到空间数据的管理,而空间数据管理又涉及到很大的计算量,所以这个工作如果用传统程序来实现,就容易遭遇计算效率瓶颈;如果用数据库来实现,我们也比较过几种产品,经过验证发现,PostgreSQL插件使用的正确率是最好的,高达百分之百,也正是这个原因让我们最终选择使用PostgreSQL作为我们的一个核心数据库。

在这一转型的过程当中,我们截止目前遇到的一个最主要的问题就是:我们以前使用的数据库可以支持一种弹性的分区管理,而这在PostgreSQL中却无法直接支持,因此在这一层面就会增加很大的工作量。

CSDN:那相较于传统互联网企业,移动在技术选型方面有没有什么特殊性,有没有什么它特别的考量?能否简单介绍一下,从第一代行至第四代移动通讯这一路走来,移动的技术架构迭代历程?

湛颖:对于移动而言,技术选型的一大首要考虑因素还是稳定性,因为稳定性无论是在我们的网络运维,还是我们的计费以及各种统计系统下,都是需要考量的重中之重。而在我们的整个演进过程中,早期选用的肯定也是相对传统的方案。但行至后期,由于业务规模的海量扩张,传统技术若要支持这些方案,一方面成本非常高昂,另外还有其不确定性,因为大多国外厂商基为国内客户提供的定制方案专业力量都比较弱。综上所述,在这个过程当中,我们最终选择了一个平滑演进的方案——部分核心业务仍在传统技术架构上处理,但外围部分,即大数据部分,我们会考虑采用一些比较新的方案。

简而言之,我们考虑的一个策略就是我们对数据进行分级治理:边缘层就采用目前比较新的方案,而核心层则保留传统方案,这种方法相对来说比较稳健。另外我们在移动的应用还有个特点——对产品的选型要求非常严谨,也就是说如果我们决定要做个选择,就要经过很充分的论证,比如在我们最后选择PostgreSQL作为核心数据库之前,整个预研工作花了将近6个月的时间,直到经过多种对比测试以后发现能够满足我们的应用场景要求,才将其选定我们的数据库方案之一。

这里的第一代到第四代主要是传统网关基础上的移动通讯网络的网管技术,因为我们无法代表移动全貌,所以此处我仅以自身所在团队为例:第一代的主流数据库是Informix,因为那个时候Informix有一个优势,即其较强的多事物管理能力。但Informix也有一个明显的不足,就是其弹性扩展能力比较弱,所以到了那个第三代移动通讯的时候,受限于它的容量,我们就转换成了一个Oracle集群的案。现在到了第四代,我们则开始采用混合方案,在核心部分使用Oracle集群,同时在边缘数据部分使用PostgreSQL数据中心和GP(Greenplum)数据仓库,大概目前是这样一种模式。

CSDN:不知道您是否方便透露团队内部有关PostgreSQL的架构设计、架构规范等方面的内容?

湛颖:PostgreSQL目前在我们团队内部的着眼点主要是在于对各种空间数据的管理。众所周知,移动要管理各种各样的空间地物对象,所以我们先针对地物对象构建了一个非常系统的地物模型的层次化结构,然后再参照PostgreSQL的规范,将其转换至PostgreSQL的空间数据库——这是我们对数据的构建过程。而对于数据的使用,因为其他系统如果要直接访问PostgreSQL的原生数据,过程相当烦琐,所以我们对外提供了目前比较流行的REST接口模式,把所有的空间对象以接口的形式对外暴露,从而使得应用系统在使用时,只要通过该REST接口就可以访问到我们的应用,这也是目前PostgreSQL在我们移动内部一个最主要的使用场景——作为一个地物对象,也就是我们所说的环境对象的一个集中聚连,以及最后的服务发布,有着比较成熟的规范,至于数据中心的部分,目前尚且属于起步阶段,因此也还没有相应的设计规范。

CSDN:从IT时代到DT时代,网优大数据应用开发会遭遇一些的问题,能不能谈一下它的痛点分析?难点与对策?

湛颖:移动在面临大数据时有一个特点,就是数据进来得很快,出去也很快,所以就要求我们要能够快速处理完数据,这也是我们目前普遍面临的一个问题,因为数据在不断地产生,而你要不断地进行处理,此乃现今的一大主要痛点。

移动此前用的一些传统大数据方案,通常都是基于Hadoop的架构,其特点在于把数据存进去非常容易,但是要把数据处理过来就很困难,为什么?因为我们知道Hadoop提供的接口很有限,而且这些接口很难优化,所以就导致数据在Hadoop集群里要经过很长时间才能处理完,这也是我们遇到的一个难点问题。而我们这次的解决思路,也算是另辟蹊径:基本上抛弃了Hadoop那套基于文件系统和CPU交互计算的混合模式,完全采用内存计算的方式

简单来说,我们是会把这个处理的过程变成一个个原子任务,然后再通过事件驱动的方式对这些原子任务做粘合,把所有处理过程放到内存中解决。这样操作的好处,就是使得内存的占用量很低,而CPU的占用量很高,因为任何数据处理的核心,都还是要利用计算资源,所以在这样一种“内存占用率很低,CPU占用很高”的模式下,我们就可以把尽可能多的原子任务放到一台机器上处理,从而使一台机器的能力获得极大的提升,这是我们的解决思路。而且依据摩尔定律,每过18个月,同样的成本下,可以买到提升一倍的计算资源,所以实际上这一架构最大的好处是我们今天设计出这样一个架构,可能到了明年,随着硬件更新,能力也就自动提升起来了。而Hadoop方案一个最大的问题就是虽然硬件升级了,但是由于其紧耦合结构性的限制,导致我们无法快速享受到硬件提升的红利,所以我们方案的对策核心就是软件结构一定要敏捷适配硬件演进的要求,最大限度地利用到新一代硬件的优势。

其实现在很多大数据方案为什么不成功?很重要一个原因就是其与目前的新一代硬件适配性太差,导致无法充分利用资源,这是目前我看很多软件项目,尤其是大数据项目之所以不理想的一个原因。

CSDN:您在分享中曾谈过现在是“移动的大数据掘金时代”,能否请您就围绕这句话谈谈现今移动大数据的发展态势?

湛颖:我们对大数据的挖掘目前基本上分为三个层面:第一个层面,是我们传统的网络运维,属于一种routine,也就是例行模式,但这个模式会有一个问题,就是没有办法预见到网络可能什么时候会出现问题,因此当问题出现时,就容易手忙脚乱。但如果利用大数据的话,其中包含一些神经网络算法,就可以做这种趋势的估计,所以很多时候在问题发生之前,就可以有一个提前的预估和把握。

第二个层面,就是我们都知道中国的网络覆盖水平处于世界领先地位,但由此也引发了一个难点,就是如何把握潜在的用户需求,比如某地新开了一个工业园,就可能会产生需求,但我们不一定知道,但大数据可以利用用户的行为数据发现在这类潜在的业务需求。总结起来这一层面的价值就在于可以更加深度地发现一些重大的潜在需要,提前在网络构建好基础设施的来服务好客户。

第三层面的大数据应用价值就在于协同管理上的用途,如今的移动业务属于全方位业务,涉及面很广,而这些面基本上呈离散状态。而如何将其整合起来,把这么多业务作为一个整体来管理,就要用到大数据中的聚类分析。举个最简单的例子:比如这里有一个业务热点,其同时可能也会是视频点播的热点,那么如果要治理这个问题,就要在这个区域布放相应的数据源分发中心,通过这样一个热点聚合,就可以实现多专业协同,从而为用户提供更好的服务,同时也可以提供更低成本的部署,大致就是这样三方面的用途。

CSDN:您在进行经典案例分析的时候,有特别介绍到一种手机测量原始数据——MRO大数据,能否请您简单介绍一下它是通过什么样的技术来支持的?

湛颖:该技术是3GPP规范在R12版本里的一个新功能,简单来说,手机在接入网络时,并非一直在使用网络资源,其实是一种分片处理模式,可能说这十秒在利用网络资源发送数据,但下个十秒可能就没有数据发送,那么这个时间片就是空闲的。而该数据的一个原理就是利用手机在空闲的时间片里面的空闲时段,对其所服务的小区和临小区的网络质量做测量,这是3GPP的规范。

这里的好处是什么呢?有了这样一个技术以后,我们就可以很清楚地知道用户当前所在的无线环境,以及其服务质量处于一种什么样的状况。而当这个数据大到一定程度时,你就可以知道这个城市,或者是一个小区的网络服务质量,而且这是真实的第一手用户资料。当时3GPP之所以提出这个规范是因为,4G的频段非常高,而在频段很高的情况下,网络的深度覆盖也会成为难点,比如说像深圳这里有很多高楼,就会有很多信号覆盖不到的地方,这是很难通过人工发现的,所以3GPP规范就提出这种让用户一起参与测量环节的模式,该模式就可以很好地解决这个问题,MRO大数据的大致原理如上所述。

CSDN:刚刚您也有谈到PostgreSQL插件所带来的便捷性,那么在您的团队当中,PostgreSQL的主要插件在敏捷开发中具有什么样的价值呢?

湛颖:我们的传统开发一般可分为三个部分,分别是数据采集、数据库中的数据存储和持久化,以及根据应用要求,做一些对外的发布和应用。因此在传统方式下,如果要做一个项目,就需要掌握很多种技术,大体可分为ETL装载技术,以及数据库管理技术,同时还包括数据程序处理相关的技术,如此一来,我们做一件事情就不得不依赖大量不同的软件系统和解决方案,一件事情也被分成很多碎片。

而PostgreSQL有一个特点,就是其一站式的问题解决方式,因此在PostgreSQL的方式下,其在数据库部分是通过PostgreSQL的原生程序来实现的,其他逻辑功能则可通过插件实现。举个简单的例子,比如我们会遇到的一个很重要的空间匹配问题,这在传统方案中往往需要通过写程序来解决,但在PostgreSQL方案下,就可以直接通过插件,用SQL语句简单搞定。

再举个例子,我们在传统的报表处理时,会涉及到一些很复杂的表格转换操作,这很难用数据库支持,而一般早期的方案,是用一些像是Crystal Reports(水晶报表)的第三方插件,所以带来的是很复杂的学习曲线。而这里PostgreSQL刚好有一个插件,加载后即可通过其原生命令提供支持,而无需诉诸第三方插件。

数据的应用大致可分为四个层次,首先是数据能够存储,即Storage;其次是数据可见,即Data;第三是看得懂,即Information;最后是数据能够提供情报,即Intelligence。基本上前三个维度的内容通过PostgreSQL及其插件都可以轻松搞定,这就是PostgreSQL开发一个最大的优势。

这里可能就有人会问:为什么PostgreSQL能够有这样的优势?我个人觉得主要原因有三:

  1. PostgreSQL的数据类型极为丰富:一个商用数据仓库数据类型甚至可能和一个PostgreSQL相当,其数据类型可谓包罗万象,所以很多很特殊的应用依赖的数据类型都可以在其中进行表达;
  2. PostgreSQL在早期设计时,采用了面向对象的设计思想,所以它可以很轻松地叠加一些组件,而这些组件的叠加又使得很多第三方开发者可以在其中很轻松地集成自己需要的服务接口;
  3. PostgreSQL在底层硬件的适配性方面拥有良好的设计:这也是为什么PostgreSQL可能是唯一一种,可以在市面上所有硬件上运行的数据库,所以有很多需求的应用场景,这也就促进了PostgreSQL的一栈式解决方案。

这里也有例子可以辅以说明:在美国的NASA(美国国家航空航天局)机构,有一个太空科学研究中心,要做大量的空间运算。最初NASA数据中心的空间数据是基于一个叫做Informix Spatial Blade的付费产品来做的,但后来因为NASA数据迅猛扩充,原有模式逐渐无法支持,所以就将其迁移至PostgreSQL(而且不同于国内多用的低性能的硬件,NASA则以类似于小型机配置的高性能硬件为主),迁移后发现性能非常好,而NASA也随之贡献了很多PostgreSQL的空间计算服务的新特性。换句话说,任何事情只要玩家多了,就会变得很方便,所以基本上90%的工作都可以基于PostgreSQL的内部完成,这就可以在极大程度上节省整体方案的集成成本。因此从我个人角度来看,我的理解和很多人或许有所不同,我认为技术上没有高下之分,只有集成成本的高低之分,而市场最终会选择那些低成本的方案,高成本的方案,哪怕架构再美好,也将步入历史的尘埃。

CSDN:能否谈一谈您所在的团队数据库领域下一步的工作展望、规划,或是总体的发展走向呢?

湛颖:我们目前两个最主要的方向,即需要解决的两大问题包括:

  1. 现在我们关于二维平面数据的处理已经非常成熟,但三维数据处理尚属于短板领域,因为PostgreSQL本身也对三维数据提供了非常好的支持,所以这可能是我们下一步考虑在三维数据方面的深度应用工作,而且三维数据在计算效率方面还存在瓶颈,因此也需要对PostgreSQL的一些函数展开比较深入的研究;
  2. 从看懂数据的Information(信息)到提炼数据的Intelligence(智能),其间有着巨大的鸿沟,而目前我们国内的公司总体上达到突破Information这一阶段的还不多,从Information再到Intelligence的就更少了。而我们下一步要考虑的一个方向就是能否在深度学习和神经网络方面再进一步,因为我们现在对很多问题的分析都是基于先验经验而来,就是先有人的经验我再去制定相应的规则,而我们下一步想通过人工智能的方法,去发掘那些潜在的规则。

CSDN:在此前的讨论会中,您有谈到PostgreSQL社区在国内发展的掣肘及局限性,那么能否请您结合这部分内容聊聊您眼中的PostgreSQL发展前景?

湛颖:从软件工程的角度来看,其实PostgreSQL已经打下了非常好的基础,其根基可谓非常扎实,所以可以预见,在很长一段时间内,PostgreSQL都会呈现出茁壮成长的状态,我觉得这是它目前一个很大的优势,因此可以预见投资PostgreSQL在很长一段时间内都会是一个明智的选择。

但与此同时,PostgreSQL如今也面临着一个很大的挑战。我们都知道现在硬件的发展程度越来越高,像是树莓派,国外就有用几台树莓派集群群就来完成我们传统的物理机工作的例子。相信随着硬件成本逐步降低,我们原有的技术将焕发新生,因为有些技术可能受限于硬件无法继续演进,所以硬件一旦突破,很多技术就将迎来第二春。而这里的PostgreSQL就显露出了短板——和目前硬件演进的速度得仍匹配不足。当然未来也许会出现颠覆性的技术,比如当MySQL的硬件强大到很简易的架构都能够支持的情况下,PostgreSQL就容易走入低谷,这就要看PostgreSQL的设计者能否充分融合现有技术,尤其是硬件和容器技术的进步,以期提供一种更低成本的方案,这是我对PostgreSQL在总体看好之外的一点隐忧。

目前国外的技术和国内的最大不同在于,国内更习惯于一种copy的模式,就是你有的技术我复制过来,而国外则更多是颠覆模式——颠覆你的技术,施行蓝海战略,如果出现颠覆性的技术,PostgreSQL的前景还是有点堪忧。但总体看来,10年之内,PostgreSQL在中国都还享有很大的发展前景,而发展过程中一大制约就是前面谈的那个问题,很多中国的开发者没有发现它的好处,他们用Java、用Hibernate这一套东西的想法可能还根深蒂固,而这套东西基本上无法享用PostgreSQL优势插件,所以PostgreSQL要想在中国火起来,首要问题是要让开发者认识到它的价值。

CSDN:您前面有说也是刚接触PostgreSQL不久,那么在您三年来的学习过程当中,有什么学习感触或心得体会可以和广大初学者,或是刚接触到PostgreSQL、处于技术选型矛盾中的潜在学习者分享的呢?

湛颖:PostgreSQL目前在中国推广一个最大的难题就是学习曲线问题,因为大家习惯凡事上百度,而百度上相关领域内的资料特又别的少,所以我觉得学习PostgreSQL最重要的三点,或者你要招募这样的团队需要考察的要素包括:

  1. 最重要的一点是一定要外语好,不光是PostgreSQL,任何一门计算机科学都离不开外语的阅读能力;
  2. PostgreSQL其实有个很重要的资源,就是PostgreSQL堪称教课书级的帮助手册,有问题一定要多去阅读它;
  3. Stack Overflow也是一个重要的资源网站,这里有很多技术牛人,基本上99%的初学者问题,都能够在上面找到答案。

所以总结起来就是大家一定要善用资源,PostgreSQL内核十分强大,所以对一般应用开发而言,用好上面这三大资源就基本上没什么问题了。

CSDN:最后,您还有什么补充内容想要和大家分享的吗,比如刚刚您也提到的时下大热的人工智能技术等内容?

湛颖:以目前的技术发展来看,人工智能可以说是如今最热门的一个方向,因为传统的计算机技术和各个行业的连接是非常有限的,早期主要是集中在信息系统的集成方面,而到了人工智能阶段,计算机技术和行业连接的开始变得很深入,因为它一方面颠覆了整个行业的演进速度,另外也为这个行业创造了很多增值空间。举个最简单的例子,传统的智能制造业效率比较低,但在引入了容器化技术之后,智能可以做到非常方便的分布管理,所以随着这个人工智能技术的发展,各个行业都会迸发很多机遇,有望出现很多颠覆性的模式,因此从未来投资的角度来分析,计算机科学领域的从业人员还是要尽可能多去了解一下这方面的技术发展。

此外,我的一个感受就是目前的人工智能的技术在理论上其实还有一定的学习门槛,要想突破这个门槛就要多去Git上找一些目前人工智能方面最新的研究case,通过case入手会比较方便,因为一个无可避免的问题是,实际上目前在这方面,国内已经远远落后于国外,所以需要尽快跟上领先者的步伐。

最后,很多机遇都会在这种融合的领域中产生,也就是说你要和别的领域的专家连接互通,才可能创造出这样的机遇,所以如果你想走这条路,一定要去多认识一些不同专业的朋友,这样才能碰撞出火花。至于PostgreSQL,我认为就像我说的,它已经解决了前三个层面的问题,所以它会是一个很好的起步阶段的工具,如果能找到第四个层面的工具,搞定如何从这个信息到智能,就有望颠覆很多行业,使其进入一个更新的业态。