图数据库HugeGraph简介与快速入门
图数据库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简介与快速入门相关推荐
- Cayley图数据库的简介及使用
图数据库 在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库(Graph Database)更是攻城略地,成为其中的佼佼者. 所谓图数据库,它应用图理论( ...
- Cayley 图数据库的简介及使用
(给Python开发者加星标,提升Python技能) 作者:jclian (本文来自作者投稿) 图数据库 在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库 ...
- 图数据库Neo4j简介
图数据库Neo4j简介 转自: 图形数据库Neo4J简介 - loveis715 - 博客园 https://www.cnblogs.com/loveis715/p/5277051.html 最近我在 ...
- 腾讯云数据库 TencentDB for MariaDB快速入门和常见问题
本文分享腾讯云数据库 TencentDB for MariaDB快速入门和一些常见问题的解答. 更多相关官方文档:云数据库 MariaDB 腾讯云数据库 MariaDB 简介 腾讯云数据库 Maria ...
- 图数据库hugegraph如何快速导入10亿+数据
随着社交.电商.金融.零售.物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,亟需一种支持海量复杂数据关系运算的数据库即图数据库.本系列文章是学习知识图谱以及图数据库相关的知识梳理与总结 ...
- Knowledge Graph |(1)图数据库Neo4j简介与入门
基本概念 图数据库(Grahp Database)是基于图论实现的一种新型NoSQL数据库,它的存储结构和数据的查询方式都是以图论为基础的,图论中图的基本元素为节点和边,在图数据库中对应的就是节点和关 ...
- MyBatis-Plus之简介、快速入门、insert、update
MyBatis-Plus简介 顾名思义,MyBatis-Plus是一个MyBatis的增强工具,是用来简化JDBC操作的,它可以大量节省我们的工作时间,因为所有的CRUD代码它都可以自动化完成,与My ...
- 图数据库Neo4简介-CQL语法
图数据库Neo4j 一.什么是图数据库? 图数据库是基于图论实现的一种NOSQL数据库,其数据结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据. 图论[Graph Theory ...
- SQLite学习总结(1)——SQLite简介及快速入门
SQLite 简介 本教程帮助您了解什么是 SQLite,它与 SQL 之间的不同,为什么需要它,以及它的应用程序数据库处理方式. SQLite是一个软件库,实现了自给自足的.无服务器的.零配置的.事 ...
最新文章
- mysql 5.6到percona 5.6小版本升级
- 从几何与代数的角度推算坐标旋转变换矩阵(以2维为例)
- [Ruby][3] 条件语句
- DotLiquid模板引擎简介
- @ResponseBody导致的返回值中文乱码
- 前端学习(3256):react中添加todolist
- MapReduce实现词频统计
- Java基础(1):Java简介和开发环境配置
- POJ 1611 The Suspects(简单并查集)
- 全球名校AI课程库(23)| Harvard哈佛 · 基于Python/JavaScript的Web编程课程『Web Programming with Python and JavaScript』
- Maven配置ojdbc14-10.2.0.4.0.jar
- IMEI修改(IMEI第十五位验证码的计算)
- netty系列之:HashedWheelTimer一种定时器的高效实现
- 会计凭证、成本中心、成本要素、总账、物料标准成本核算
- 【阶段二】Python数据分析Pandas工具使用07篇:探索性数据分析:数据的描述:数据的集中趋势
- 一起来看看华为云的裸金属服务器
- html5沙漏动画,CSS3 沙漏动画
- 格式化JSON stringify 的使用
- 一篇故事告诉你什么是微服务架构
- 用java代码输出乘法口诀表