一种面向大数据的关系分析展示方法与流程

文档序号:12121700阅读:420来源:国知局
一种面向大数据的关系分析展示方法与流程

本发明涉及一种互联网应用技术方法,涉及数据拓扑展示技术,特别涉及一种面向大数据的关系分析展示方法。



背景技术:

随着互联网和通讯技术的迅猛发展和广泛应用,在相当程度上改变了社会关系网络,重构了网络与现实社会的关系,所以,网络社会的互动行为逐渐成为我们研究的重点,比如血缘关系(兄弟、婚姻关系等)、社会角色(领导、教师等)、情感关系(尊敬谁,喜欢谁等)、认知关系(知道谁,与谁看起来相似等)、行动关系(同谁开会,同谁吃饭等)、距离关系(两地距离)等。然而,随着网络通信方式越来越多,数据量越来越大,对于数据分析的难度也就越来越高,传统的行业应用系统很难实现高性能的数据展示。

传统行业应用系统对于一些信息往往会采用大量繁琐的图表来说明,图表的大量出现使得用户体验变得很差,可能需要很长时间来分析所有的数据和联系,而数据可视化后,用户可以快速发现关键点,有研究表明,80%的人记得他们所看到的,但只有20%的人记得他们阅读的,可见可视化的重要程度。



技术实现要素:

本发明提供了一种面向大数据的关系分析展示方法,针对互联网应用中的海量数据关系分析效率慢及展示体验差的现状,本发明提出的一种基于Neo4j图数据库和Flex的关系分析方法,能够支持网络存储和可视化展示,以便能够实现高性能的数据展示。其几乎方案如下所述:

一种面向大数据的关系分析展示方法,包括存储模块和展示模块,所述存储模块包括数据存储模块和查询分析模块,所述数据存储模块用于存储原始数据和数据之间的关系,采用Neo4j图数据库进行存储;存储时定义查询用的帐号作为根节点,每个账号名字作为一个节点,节点之间的关系作为连线显示;关系中的from(发送方)属性作为父节点,关系中的to(接收方)属性作为子节点,没有子节点的节点作为叶子节点;所述查询分析模块用于查询满足条件的海量数据并进行关系分析,所述展示模块用于将存储模块中的数据进行图表展示和展示操作。

所述查询分析模块能够分析的内容包括:数据关系类型、关系的方向性、关系值及关系的详细信息。

利用所述查询分析模块进行查询时,包括下列步骤:

1)根据查询条件查询数据,每个数据为一个关系,所以每个数据中存在一个父节点和一个子节点;

2)建立一个MAP(存储键值对元素的集合)集合,KEY(键)放父节点和子节点的名字,VALUE(值)为一个新的对象,其属性包括两个节点的名字、关系类型、关系值、关系方向;

3)循环查询到的数据;

4)判断MAP集合中是否存在两个数据节点名字的KEY值,如果存在,将对象取出并将其关系值加1,如果不存在,新建一个对象,关系值默认设置为1,并将对象添加到MAP集合;

5)设置对象的关系类型;

6)设置对象的关系方向,数据中存在用户名、发送方、接收方属性,如果用户名和发送方名字相同,方向为从左向右;如果用户名和接收方名字相同,方向为从右向左;如果MAP集合中已经存在过该对象且对象中关系方向既有从左向右又有从右向左,那么将该关系方向设置为双向;

7)将数据封装成XML格式发给展示模块。

所述展示模块将存储模块的数据进行展示时采用环形展示方法,让每一层的子节点数据以根节点为中心环形展示;对环形展示方法的展示操作有挖掘更深的关系网的二次扩展操作、隐藏/显示操作、查询定位操作、放大缩小操作、关系值显示操作、详细信息操作。

所述环形展示方法包括下列步骤:

1)提取节点和连线,创建节点对象数组和连线对象数组,循环所有的关系,每一个关系都会产生两个节点和一条连线,将节点保存到节点对象数组中,将连线保存到连线对象数组中,其中节点对象的主要属性包括:当前节点名称、连线数组、父节点对象;连线对象的主要属性包括父节点对象、子节点对象。

2)确定节点深度,以步骤1)中提取的对象数组和连线数组为基础数据,首先提取根节点下的子节点,然后递归查询每个子节点下是否还存在子节点,节点深度依次递增,其中,根节点深度为0,其子节点深度为1,依次递增,深度最高的节点为叶子节点;

3)设置根节点位置,根节点放在圆的正中心位置;

4)设置叶子节点位置,叶子节点作为圆的最外层数据进行展示,叶子节点的半径计算公式为节点的深度*基础半径,基础半径是根据展示画布的大小进行设置的;叶子节点的角度计算公式为2π/n*i,其中n为叶子节点总数,i为叶子节点的序号;

5)设置父节点位置,父节点作为圆的内层数据进行展示,父节点的位置是和其子节点个数相关的,当子节点的个数为奇数时,父节点的角度应该和其最中间位置的子节点角度一样,半径计算公式为父节点的深度*基础半径;当子节点的个数为偶数时,父节点的位置应该在最中间的两个子节点的正中间,角度计算公式为2π/n*1/2,其中n为子节点数,半径计算公式为父节点的深度*基础半径。

本发明描述的关系分析展示方法,能够满足海量大数据高性能查询分析的要求,支持可视化展示,并且具有良好的扩展性。

附图说明

图1是数据查询分析流程图;

图2是关系拓扑图展示算法流程图。

具体实施方式

为了解决现有技术的架构下,海量数据查询分析效率慢,界面用户体验差,本发明提供的面向大数据的关系分析展示方法,包括:

存储模块,主要是将抓取到的海量数据存储到Neo4j图数据库中,并提供查询分析功能。

展示模块,采用Flex(图形设计)技术对查询分析到的数据进行可视化展示。主要包括节点的展示算法、子节点的二次扩展、详细信息的查看、节点的查询定位(高亮显示)及关系程度显示等。

本发明提供的面向大数据的关系分析方法,可以支持可视化展示。

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

存储模块包括:

A1.数据存储,主要是存储原始数据和数据之间的关系,采用Neo4j图数据库进行存储。Neo4j是一个java开发的图数据库,它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。相对于关系数据库来说,图数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询,在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。Neo4j重点解决了拥有大量连接的传统RDBMS(关系型数据库)在查询时出现的性能衰退问题。Neo4j还提供了非常快的图算法、推荐系统和OLAP(数据挖掘)风格的分析,而这一切在目前的RDBMS(关系型数据库)系统中都是无法实现的。它提供了广泛使用的REST接口,能够方便地集成到基于JAVA、PHP、.NET和JavaScript的环境里。

A2.查询分析,查询满足条件的海量数据并进行关系分析,其中分析内容主要包括:数据关系类型、关系的方向性、关系值(比如通信类,记录通信次数)及关系的详细信息(包括时间、地点、内容等)等。具体描述如下:

先解释几个概念:

根节点:以哪个账号做的关系查找,就将其作为根节点,图形化展示时将其放到图层的正中间位置。

节点:每个账号名字就作为一个节点显示。

连线:节点之间的关系作为连线显示。

父节点:关系中的from属性作为父节点。

子节点:关系中的to属性作为子节点。

叶子节点:没有子节点的节点。

如图1和图2所示:

A21.根据查询条件查询数据,每个数据为一个关系,所以每个数据中存在一个父节点和一个子节点。

A22.建立一个MAP集合,KEY值放父节点和子节点的名字,VALUE值为一个新的对象,其属性包括两个节点的名字、关系类型、关系值、关系方向等。

A23.循环查询到的数据。

A22.判断MAP集合中是否存在两个数据节点名字的KEY值,如果存在,将对象取出并将其关系值加1,如果不存在,新建一个对象,关系值默认设置为1,并将对象添加到MAP集合。

A23.设置对象的关系类型。

A24.设置对象的关系方向,比如通讯类关系,数据中存在用户名、发送方、接收方属性,如果用户名和发送方名字相同,方向为从左向右;如果用户名和接收方名字相同,方向为从右向左;如果MAP集合中已经存在过该对象且对象中关系方向既有从左向右又有从右向左,那么将该关系方向设置为双向。

A25.将数据封装成XML格式发给展示模块,数据格式如下:

描述:

from:父节点

to:子节点

type:关系类型(邮件类)

aspect:关系方向,0:从左向右,1:从右向左,2:双向

relationValue:关系值(通讯次数)

展示模块包括:

B1.数据展示算法,为了使数据展示的更加清晰、美观,我们提供了环形展示算法,此算法可以让每一层的子节点数据以根节点为中心环形展示。

B2.二次扩展功能,即挖掘更深的关系网,比如我们通过查询分析知道A和B之间有关系,现在想知道B和谁有关系,那我们可以继续以B为父节点,查询分析和他有关的数据并进行展示,这样我们的关系网就会越来越庞大。

B3.隐藏/显示功能,当我们的关系网越来越庞大后,有些关系可能不是我们想要的,我们可以将其隐藏,用到时还可以再显示。

B4.查询定位功能,我们支持数据的模糊查询,并将查询到的数据节点高亮显示。

B5.放大缩小功能,我们支持整个或局部图层的放大与缩小,同时支持节点之间连线的放大与缩小,使用户能够更清楚的观察数据结果。

B6.关系值显示功能,在数据节点连线上我们会展示关系值,例如情感类关系,我们会显示数据之间的亲密程度;如果是通讯类关系,我们会显示他们之间的通讯次数等。

B7.详细信息查看功能,我们双击数据节点之间的连线,可以展示连线两端节点之间的详细信息。例如通讯类关系,详细信息主要包括通讯时间、通讯地点及通讯内容等。

其中对于步骤B1中数据展示算法,可以具体描述为:

B11.提取节点和连线,创建节点对象数组和连线对象数组,循环所有的关系,每一个关系都会产生两个节点和一条连线,将节点保存到节点对象数组(去重)中,将连线保存到连线对象数组中,其中节点对象的主要属性包括:当前节点名称、连线数组(一个节点会对应很多连线)、父节点对象等;连线对象的主要属性包括:父节点对象、子节点对象等。

B12.确定节点深度,以B11中提取的对象数组和连线数组为基础数据,首先提取根节点下的子节点,然后递归查询每个子节点下是否还存在子节点,节点深度依次递增(根节点深度为0,其子节点深度为1,依次递增),深度最高的节点为叶子节点。

B13.设置根节点位置,根节点放在圆的正中心位置。

B14.设置叶子节点位置,叶子节点作为圆的最外层数据进行展示。叶子节点的半径计算公式为节点的深度*基础半径,基础半径是根据展示画布的大小进行设置的;叶子节点的角度计算公式为2π/n*i,其中n为叶子节点总数,i为叶子节点的序号。

B15.设置父节点位置,父节点作为圆的内层数据进行展示。父节点的位置是和其子节点个数相关的,当子节点的个数为奇数时,父节点的角度应该和其最中间位置的子节点角度一样,半径计算公式为父节点的深度*基础半径;当子节点的个数为偶数时,父节点的位置应该在最中间的两个子节点的正中间,角度计算公式为2π/n*1/2,其中n为子节点数,半径计算公式为父节点的深度*基础半径。

以上实施例仅用于说明本发明而不是限制,并且在应用上可以延伸到其它的修改、变化、应用和实施例,同时认为所有这样的修改、变化、应用和实施例都在本发明的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1