# graph **Repository Path**: studiox/graph ## Basic Information - **Project Name**: graph - **Description**: 定义通用的图操作API接口,将底层不同类型的图数据库操作进行封装。支持图数据检索查询、血缘影响查询、以及图数据的高级分析等功能。适配多类型主流图数据库,比如Neo4j、JanusGraph、NebulaGraph等。提供基础框架代码及前端图形查询页面,基于该源码工程可快速搭建代码工程脚手架。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: trunk - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 5 - **Created**: 2021-07-14 - **Last Updated**: 2025-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Graph 1.0 #### 介绍 通过Java对象设计模式抽象定义图中顶点和边,将图数据库的操作做一层通用API接口封装, 可以屏蔽底层不同图数据库产品差异,对上游业务和开发同学来说可以更专注于业务功能开发。 #### 软件架构 ![img](./static/image/graph_arch.png) 提供常用图数据库操作API接口,支持图上顶点和边的插入、更新、删除以及血缘影响关系查询, 底层支持多种图数据库:Neo4j(嵌入式/远程实例连接)、JanusGraph(内存版/远程实例连接)、NebulaGraph(远程实例连接) 本项目包含几部分模块: 1). graph-common: 图顶点和边的对象定义、常量定义 以及 基础工具类等 2). graph-neo4j、graph-janusgraph、graph-nebulagraph: 适配不同图数据库的图查询语句实现 3). graph-persistence(model、mybatis、mybatis-plus、mybatis-tk、spring-jdbc)支持数据库持久化实现 4). graph-runtime: 支持不同图数据库作为底层图库查询引擎,RDB作为图顶点和边的持久化存储。GremlinService作为JanusGraph查询服务, 在resources下存放前端graph查询页面,可以通过http和websocket连接GremlinService发起图交互查询并可视化展示。 5). scripts: build目录下包含项目用到的各类脚本 以及 database目录下包含图顶点和边的数据库DDL定义 #### 安装教程 1. 项目代码通过Maven组织,支持公共Maven仓库配置后对源码编译测试运行 2. 项目文档 project_home/docker 下分别有 Neo4j 和 NebulaGraph 基于Docker安装部署步骤和命令 3. 如果需要远程连接图数据库实例,则需要提前部署好相关图数据库实例,并完成图数据库用户名密码等初始化操作 4. 如果需要运行graph-persistence下module,默认test case使用h2内存库,也可以换成mysql等外部数据库 #### 使用说明 1. 通过项目git clone下载代码至本地 2. 根目录下执行: sh scripts/build/build.sh 3. 各子模块可按需运行,runtime通过运行GraphRuntimeServer #### 参与贡献 欢迎有志青年一起加入,众人拾柴火焰高嘛 ^_^. 1). Fork 本仓库 2). 新建 Feat_xxx 分支 3). 提交代码 (需按规范编辑commit message) 4). 新建 Pull Request 如有技术探讨交流,欢迎邮件联系:njzhuyuqi@163.com #### 开源咖啡 ☕️ 开源不易,项目开发维护期间,投入不少业余时间 如果对你技术学习和工作有所帮助,捐赠一杯咖啡☕️ ![img](./static/image/graph_donate.png)