Git Product home page Git Product logo

graphanalysis's Introduction

图分析系统设计与实现

概述

图分析系统(Graph Analysis System)又名关联分析系统(Association Analysis System), 该系统的研发旨在支持大规模图数据的交互式可视化分析,图数据在当今世界数量极其庞大, 怎么利用这些数据成为数据科学家不得不考虑的问题,该系统解提供了一种解决方案,博士阶段会集成分类、模式挖掘等算法, 逐渐开源该系统。

功能模块

  • 用户管理模块
  • 数据源模块
    • 支持数据库
      • 目前数据库支持MySQL、PostgreSQL、Greenplum(2017/4/26)、pipelineDB(2017-7-5),后期会考虑OrientDB作为中间数据库层
        • 还需要尝试TimescaleDB、deepgreen这些基于PostgreSQL 9.5.X版本的数据库
    • 支持文件格式
      • 目前只支持JSON数据格式,需要扩展支持的文件格式
  • 图展示模块
  • 图分析模块
    • 目前支持下面算法
      • firstNeighbors
      • breadthFirstSearch
      • depthFirstSearch
      • pageRank
      • MCL Cluster Algorithm
      • Sampling Algorithm(10个)
  • 异常处理模块
    • 当出现异常会给固定的用户发送邮件提示,用户点击的页面会跳转到error提示页面 (2017/4/20)
    • 采用的是Spring的全局异常处理器操作,但是当前版本还不完善的情况下,注释掉了该段代码,目前还是希望能抛出异常,方便调试 (2017/4/20)

版本迭代历史

  • 2017/2/28 实现了第一个版本的迭代,其中包含了从数据库中读取数据,并构造JSON字符串,达到了系统基本可用的状态;
  • 2017/3/7 实现了第二个版本的迭代,并对前一个版本中出现的bug进行了修复,并在后台实现了计算节点的度,并将节点的度赋值为weight属性;(2017/3/16目前可能会废弃这个版本,极其影响性能,而且目前来看这个操作没意义)
  • 2017/3/13 实现了将上述两个版本的代码融合到一个版本中,在DbService.java文件的函数dbDataFormatJson有三个版本,每一个版本的实现的功能请参见相应的Javadoc说明
  • 2017/3/15 在分支paging上实现了数据库分页操作,一页页的构造JSON字符串(每次都是发起一个ajax请求),能将支持渲染的点增加到8000左右
  • 2017/4/22 完成数据库的更换,目前支持MySQL、PostgreSQL、Greenplum,在更换数据库之后,得到一个意外的收获,点为7699,边为80000,这样差不多10倍的关系的数据,能够显示出来,并且追踪代码的执行时间,发现需要半分钟显示这些点,慢的原因是浏览器渲染比较慢,但是后台在生成这些点和边的数据时,只需要1s
  • 2017/4/23 该版本实现增量加载,提高用户的友好性,选用redis缓存中间计算结果,具体采用redis中的hash数据结构,在该版本中仅仅缓存了sourceNode和targetNode的数据,sourceNode设计的hash结构为(用redis中的语法表示): hset sourceNode "sourceNode:ip地址:数据库名:数据库类型:表名:列名:列值" "节点编号" ;targetNode设计的hash结构为(用redis中的语法表示): hset targetNode "targetNode:ip地址:数据库名:数据库类型:表名:列名:列值" "节点编号",并且对结果的正确性进行了测试
  • 2017/4/26 在increseGetJsonData方法上加锁,使得从客户端发来的请求能一个个的完成,而不是一次一组(通常会是6个SQL请求为一组),提升了整个系统的交互性能
  • 2017/4/26 实现了不分页情况下的数据缓存,减少后台构造字符串的时间,将之前的计算结果缓存到redis中
  • 2017/7/5 增加了PipelineDB数据库,非核心功能
  • 2017/8/6 增加中间数据库层,该层对用户透明,目的是为了方便算法的实现,比如路径检索算法
  • 2017/8/9 完成均匀随机点抽样算法、均匀随机边抽样算法、均匀随机边抽样改进算法、均匀临近点抽样算法,并且证明了均匀随机点抽样改进算法效果出奇的好
  • 2017/8/11 完成了不均匀随机点抽样、不均匀随机边抽样算法、基于宽度优先遍历的抽样算法,不均匀是根据点的度来衡量每个点的重要性
  • 2017/8/14 完成了基于深度优先遍历的抽样算法,该算法性能很差,几乎没有改进的余地
  • 2017/8/15 完成了基于markov-chain Monte Carlo的抽样算法,当前被认为是最好的算法之一
  • 2017/8/16 实现了最基本的基于随机游走的抽样算法、森林火灾抽样算法,随机游走算法本身的性能也是优于其它不是基于随机游走的抽样算法,森林火灾抽样算法 本身是基于BFS的抽样算法,改进后没发现性能有很大的变化
  • 2017/8/22 集成了KMeans、EM、DBSCAN、HDBSCAN、KMedoids五个向量聚类算法,用于度的聚类(核心功能)
  • 2017/8/25 处理实验用的数据集,处理完成的数据集见com.uniplore.graph.dataset

graphanalysis's People

Contributors

junpengzhu avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.