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

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

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简介与快速入门相关推荐

  1. Cayley图数据库的简介及使用

    图数据库   在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库(Graph Database)更是攻城略地,成为其中的佼佼者.   所谓图数据库,它应用图理论( ...

  2. Cayley 图数据库的简介及使用

    (给Python开发者加星标,提升Python技能) 作者:jclian (本文来自作者投稿) 图数据库    在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库 ...

  3. 图数据库Neo4j简介

    图数据库Neo4j简介 转自: 图形数据库Neo4J简介 - loveis715 - 博客园 https://www.cnblogs.com/loveis715/p/5277051.html 最近我在 ...

  4. 腾讯云数据库 TencentDB for MariaDB快速入门和常见问题

    本文分享腾讯云数据库 TencentDB for MariaDB快速入门和一些常见问题的解答. 更多相关官方文档:云数据库 MariaDB 腾讯云数据库 MariaDB 简介 腾讯云数据库 Maria ...

  5. 图数据库hugegraph如何快速导入10亿+数据

    随着社交.电商.金融.零售.物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,亟需一种支持海量复杂数据关系运算的数据库即图数据库.本系列文章是学习知识图谱以及图数据库相关的知识梳理与总结 ...

  6. Knowledge Graph |(1)图数据库Neo4j简介与入门

    基本概念 图数据库(Grahp Database)是基于图论实现的一种新型NoSQL数据库,它的存储结构和数据的查询方式都是以图论为基础的,图论中图的基本元素为节点和边,在图数据库中对应的就是节点和关 ...

  7. MyBatis-Plus之简介、快速入门、insert、update

    MyBatis-Plus简介 顾名思义,MyBatis-Plus是一个MyBatis的增强工具,是用来简化JDBC操作的,它可以大量节省我们的工作时间,因为所有的CRUD代码它都可以自动化完成,与My ...

  8. 图数据库Neo4简介-CQL语法

    图数据库Neo4j 一.什么是图数据库? 图数据库是基于图论实现的一种NOSQL数据库,其数据结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据. 图论[Graph Theory ...

  9. SQLite学习总结(1)——SQLite简介及快速入门

    SQLite 简介 本教程帮助您了解什么是 SQLite,它与 SQL 之间的不同,为什么需要它,以及它的应用程序数据库处理方式. SQLite是一个软件库,实现了自给自足的.无服务器的.零配置的.事 ...

最新文章

  1. mysql 5.6到percona 5.6小版本升级
  2. 从几何与代数的角度推算坐标旋转变换矩阵(以2维为例)
  3. [Ruby][3] 条件语句
  4. DotLiquid模板引擎简介
  5. @ResponseBody导致的返回值中文乱码
  6. 前端学习(3256):react中添加todolist
  7. MapReduce实现词频统计
  8. Java基础(1):Java简介和开发环境配置
  9. POJ 1611 The Suspects(简单并查集)
  10. 全球名校AI课程库(23)| Harvard哈佛 · 基于Python/JavaScript的Web编程课程『Web Programming with Python and JavaScript』
  11. Maven配置ojdbc14-10.2.0.4.0.jar
  12. IMEI修改(IMEI第十五位验证码的计算)
  13. netty系列之:HashedWheelTimer一种定时器的高效实现
  14. 会计凭证、成本中心、成本要素、总账、物料标准成本核算
  15. 【阶段二】Python数据分析Pandas工具使用07篇:探索性数据分析:数据的描述:数据的集中趋势
  16. 一起来看看华为云的裸金属服务器
  17. html5沙漏动画,CSS3 沙漏动画
  18. 格式化JSON stringify 的使用
  19. 一篇故事告诉你什么是微服务架构
  20. 用java代码输出乘法口诀表

热门文章

  1. 红黑树(一)的原理和算法详细介绍
  2. 10 分钟把你的 Web 应用转为桌面端应用
  3. 简易计算器,你值得拥有
  4. Vue ElementUI table给表格一个斜线分隔线
  5. 收不到验证码怎么办?
  6. 拼多多模式,砍价免费拿商品算法
  7. android 小游戏心得、,iOS/安卓版《辐射:避难所(Fallout Shelter)》攻略心得:玩法要点详解与心得技巧...
  8. linux execl()函数
  9. Python开发图形可视化界面程序(一)
  10. Warshall算法的实现(两种方式)