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

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

内容简介:图数据库作者:胡佳辉(家辉),日期: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简介与快速入门》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

最优状态估计

最优状态估计

[美] D. 西蒙 / 张勇刚、李宁、奔粤阳 / 国防工业出版社 / 2013-5-1 / 68.00元

《最优状态估计——卡尔曼H∞及非线性滤波》共分为四个部分,全面介绍了最优状态估计的理论和方法。第1部分为基础知识,回顾了线性系统、概率论和随机过程相关知识,介绍了最小二乘法、维纳滤波、状态的统计特性随时间的传播过程。第2部分详细介绍了卡尔曼滤波及其等价形式,介绍了卡尔曼滤 波的扩展形式,包括相关噪声和有色噪声条件下的卡尔曼滤波、稳态滤波、衰减记忆滤波和带约束的卡尔 曼滤波等。第3部分详细介绍了H∞......一起来看看 《最优状态估计》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试