图数据库HugeGraph简介与快速入门
图数据库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
相关文章