【IT168 技术】本文根据彭智勇老师于第九届中国数据库技术大会(DTCC 2018)的现场演讲《支持海量复杂数据管理的对象代理数据库系统TOTEM》内容整理而成。
讲师介绍:
彭智勇 武汉大学计算机学院教授、博士生导师, 国务院软件工程学科评议组成员,中国计算机学会会士、数据库专业委员会副主任、大数据专家委员会成员。1985年获武汉大学理学学士,1988年获国防科技大学工学硕士,1995年获日本京都大学工学博士,2003年武汉大学计算机科学与技术博士后流动站出站。1995-1997年在日本京都高度技术研究所工作,研究员。1997-2000年在美国惠普公司的研究所工作,研究员。提出了面向复杂数据管理的对象代理模型,发表在数据库国际优异会议IEEE ICDE和权威期刊IEEE TKDE上;分析了开源数据库PostgreSQL源代码,出版了《PostgreSQL数据库内核分析》;研制了对象代理数据库管理系统TOTEM,达到国际先进水平,获得了教育部科技进步二等奖。主要从事数据库、大数据管理与分析、可信云数据服务等方面的研究。
分享提纲:
1、对象代理模型
2、复杂数据管理
3、专利数据分析
演讲内容:
大家好,我是武汉大学彭智勇,非常高兴能够来到这里做一次分享。因为来自学术界,所以今天的报告风格可能跟前面的报告有点不一样,另外我讲的故事可能跟前面的也不一样,希望大家喜欢!
一、对象代理模型的引入
我们为什么会提出一个新的模型?来看看传统数据库所面临的一些挑战。最早的数据模型,我们知道先是层次数据模型,后来有网络数据模型。当小型机诞生了以后,为关系数据模型提供了一个机遇,一直用到现在,大家都非常喜欢。 这样一个模型是非常适合于简单的结构化数据建模的,特别对银行记账数据是非常有效的。但它有一个缺陷,不能表达复杂的语义关系。在学术界一直在想找到一个模型来替换关系模型,把数据的语义关系表达得更加清楚。
后来在上世纪90年代人们提出了面向对象数据模型,面向对象思想在程序设计领域非常成功,而数据库界也认为,面向对象难道不是一个很好的选择吗?当时就提出了面向对象的数据模型。当时的应用场景是PC机、特别是苹果机能够处理多媒体数据。那么,这些多媒体数据怎么样进行管理呢?大家提出用面向对象数据模型来建模。不同的媒体,用不同的对象,不同的对象,就有不同的方法来处理。所以它能够适合复杂数据的建模。但是它有一个致命的弱点,就是灵活性很差。所以90年代那个时候有大批的面向对象数据库走向市场,但最终没有被市场接受。
目前的场景是什么呢?大家还是离不开关系数据库,但又需要面向对象数据模型去管理复杂数据,所以提出了一个折中的方案,就是在关系数据库里面引入对象模型,称之为对象关系模型。这也是2014年图灵奖获得者MIT教授Michael Stonebraker所倡导的。
对象关系模型有什么问题? 我们知道,如果说在一个数据库里面支撑两个模型,那么数据就难以统一建模。简单的数据用关系,复杂的数据用对象, 两套模型就要用两套机制,这两套机制就要相互协调,一协调就带来了效率上的降低。另外,系统中有两套机制,就变得非常的臃肿庞大,使得我们的数据库现在难以管理目前的大数据。 大数据80%以上是非结构化数据,所以人们有时会这样来定义大数据:大数据就是数据库管理不了的数据。这也就是当前数据库难以支撑大数据管理的原因之一。
我当时研究面向对象数据库时也在想, 关系数据库为什么灵活性那么好?
因为它把数据定义成表,然后有关系代数进行操作,大的表可以分成小表,小的表又可以合成大表。表通过关系代数操作计算,就能算出人们想要的表,那么不同的人根据不同的需要就可以通过关系代数运算计算出不同的表。这样一来,数据共享就变得非常的方便。
面向对象为什么不能这样做?它把数据和操作封装成了对象。对象有一个唯一的标识符,对象是难以分割和重组的。就像我们人一样,人不能像孙悟空进行分身变化。所以我想,现实生活中人如何才能进行分身和重组呢?结果发现是代理在发挥作用。
当一个校长不能同时参加两个会的时候,就要派副校长。所以一个校长下面肯定会有几个副校长来起到分身的作用。另外一个我们开人代会的时候,不可能全国人民都到人民大会堂,我们就要选代表,代表也就是代理。所以代理在现实生活中把人进行间接的分割和重组。如果我们把代理这个概念引入到对象当中去, 有了代理对象的话,我们对象就可以间接的分割和重组,从而能够做到既像关系数据模型这样灵活性好,又像面向对象数据模型那样拥有表现复杂语义的能力。
我们有没有可能做一个与对象关系数据库不同的新系统?
我提出了这样一个模型, 对象代理模型 ,实际表达了这样几个概念:第一,任何客观实体可以表示为对象,一个对象可以有多个代理对象,多个对象可以共享一个代理对象。代理对象还可以有自己的代理对象,形成一种网络结构。第二,代理对象继承对象的属性和方法,具有独自的标识符、属性和方法。第三,继承通过切换操作来实现,它可以改变对象的属性和方法。第四个是代理对象和对象之间有双向指针。第五,对象更新迁移保证对象代理约束关系。
谈完这些概念以后,我们讲,数据库里面很重要的就是要建模,建模就要定义它的模式,对象的模式就由类来定义。那么,代理对象的模式就用代理类来定义。我们可以定义三种类型的代理对象:一个是单个对象的代理对象,一个对象可以定义若干个代理对象。还有是一组对象上的代理对象,这一组的对象可能来自于不同的类,它们组合在一起,产生一个代理对象。还有一种是一群对象的代理对象,它的个数是不受限的。代理对象都有约束条件。例如,针对单个对象的代理对象,我们可以定义选择约束条件,针对一组对象的代理对象,我们可以定义组合约束条件,针对一群对象的代理对象,我们可以定义分组约束条件。
代理对象的属性包括两类,一类是追加的属性,一类是继承的属性。它的方法也分为两类,一类是追加的方法,一类是继承的方法。属性的继承和方法的继承用切换操作来定义。当一个消息发送到代理对象,代理对象会把这个消息切换给它的源对象,源对象调用相应方法执行得到结果并返回给代理对象,代理对象将结果切换给消息发送者。在切换过程中,可以改变属性和方法的名字以及数据值的类型,从而使对象可以以不同方式呈现给用户。
对象代理模型提供对象代理代数操作,用来定义代理类,表现不同的语义关系。通过对象代理代数,我们可以在类上导出代理类,导出不同的代理类来表现不同的语义关系,导出不同的代理类来满足不同用户的需要。像关系数据库里面的表,通过关系代数运算,可以计算出用户所想要那种表,达到同样的效果。对象代理模型的一致性维护是通过更新迁移来实现的,这实际上就说当我们增加一个对象的时候,我们可能会要给它增加一个代理对象,当我们删除一个对象的时候,我们要把他的代理对象都要删除。当我们修改一个对象的时候,我们可能会删除它的一部分代理对象和增加一部分代理对象。
我们设计了一种语言来让用户来定义代理类,这个语言完全按SQL风格来设计的。以下是几个例子:
对象代理模型在数据库优异学术会议ICDE1995和权威期刊TKDE2015发表后,得到来自德、美、日等多国学者引用。在国家863数据库重大专项的支持下,我们基于对象代理模型,研制了对象代理数据库系统TOTEM,获得了教育部高等学校科技进步二等奖。
二、如何实现复杂数据的管理
我们这个数据库有哪些特别的功能?首先,是柔软对象的管理功能,可以为对象创建不同的视图,视图上允许有追加的属性,而且既有虚的又有实的。第二个功能是对象动态分类功能,对象随着状态的改变可以分属到不同的类,这在原来是很难做到的。第三个功能是跨类查询功能,跨类查询功能为什么能实现?因为对象和代理对象之间有双向指针,沿着这个指针根据它的语义关系,就能进行导航式的查询。这种查询能够支持关联计算,所以这个功能对后面的数据分析非常有效。这些功能我们都申请了国家发明专利的。
我们后来又开始了一个研究工作,主要针对复杂数据管理。 我们知道,对象代理数据库比较适合于复杂数据管理,所以我们对复杂数据管理做了进一步的研究。当时我们是想做一个支持技术创新的海量复杂数据管理基础研究。这个工作得到了国家自然科学基金重点项目的支持。这个工作的必要性是什么?我想在数据库技术大会场合,大家肯定是比较认可的。第一个我们知道企业都在搞技术创新,它的源泉是科学创新,然后它的目的是产品创新。在整个创新活动过程中,我们会涉及到海量的数据,像科学数据、科技文献和设计文档。怎么能把这些数据有效地管理起来、利用起来?这就是我们研究的背景。
我们的目的是什么呢?第一个,对政府决策部门,特别是科研立项能够提供支撑,通过分析这样一些数据,能够制定科技发展战略,确定攻关领域。第二个为科研工作者把握科技发展脉络,确定科技前沿,找到研究问题提供帮助。第三个是帮助企业跟踪同行的发展,保持技术领先,对一些未来的技术风险进行预测,提供支持。
这个工作所面临的挑战是“非常复杂”,因为我们的关键词就是复杂。首先第一个,数据关联非常复杂,因为我们涉及的这些数据存在着非常复杂的语义关系。第二个数据处理非常复杂,复杂关联计算能够进行技术热点分析、引证分析和风险分析,在海量数据环境下其算法复杂性非常高。第三个,所分析的结果怎么让人们理解,即数据展示复杂,支持技术创新服务能够揭示知识内在联系和技术发展趋势,其复杂展现形式需要可视化。
所以我们归纳出这三大科学问题, 第一个是如何使海量复杂关联可管理。第二个是如何使海量复杂关联可计算。第三个是如何使海量复杂关联分析的结果可理解。我们研究要达到这样一个效果。
我们的研究目标是,针对科学数据、科技文献和设计文档等海量复杂数据,研究分层管理体系架构,实现基础数据集群化管理、语义数据集约化管理、用户数据个性化管理,并通过复杂关联可计算方面研究,能够以可视化方式为政府部门、科技人员和企业单位提供技术热点分析、引证分析、预警分析等技术创新服务。
下图是我们的技术方案:
其中十分重要的是我们基于数据库能够为用户提供个性化的数据空间。数据空间是什么概念?我们知道不可能每个人把所有网上数据都获得,也没有必要,用户需要把自己感兴趣的数据收集起来,按照自己的方式进行组织。数据空间就是起这个作用。
为什么我们的对象代理数据库在这样一个三层体系架构中能够发挥非常重要的作用?首先,我们创建数据空间,里面保留的是代理对象,代理对象与其源对象公共的部分是继承过来的,不会重复存,这样会减少数据的冗余。第二个就是说在数据空间里面,用户可以追加个性化的数据。第三个方面,对象代理数据库有一个自动分类的功能,当新的数据来时,都会自动地分发到数据空间里面,使得数据空间里的数据一直保持着比较高的新鲜性。
有这样一个三层体系架构,我们也带来一个新的问题,数据库里面的空间是有限的,存的数据一定要符合用户的需求,同时也要把基础数据当中相关的数据都能够收集起来,既全又能反映个性化的需求,所以它要求一种按需管理的方式,需要动态维护数据在三层中的一致性。
三、专利数据的特性与分析
最后一个主题讲专利。专利数据管理与分析系统也就是按照这样一个体系架构来实现的。首先有一个专利下载与管理工具,也就是数据获取层。通过分布式的方式,通过搜索引擎,根据用户的需求从网上去爬取所有的专利,然后,因为专利数据里面大量的是文本数据,我们用全文索引对数据库做一个增强,然后在数据库上面按对象代理模型创建个性化数据空间。
按这样一种方式来提供专利服务,能达到一些什么效果?首先第一个,用户可以根据自己的需要创建个性化的专利空间,比如说要开发某项技术,就可以根据技术的要求去搜集相关的专利放在专利空间里面,对其进行分析,分析的结果可以作为个性化的数据放到专利空间里面。第二个,我们数据库有一个自动分类功能,当新的专利授权的时候,它马上就可以反映到用户的个性化数据空间里面,这样就保证了他所收集的专利很全,实际上专利检索最重要的特点是一定要全、不能漏,漏了之后就很麻烦。第三个,跨类查询的功能能够达到分享对专利分析的结果,比如说我对专利有分析结果,通过双向指针,我就可以知道别人对同样专利的分析结果,然后进行一个总结,就能集思广益,更好地利用专利。这就是利用我们数据库构造的一个专利检索和分析系统。
我们能够提供哪些分析呢?首先是量化分析,我们通过数量关系能够知道所给定企业所具有的技术实力怎样?它的技术及分布情况怎么样?企业拥有的核心技术人员主要有哪些?还一个就是能够进行竞争企业在相同领域里面的实力的对比。
我们最近做了一个工作,我觉得比较有意思, 通过关联计算能够得到一些更有价值的分析结果 。首先第一个就是专利价值的评估,因为我们知道很多企业开发一个产品,要使用某项技术时,如果这项技术是受专利保护的,而且可能有多项专利,就想知道哪个专利的价值更高。就像我们要读论文,要知道哪篇论文最值得去读。我们知道判别一个网页和论文的价值的话,是通过它的引用关系,在英文专利当中都有引用关系,但中文专利是没有引用关系的。但是我们怎么样去发现它的潜在引用关系,通过潜在引用关系来对专利价值进行排序?我们按这样的一种方式定义潜在的引用关系,我们知道专利是由受时间限制的,不同授权的时间有前有后,那么后面的专利如果跟前面的专利的内容很相似,这潜在地表明后面一个专利在某种程度上引用了前面的专利,而且相似度越高,引用的强度就越大。第二个就是说专利的价值跟时间有关,专利越老了,越不值钱。根据这样一些因素,我们构造了一个专利潜在引用关系,根据这样一个引用关系。 我们通过一些公式可以算出哪些专利的价值高,哪些专利的价值低。
关于专利我们还关心的一个特点,新颖性。 因为我们生产一个产品的时候,希望这个产品比较“酷”。你采用的技术越新颖,你的产品就越酷。我们对同样的这样一些专利,能不能根据它的新颖度进行排序,同样经过关联计算,也能达到这样一个目的。我们根据新的产品和以前产品之间的相似度来确定它的新颖度。当一个新产品发布了,如果这个新产品与之前产品很相似,那么之前产品还是非常新颖。根据这样一种考虑,我们认为一个专利的新颖度跟之后授权的相关专利相似度有关,通过相似度计算可以建立关联关系,又通过这种关联关系的计算,我们就能够算出哪些专利比较新颖。
有些技术靠买专利买不到,就要自己开发。而自己开发的时候是有风险的,比如说某些企业跟华为比,华为有很强的实力。如果华为在开发技术,它会很快把技术开发出来,申请专利,在你还没开发出来的时候已经授权了,你还得花钱去买专利。所以你要开发一个技术的时候,你要分析你的竞争对手在哪些方面会开发一些新的技术,就是对未来开发技术的主题进行预测。怎么能算得出来?同样可以根据关联关系计算出来。
这主要跟什么因素有关? 一方面,跟专利权人之间的关联关系有关,与企业在哪些主题上,在哪些领域实力强弱有关,另外跟主题之间的关联关系也有关。 我们就把这样一些关联关系构造成一个异构的网络,根据异构的网络,我们就可以算出未来你所分析的企业在未来会在哪些技术方面进行投入。其实分析结果的合理性解释起来也非常容易,为什么?一个企业如果在某项技术在某些领域实力很强,它很有可能在这个领域里面继续来进行技术开发,如果说有一个领域跟它很强的领域很相关,它很可能会做那些相关度很强的技术开发。如果说它的合作者在从事某项技术,那么它很有可能会从事合作者比较接近的技术开发。还有一个主题之间相关性,比如说我们现在搞数据库的,那么知识图谱跟我们数据库主题关联比较强,那么我们很可能下一步就会去研究知识图谱。那么通过这种关联关系的计算,我们就可以预测所想分析的企业在未来会开发什么样的技术。 如果说这个企业在这方面很强,我们尽量回避,我们就要去找能够跟它的技术形成互补的领域,这样能够达到相互合作,共同发展目的。
四、讲在最后
总结一下, 数据库在AI时代更多的是要关注语义关系,要更好的能够表现语义关系,要能够基于这些语义关系,利用目前强大的计算能力,算出一些我们未知的语义关联关系,给我们提供更有价值的帮助。 这就是我跟大家分享的主题。
另外我还多说一句话。因为我是中国计算机学会数据库专委会副主任,负责与企业的交流并促进产业化这方面的工作。我们有个数据库学术年会,与DTCC数据库技术大会构建了一个交流的平台,每年邀请产业界的人士到我们学术界去做主题分享,而DTCC技术大会也请我们学术界的老师也来做分享,我就是借这个机会来给大家做分享的。
我们做学术研究最大的价值就在于成果能够落地,能够在产业界用起来、能够产生社会价值,而不是仅仅一些论文,这是我们的最大成就感。另外我们对产业界有很大的期待。因为产业界的问题,才是我们最值得研究的问题。
所以欢迎大家如果有好的一些想法和好的一些问题,需要跟学术界合作, 可以通过DTCC技术大会平台,提出申请,由技术大会向我们学术大会进行推荐。希望我们桥梁更加畅通,能够进行经常性的交流,使得我们的产业界和学术界得到共同的发展,谢谢大家。
关于DTCC
第九届中国数据库大会以“数领先机•智赢未来”为主题,设定2大主会场及22个技术专场,邀请来自国内外互联网、金融、教育等行业百余位技术专家,共同探讨Oracle、MySQL、NoSQL、大数据、机器学习、区块链、数据可视化等领域的前瞻性热点话题与技术。
(更多精彩报道,请戳: http://www.it168.com/redian/dtcc2018/ )