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

栏目: 数据库 · 发布时间: 7年前

内容简介:图数据库作者:胡佳辉(家辉),日期:2019年2月10日 CSDN博客:1.

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

作者:胡佳辉(家辉),日期:2019年2月10日 CSDN博客: https://blog.csdn.net/gobitan

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()返回所有数据。图示如下:

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

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

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/

对图数据库及大数据技术感兴趣的朋友,扫描下方二维码,关注"图数据库与图计算"公众号或加入同名QQ群(463749267)

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


以上所述就是小编给大家介绍的《图数据库HugeGraph简介与快速入门》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithm Analysis in Java

Data Structures and Algorithm Analysis in Java

Mark A. Weiss / Pearson / 2006-3-3 / USD 143.00

As the speed and power of computers increases, so does the need for effective programming and algorithm analysis. By approaching these skills in tandem, Mark Allen Weiss teaches readers to develop wel......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具