• 收藏
  • 加入书签
添加成功
收藏成功
分享

基于图数据库的企业关系可视化系统设计与实现

付江 巴运鑫 尹子昊 陈必镪
  
扬帆媒体号
2025年21期
上海工程技术大学

摘 要:在互联网和企业网络交互越来越普遍的发展环境下,企业的数据量越来越大,网络模型也越来越复杂。传统的数据存储方式——关系数据库,数据存储、表结构在一定程度上都是固定的,所以对于涉及多对多关系的商业数据来说,传统的数据库,尤其是在大数据量的情况下需要使用复杂的联表查询方式,造成大量的时延和无法实时有效的提取网络信息。为了解决这一问题,我们将采用图数据库来构建企业关系可视化系统,改变现有的数据模型。

本系统将采用“Neo4j+SpringBoot+Vue”黄金三角来进行构建,即在数据层利用图数据库Neo4j独有的图模型(节点-边),结合Py2Neo工具实现企业、企业节点之间的股份、合作关系、产业链等异构数据关系的图转化,拥有原生储存企业之间多元关系的明显技术优势,在服务层利用基于SpringBoot的微服务集群,可以快速组建数据清洗、关系运算、API接口;在展现层,采用Vue,动态组件化呈现页面,并使用Echarts,可以对海量节点商业关系进行可视化拓扑展示。

关键词:企业关系管理,图数据库Neo4j,SpringBoot,vue,ECharts

1 引言

1.1 研究背景

全球范围内企业数目与日俱增,传统关系型数据库在处理海量企业关系数据时面临分析深度与可视化能力的双重挑战,而图数据库凭借节点-边结构与高效关系遍历能力,成为企业关系管理的优选方案。DB-Engines数据显示,图数据库自2013年起增速领跑数据库领域,全球百强企业76%已将其用于股权关联、供应链分析等场景,显著提升数据可视化与决策效率。

学术界与产业界协同推动技术落地。胡芳槐团队提出数据驱动增量构建法[1],李涛等系统梳理知识图谱发展脉络[2],形成完整方法论。阿里、腾讯等企业已构建企业关系图谱,应用于产业链追踪和关联交易识别,验证了图数据库在商业场景中的核心价值。

1.2 研究意义

本文将基于图数据库技术,搭建一个面向投资人和企业的高效、安全的企业关系可视化平台,实现企业投资数据、企业控股数据的整理、存储、分析数据,从而为用户提供完整的关于企业关系的知识图谱。

系统的实现有助于推动图数据库技术在企业关系分析领域的应用和发展,为其他企业提供可供借鉴参考的样例。通过企业关系领域创新模型方法的探索,从而促进图数据库技术在企业关系领域的应用和发展,为企业的发展提供更加全面深入的信息支撑。

2需求分析

2.1功能需求

2.1.1登录与注册功能

为了实现系统的用户认证,以及实现不同角色的登录和不同账号的安全,本系统对不同的登录方式进行设计;输入密码时,系统提供显示密码功能;实现记住账号的功能;密码找回功能;用户注册功能。

2.1.2用户信息管理功能

用户个人中心:实现用户对个人信息的维护及历史记录管理,即实现系统的密码修改功能;记录用户的查询历史记录和操作日志,允许用户进行查看、删除。

管理员用户管理:用户列表展示、用户查看、修改用户权限和用户管理功能。

2.1.3关系筛选与可视化功能

系统核心功能是企业关系的筛选与可视化。支持企业名称的模糊搜索,提供实时下拉提示匹配结果,并支持同时选择两个企业进行关系分析;提供多种关系类型筛选,并支持关系层数调整(1-5层),筛选条件实时生效,动态更新结果;支持以列表形式展示所有可能的关联路径,支持路径选择与高亮显示,并详细展示路径中的每个节点和关系类型;使用力导向图展示企业关系网络,不同节点类型(企业、个人)采用不同样式,支持节点拖拽、缩放、全屏等交互操作,并提供图表导出功能。

2.1.4咨询服务功能

系统提供专业咨询服务支持,提升系统使用体验。展示企业关系洞察、市场分析、智能分析支持等服务;提供即时聊天窗口,可随时在聊天窗口向客服人员提问;提供预约表格;支持留言表单,用于用户非即时问题的咨询反馈。

2.1.5系统设置功能

设置功能包括通用设置、系统消息和退出选项3个二级功能。通用设置中有主题(随系统、高亮模式、浅色模式)、多语种(中文、英语等)、字体(小、默认、大)、深色模式(单独开关),还有数据本地储存自动保存等功能。系统通知则接收来自系统的各种通知信息。

2.2非功能需求

2.2.1 阿里云服务器ECS

阿里云ECS(ElasticComputeService)是高性能、高稳定、低成本且可弹性扩展的Iaas(基础设施即服务)级云计算服务,支持多种服务器类型与上百种实例规格族,满足从小至大的不同场景需求。

阿里云ECS通过ISO27001、MTCS等多种国际安全认证,有硬件级加密方式来保障传输和存储时的安全,为数据的可靠和安全提供保障,三副本数据设计实现对服务器硬件故障时的迅速自动修复,避免数据损坏,保证业务的持续性。

阿里云ECS从成本效益上给新用户提供了更多选择。阿里云对个人版试用额设置为300元,企业版试用额设置为660元。同时使用阿里云ECS可以按需付费、按量付费节约了使用成本。

3系统设计

3.1 技术选型

3.1.1 图数据库

本系统采用Neo4j作为主要数据库,可以充分挖掘利用它在图形数据存储和查询上的独特优势。Neo4j是一个非常流行的图数据库,其拥有高效的图形查询语言Cypher,Cypher语言简洁明了的语法简化了图形数据的查询方式;Neo4j擅长存储和查询高联系数据,能很快处理复杂关系和网状关系;Neo4j拥有优化的存储引擎和查询机制,保证了对大型图形数据的有效处理。

3.1.2 后端

后台采用SpringBoot开发,Spring Boot 是一个建立在 Java 语境下的企业级应用的快速配置、快速部署的轻量级框架;自动化的配置和依赖注入让快速构建企业级应用的后端服务成为可能;SpringBoot还提供了丰富的扩展性功能如SpringSecurity(安全认证)、SpringBatch(批处理)等,便于复杂业务场景的实现。

3.1.3 前端

前端采用Vue框架,利用Vue的组件化的开发特点,完成数据展示、查询输入、用户登录等功能,调用后端的API,实现动态加载和实时更新;Vue框架本身体量较小,学习成本较小,适于快速开发与迭代,对于掌握了JavaScript的使用者而言Vue的语法和设计理念都很易上手。

3.2 图数据库设计

3.2.1 核心实体及关系

企业(Company):表示系统中的各个企业。属性:名称、成立时间、注册资本、行业类型等。

自然人(Person):表示系统中的各个自然人。属性:名称、编号等。

持股关系(has_stake):表示企业持有某个企业的股份。属性:实际出资、持股比例。

任职人员(employee):表示某个职员在某个企业工作的关系。属性:职位。

法定代表人(legal_rep):表示某个自然人作为企业的法定代表人的关系。

分支机构(has_branch):表示某个企业拥有分支机构的关系。

供应关系(supplier):表示某个企业是另一个企业的供应商。属性:中标时间。

实际控制人(actual_control):表示某个自然人或法人对企业有实际控制权的关系。属性:持股比例。

3.2.2 数据库 ER 图设计

4 系统实施

4.1前端功能界面

(1)登录界面:

登录界面分为用户登录和管理员登录两种模式(如图4.1)。

在用户登录界面中,系统提供了“记住账号”选项,方便用户快速登录,同时提供“忘记密码?”、注册账号来帮助用户解决登录问题。管理员登录界面与用户登录界面在布局和功能上保持一致,但输入项有所不同,进一步强化了角色区分和权限管理。

(2)用户信息管理界面(如图4.2):

个人中心:个人中心展示了用户的基础信息,包括登录的用户名,密码(默认隐藏不显示),邮箱,手机号,所在地等信息,同时允许用户对个人信息进行修改,此外个人中心还保存着用户的操作记录,如可视化查询记录。

用户管理:通过用户列表展示所有用户的基本信息,支持查看用户详情、修改用户权限以及删除用户操作;“查看”功能将展示被查看用户的基本信息;“修改权限”功能允许管理员为用户分配不同角色来获取不同的权限。

(3)关系筛选与可视化界面(如图4.3):

输入查询公司名字会根据检索名字弹出相应列表,查询的两个公司主体均从列表中选着后,自动根据关系筛选和关系层数进行查询。右侧图表展示不同主题的关系,可以拖拽改变位置。左侧下方出现关联列表,显示主体之间完整的关系路径,可以点击相关路径在右图中实现高亮该条路径。

(4)咨询服务界面:

咨询服务界(如图4.4)面通过模块化设计实现预约咨询、在线咨询、服务展示等功能。用户可通过预约弹窗填写信息进行服务预约,在线咨询模块支持自动回复和人工客服转接,提升咨询效率。整体设计注重用户体验,通过简洁界面和自动化流程提高咨询服务的可访问性与实用性。

(5)系统设置界面:

系统设置包括了系统的“通用设置”,和“系统通知”,其界面如图4.5所示:

4.2 服务端设计实现

4.2.1服务端API接口设计与数据库交互

前端与后端的数据交换

前端与后端之间的数据交换主要通过HTTP协议实现,前端通过Vite 代理连接目标后端,采用axios库进行网络请求。以下是对部分接口介绍:

(1)接口1:模糊查询公司名称信息

请求方式:GET,请求URL:/api/queryCompanyNameInfo,请求参数:name(字符串,公司名称的查询关键字),示例代码如下:

axios.get("/api/queryCompanyNameInfo", { params: { name: queryString } })

.then(response => {const data = response.data.companyNameVOList.map(company => ({ value: company.name,id: company.id}));if (searchBox === 1) {this.suggestions_1 = data;this.showDropdown1 = true;} else {this.suggestions_2 = data;this.showDropdown2 = true;}}).catch(() => this.clearSuggestions(searchBox));

数据格式及含义:queryString:用户输入的公司名称关键字,response.data.companyNameVOList:后端返回的公司名称列表。

(2)接口2:查询公司详细信息

请求方式:POST,请求URL:/api/queryCompanyById,请求参数:id(数值,公司ID),示例代码如下:

axios.post('/api/queryCompanyById?id=' + params.data.id).then(response => {

const re = response.data.companyData[0];label = `公司名称:${re.name}<br>法人:${re.legal_rep}<br>注册资本:${re.register}<br>成立日期:${re.start_data}<br>` +

`<a href="" target="_blank" style="${linkStyle}">查看企业详情</a>`;});

数据格式及含义:params.data.id:前端传递的公司ID,response.data.companyData:后端返回的公司详细信息。

(3)接口3:查询节点与链接信息

请求方式:POST,请求URL:/api/NodeAndLink,请求参数:postData(JSON对象,包含查询条件,如节点ID、层级深度等),示例代码如下:

const postData = this.prepareDataToSend();console.log('接口3发送的请求信息:', postData);axios.post("/api/NodeAndLink", postData, {headers: { 'Content-Type': 'application/json'}})

数据格式及含义:postData:前端准备的查询数据,Content-Type:指定请求体的内容类型为JSON。

(4)接口4:查询公司路径信息

请求方式:POST,请求URL:/api/CompanyPath,请求参数:postData(JSON对象,包含查询条件,如起始节点ID、目标节点ID、层级深度等)示例代码如下:

const postData = this.prepareDataToSend();console.log('接口5发送的请求信息:', postData);axios.post("/api/CompanyPath", postData, {headers: { 'Content-Type': 'application/json'}})

数据格式及含义:postData:前端准备的查询数据,Content-Type:指定请求体的内容类型为JSON。

2、后端与数据库的数据交换

通过Bolt协议进行通信,数据库运行在服务器上,采用Neo4j Java Driver与Neo4j图数据库进行交互。以下是对部分接口介绍:

(1)查询公司名称信息(模糊查询)

后端接口:ICompanyDao.findByNameContaining

Cypher查询语句:MATCH (c:Company) WHERE c.name CONTAINS $name RETURN c LIMIT 20

参数:$name(字符串):公司名称的关键字,返回数据格式:List<Company>,包含公司节点的列表。

(2)查询公司详细信息

后端接口:ICompanyDao.findByNodeId

Cypher查询语句:MATCH (c:Company) WHERE ID(c) = $id RETURN c, labels(c)[0] AS label

参数:$id(长整型):公司节点的ID,返回数据格式:List<Company>,包含公司节点的详细信息。

(3)查询节点与链接信息

后端接口:INodeAndLinkDao.findNodeAndLink

Cypher查询语句:MATCH (start),(end)

WHERE ID(start) = $id1 AND ID(end) = $id2

CALL apoc.path.expandConfig(start, {endNodes: [end],maxLevel: $level,limit: 10,bfs: true,filterStartNode: true,relationshipFilter: $relationships,uniqueness: 'NODE_PATH'}) YIELD path RETURN path

参数:$id1(长整型):起始节点ID。$id2(长整型):目标节点ID。$level(整型):层级深度。$relationships(字符串):关系类型过滤条件,返回数据格式:List<Object>,包含路径信息的列表。

(4)查询公司路径信息

后端接口:ICompanyPathDao.findCompanyPath

Cypher查询语句:MATCH (start),(end)

WHERE ID(start) = $id1 AND ID(end) = $id2

CALL apoc.path.expandConfig(start, {endNodes: [end], maxLevel: $level, limit: 10, bfs: true, filterStartNode: true, relationshipFilter: $relationships, uniqueness: 'NODE_PATH'}) YIELD path RETURN path

参数:$id1(长整型):起始节点ID。$id2(长整型):目标节点ID。$level(整型):层级深度。$relationships(字符串):关系类型过滤条件,返回数据格式:List<Object>,包含路径信息的列表。

4.2.2服务端部署至阿里云ECS服务器

1、阿里云服务器租赁

对于本系统,我们所租赁的阿里云服务器主要配置为:CPU:2核(vCPU)

内存:2 GB ,操作系统是Linux(Ubuntu 22.04 64位)操作系统,公网 IP 地址为:47.98.142.129。

2、服务器部署详细步骤

服务器操作系统为Linux(Ubuntu 22.04 64位),使用Xshell工具连接服务器,数据库选用Neo4j Community Edition 5.16.0。安装后,将APOC插件放入plugins文件夹,可扩展Neo4j的功能。接着修改neo.conf文件,根据需求调整配置参数,以优化性能并确保安全。最后导入数据库数据,完成配置后启动数据库服务。

前端采用Vue框架开发,将前端项目打包为dist压缩包后上传至服务器,并解压到指定目录。安装Nginx作为反向代理服务器,配置Nginx的访问路径及端口信息。完成配置后启动Nginx服务,前端应用即可正常运行。

后端基于Spring Boot框架开发,将后端项目打包为可执行的jar包后上传至服务器,通过简单的命令即可运行jar包,启动后端服务。Spring Boot的内嵌Tomcat服务器使得部署过程更加便捷,无需额外配置复杂的服务器环境。

4.3图数据库实现

在论文中,所采用的数据部分来源于作者参与过参与的项目。然而,鉴于数据中包含的信息具有一定的敏感性,为了遵循数据保密原则,仅对部分公司的名称以及它们之间的关系进行了保留。其余内容均为作者基于研究目的和逻辑需要进行的合理杜撰,旨在构建一个完整的分析框架,以更好地探讨相关问题。如图4.7为数据入neo4j图数据库中部分数据样式截图:

5 总结

面对企业规模和业务的拓展需求,关系型数据库已很难满足对各种复杂关系管理的需求。为了高效处理企业内部及与其他企业之间的各种关系,本研究致力于设计并实现基于图数据库的企业关系可视化系统。

该系统基于图数据库“高效关系查询与可视化展示”的特性,通过直观灵活的方式存储、查询、管理企业关系数据;通过构建企业实体之间关系图谱,帮助企业更好地了解自身业务网络、寻找潜在合作伙伴、优化合作方式,形成一个更加活力、开放的企业商业合作生态,提升企业的竞争力、创新力。

参考文献:

[1]胡芳槐. 基于多种数据源的中文知识图谱构建方法研究[D]. 华东理工大学, 2015.

[2]李涛, 王次臣, 李华康. 知识图谱的发展与构建[J]. 南京理工大学学报, 2017, (01): 22-34.

[3]王余蓝.图形数据库NEO4J与关系据库的比较研究[J].现代电子技术,2012,35(20):77-79.

[4]姚佰允,张豪,杜瑞庆.基于SpringBoot与Vue的学院人员管理系统设计与实现[J].无线互联科技,2025,22(02):78-83.

[5]徐小辉,刘江涛,高涵,等.基于SpringBoot+Vue框架的采气方案系统开发[J].计算机仿真,2021,38(06):248-250+382.

[6]李晓宇,韩飞驰,黄文世,等.基于阿里云ECS服务器的项目前端搭建及数据存储[J].科技创新与应用,2023,13(26):22-25.

[7]李晓宇,韩飞驰,黄文世,等.基于阿里云ECS服务器的项目前端搭建及数据存储[J].科技创新与应用,2023,13(26):22-25.

[8]吕志强.基于Vue前端开发框架的管理系统设计[J].电脑知识与技术,2024,20(36):56-59.

[9]王力,韩红旗,高雄,等.关系数据库向Neo4j图数据库转化的应用研究——以工程科技词系统为例[J].中国科技资源导刊,2021,53(05):55-65.

[10]王瑞萍,刘峰,杨媛琦,等.审计知识图谱的构建与研究——基于Neo4j的图谱技术[J].中国注册会计师,2020,(09):109-113.

[11]丁洪丽.基于Neo4j图数据库的人员关系挖掘[J].电讯技术,2020,60(07):771-777.

[12]冉从敬,徐晓飞.基于NodeJS+ECharts的专利权人引证关系可视化方法研究[J].情报科学,2018,36(08):77-83.

[13]章锐,陈树勇,刘道伟,等.基于ECharts的电网Web可视化研究及应用[J].电测与仪表,2017,54(19):59-66.

*本文暂不支持打印功能

monitor