图数据库HugeGraph简介与快速入门

2022-04-25 00:00:00 创建 用户 支持 部署 顶点

图数据库HugeGraph简介与快速入门

 

1. HugeGraph简介

1.1 HugeGraph概述

HugeGraph是一款由百度开源的图数据库(Graph Database)系统,可以存储海量的顶点(Vertex)和边(Edge), 基于Apache TinkerPop 3框架,支持Gremlin查询语言。 HugeGraph支持多用户并行操作,用户可输入Gremlin查询语句,并及时得到图查询结果。也可在用户程序中调用HugeGraph API进行图分析或查询。

HugeGraph在大的架构上与JanusGraph类似,但在很多细节上与JanusGraph有很多不同之处。如支持的后端存储系统、提供了可视化的工具等。


1.2 HugeGraph的特点

HugeGraph的主要特点如下:

  • 基于TinkerPop 3 框架实现,支持Gremlin图查询语言

  • 支持从TXT、CSV、JSON等格式的文件中批量导入数据

  • 具备独立的Schema元数据信息,方便第三方系统集成

  • 具备可视化操作界面,降低用户使用门槛

  • 存储系统采用插件方式,支持RocksDB、Cassandra、ScyllaDB、HBase及MySQL等多种后端

  • 优化的图接口:短路径(Shortest Path)、K步连通子图(K-neighbor)、K步到达邻接点(K-out)等

  • 支持属性图,顶点和边均可添加属性,支持丰富的属性类型

  • 可以对边和顶点的属性建立索引,支持查询、范围查询、全文检索

  • 支持多顶点ID策略:支持主键ID、支持自动生成ID、支持用户自定义字符串ID、支持用户自定义数字ID

  • 与Hadoop、Spark GraphX等大数据系统集成,支持Bulk Load操作


1.3 HugeGraph的主要模块

HugeGraph包括如下主要模块:

  • HugeGraph-Server: HugeGraph-Server是HugeGraph项目的核心部分,包含Core、Backend、API等子模块;

  • Core:图引擎实现,向下连接Backend模块,向上支持API模块;

  • Backend:实现将图数据存储到后端,支持的后端包括:Memory、Cassandra、ScyllaDB、RocksDB、HBase及MySQL,用户根据实际情况选择一种即可;

  • API:内置REST Server,向用户提供RESTful API,同时完全兼容Gremlin查询。

  • HugeGraph-Client:HugeGraph-Client提供了RESTful API的客户端,用于连接HugeGraph-Server,目前仅实现Java版,其他语言用户可自行实现;

  • HugeGraph-Loader:HugeGraph-Loader是基于HugeGraph-Client的数据导入工具,将普通文本数据转化为图形的顶点和边并插入图形数据库中;

  • HugeGraph-Spark:HugeGraph-Spark能在图上做并行计算,例如PageRank算法等;

  • HugeGraph-Studio:HugeGraph-Studio是HugeGraph的Web可视化工具,可用于执行Gremlin语句及展示图;

  • HugeGraph-Tools:HugeGraph-Tools是HugeGraph的部署和管理工具,包括管理图、备份/恢复、Gremlin执行等功能。


2. HugeGraph安装与部署

2.1 部署方式

有三种方式可以部署HugeGraph,如下:

  • 一键部署:HugeGraph提供了一个工具叫HugeGraph-Tools ,它是HugeGragh 的自动化部署、管理和备份/还原组件的工具。作者亲自尝试过这种部署方式,不推荐使用。原因是因为服务器在国外,在线安装很容易失败。

  • 下载tar包:推荐这种方式

  • 源码编译:一般用户不推荐

下面将介绍第二种部署方式。


2.2 HugeGraph下载

进入https://hugegraph.github.io/hugegraph-doc/download.html,选择当前(2019-02-09)HugeGraph-Server的新版本hugegraph-0.8.0.tar.gz,大约177M。这个包也是放在AWS上的,如果不方便下载的,可从我的百度网盘下载,链接:链接:https://pan.baidu.com/s/1PJBZjQiqDL2w2_GsEDplmQ 提取码:prdu

另外,好将HugeGraph-Studio也下载了,它提供了基于Web的可视化工具,类似于Neo4j Browser,非常方便。百度网盘链接:链接:https://pan.baidu.com/s/17WTJFLpSu84AmpENAkBbHA 提取码:xr5w


2.3 HugeGraph的安装

注:安装环境为CentOS7,且已安装好JDK1.8.

创建部署目录

[dennis@centos7 ~]$ sudo mkdir /opt/hugegraph

设置权限

[dennis@centos7 ~]$ sudo chown dennis:dennis /opt/hugegraph

先将安装包上传到用户根目录下,然后解压:

[dennis@centos7 ~]$ tar zxf hugegraph-0.8.0.tar.gz

[dennis@centos7 ~]$ tar zxf hugegraph-studio-0.8.0.tar.gz

将安装包移动到/opt目录下

[dennis@centos7 ~]$ sudo mv hugegraph-* /opt/


2.4 初始化数据库

注:只需要执行一次。

HugeGraph支持多种后端,默认采用rocksdb。rocksdb是Facebook开源的一款嵌入式可持久化的key-value数据库。详细请参考:https://rocksdb.org/

[dennis@centos7 hugegraph-0.8.0]$ bin/init-store.sh


2.5 启动HugeGraph-Server和HugeGraph-Studio

2.5.1 启动HugeGraph-Server

[dennis@centos7 ~]$ cd /opt/hugegraph-0.8.0

[dennis@centos7 hugegraph-0.8.0]$ bin/start-hugegraph.sh


2.5.2 启动HugeGraph-Studio

[dennis@centos7 ~]$ cd /opt/hugegraph-studio-0.8.0

studio.server.host默认为localhost,如果希望远程访问,需要修改为该主机的IP地址。如:

studio.server.host=192.168.142.169

[dennis@centos7 hugegraph-studio-0.8.0]$ bin/hugegraph-studio.sh


3. HugeGraph的简单操作

说明:这里通过HugeGraph-Studio图形化界面操作,这样更直观。

3.1 HugeGraph-Studio简介

HugeGraph-Studio是一个Web端,接受Gremlin查询语句的输入,并将语句发送到Huge-Server执行并返回结果。HugeGraph-Studio的输入框中,用户可以直接使用两个变量graph和g,其中graph就是当前连接的图对象,可使用该对象对图做各种增删改查操作; g是用于遍历图的一个对象,其本质就是graph.traversal(),用户可以使用该对象做各种遍历操作;


3.2 创建schema

HugeGraph默认不支持自动创建schema(这点和JanusGraph不同),因此,创建图数据之前需要先创建对应的schema。


3.2.1 创建属性类型(PropertyKey)

graph.schema().propertyKey("name").asText().ifNotExist().create()

graph.schema().propertyKey("city").asText().ifNotExist().create()

graph.schema().propertyKey("date").asText().ifNotExist().create()


3.2.2 创建顶点类型(VertexLabel)

这里创建一个顶点类型person,如下:

graph.schema().vertexLabel("person").properties("name", "city").primaryKeys("name").ifNotExist().create()


3.2.3 创建边类型(EdgeLabel)

graph.schema().edgeLabel("knows").sourceLabel("person").targetLabel("person").properties("date").ifNotExist().create()


3.3 创建图数据

3.3.1 创建顶点和边

dennis = graph.addVertex(T.label, "person", "name", "Dennis","city", "Chengdu")

jady = graph.addVertex(T.label, "person", "name", "Jady","city", "Beijing")

dennis.addEdge("knows", jady, "date", "20121201")


3.3.2 查询图数据

由于当前只有两个顶点和一条边,因此可以执行使用简单的g.V()返回所有数据。图示如下:

如果想进一步缩小范围,,可以改写为如下:

g.V().hasLabel('person')  


3.4 HugeGraph-Tools

除了Web界面,还可以通过命令行方式操作。命令行工具包含在HugeGraph-Tools中。

HugeGraph-Tools可以在https://hugegraph.github.io/hugegraph-doc/download.html下载,也可以从我的百度网盘下载:链接:https://pan.baidu.com/s/1wRKklG475Whnawgq64q0YA 提取码:s04w

将安装包上传到服务器,按如下操作:

[dennis@centos7 ~]$ tar zxf hugegraph-tools-1.2.0.tar.gz

[dennis@centos7 ~]$ mv hugegraph-tools-1.2.0 /opt/


[dennis@centos7 ~]$ cd /opt/hugegraph-tools-1.2.0/

[dennis@centos7 hugegraph-tools-1.2.0]$ bin/hugegraph gremlin-execute --script 'g.V().count()'

Run gremlin script

2

[dennis@centos7 hugegraph-tools-1.2.0]$


4. 参考资料

https://hugegraph.github.io/hugegraph-doc/


来自:https://mp.weixin.qq.com/s/8jUrU0DlUzIVk6XJ4dp9NA


相关文章