linux环境安装可操作图库语言Gremlin的图框架HugeGraph

原创/朱季谦

若你还没接触过图数据库,可能看到这个概念时,会比较蒙蔽。

图是什么?图数据库又是什么?

首先,在数据结构中,图是一种由顶点(vertex)集合及顶点间关系集合组成的一种非线性数据结构。

而图数据库,则是以图这种具有点边结构来增、删、改、查之类操作的NoSQL数据库,它特别擅长处理大数据之间的关联。

常见的图数据库有Neo4j,JanuasGraph,Tigergraph等,其中,Gremlin是一种操作图数据库的图语言,它是Apache ThinkerPop框架下的图遍历语言。

 

那么HugeGraph又是什么呢?

根据官网上的介绍,HugeGraph是一款易用、高效、通用的开源图数据库系统(Graph Database),实现了Apache TinkerPop3框架及完全兼容Gremlin查询语言,支持百亿以上的顶点和边快速导入,并提供毫秒级的关联关系查询能力(OLTP),并可与Hadoop、Spark等大数据平台集成以进行离线分析(OLAP)。

HugeGraph是百度自主研发的图数据库,在2018年8月开始对外开源,我们之前做一款图库产品时技术选型就是选了HugeGraph,总体感觉这个技术比较前沿也比较厉害。

HugeGraph有以下特点:

  • 顶点、边:支持基本增删改查操作,支持有向图,支持两顶点间同一类型多条边,支持超级点。

  • 属性:支持属性图、支持多值属性、支持多样化的属性类型、支持顶点属性追加与合并。

  • 元数据:支持丰富的Schema校验,如属性是否可空(可选),支持Schema动态修改。

  • 索引:支持二级索引、范围索引、全文索引,支持联合索引。

  • 事务:遵循Tinkerpop事务规范,支持Read Committed级别事务。

  • 多顶点ID策略:支持主键ID、支持自动生成ID、支持用户自定义字符串ID、支持用户自定义数字ID。

  • 大规模数据:支持批量插入顶点/边、支持超级顶点、支持流式分页获取、支持Shard并行获取。

  • 优化的图接口:最短路径(Shortest Path)、K步连通子图(K-neighbor)、K步到达邻接点(K-out)等。

  • 其它:支持图变量(Graph Variables)、兼容性上已通过Apache Tinkerpop官方测试用例90%兼容测试。

说了这么多,那么图库技术有什么用呢?

主要可以用在知识图谱、金融反欺诈、社交关系网络、推荐、用户分析、搜索等等,以及其他。

学习Gremilin的第一步,当然是从安装环境开始,下面,我就把之前的安装教程分享出来:

网盘下载核心安装包HugeGraph Server包和图形界面HugeGraph Studio包(截图是目前最新版本)。

image

网盘下载地址:

链接:百度网盘 请输入提取码
提取码:pqpy

利用HugeGraph学习Gremlin,主要只用安装以上两个包,它们的功能分别是:

核心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-studio):基于Web的可视化环境,提供图操作界面、图数据展示与分析。

一.先安装HugeGraph Server。

1.把压缩包放在你选择放的文件夹里,进行解压:

tar -zxvf hugegraph-0.10.4.tar.gz

clipboard

解压完成后,进入到已解压的文件目录里,执行:vim conf/rest-server.properties,进入到编辑状态,将restserver.url改成:http://0.0.0.0:8080,代表本机以及其他机器都可以访问,修改完成后,:wq保存退出。

clipboard

2.配置文件修改完后,需对后端做初始化操作,执行指令:

bin/init-store.sh

执行成功会打印以下信息:

clipboard

初始化完成后,自动生成一个corksdb-data的文件,这个文件禁止删除,它是与数据存储相关的文件,HugeGraph其实可以与Hbase等第三方组件集成,可在conf目录下的hugegraph.properties文件中进行配置。

image

3.接下来就可以启动HugeGraph Server服务了,执行指令:

bin/start-hugegraph.sh

执行成功后,会打印以下信息:

clipboard

最后,输入jps,若出现HugeGraph Server的进程,则证明已经安装启动成功。

二.接下来,就开始安装启动图形化HugeGraph Studio

1.解压HugeGraph Studio压缩包:

tar -zxvf hugegraph-studio-0.10.0.tar.gz

解压完成后,进入已解压的文件目录里,执行指令:vim conf/hugegraph-studio.properties,进行配置文件编辑状态:

其中,studio.server.port填8088,studio.server.host填0.0.0.0,可令本机与本机之外的机器访问,graph.server.host填的是HugeGraph Server所在机器的地址IP,其安装在虚拟机192.168.200.128机器上,graphGraph Server.port对应的是HugeGraph Server配置设置的8080端口,只需修改设置下图截图ip与端口即可。

clipboard

2.安装完成后,即可执行指令bin/hugegraph-studio.sh进行启动操作,成功启动后,显示打印以下信息:

clipboard

在浏览器测试运行下,输入1+3,若能显示[4],即已经完整启动完成,可在以下Studio界面玩Gremlin图数据库语言了。

clipboard

过程遇到的问题:

刚开始,我参考网上一些教程,把HugeGraph Studio的配置文件中graph.server.host改成0.0.0.0。

clipboard

发现可以出现图形化界面,但是,在操作运行时,报了“Failed to connect HugeGraphServer.com.baidu.hugeGraph.rest.ClientException:Failed to do request的错误,后经检查,发现这里不能填对应HugeGraph Server配置文件里设置的0.0.0.0,而需要填HugeGraph Server所在的机器Ip,例如其所在虚拟机Ip,这样才能正常运行。

clipboard

图数据库是一项很前沿的技术,欢迎小伙伴关注我,我会把学习笔记做成专栏记录下来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/252874.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FRP内网映射家用服务器至公网访问

兄弟们,服务器到货了,后续与大家分享内容就用它了。我预装的操作系统是Centos8,首先要解决的是远程访问的问题。 【特别注意】下述的端口,记得在阿里云安全组配置中放开端口入规则!! 1. FRP服务器配置 之前我有购买…

如何将数据库导入MySQL的办法

在电脑cmd终端进行导入 首先找到MySQL中bin的位置 第一步:找到MySQL 第二步:进入MySQL 第三步:打开bin 第四步:输入cmd进入终端 第五步: 输入mysql -uroot -p 然后会弹出enter password: 输入你的密码…

Leetcode的AC指南 —— 链表:24. 两两交换链表中的节点

摘要: Leetcode的AC指南 —— 链表:24. 两两交换链表中的节点。题目介绍:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能…

[计网01] 物理层 详细解析笔记,特性

计算机网络的物理层是网络协议栈中的第一层,负责传输原始的比特流(bitstream)通过物理媒介进行通信。物理层主要关注传输介质、信号的编码和调制、数据传输速率以及数据传输的物理连接等方面。 相关特性 机械特性(Mechanical Ch…

Java已死!

许多开发者仍然认为 Java 与当今时代息息相关,看完本文,你会发现 Java 的影响力已经大幅减弱。实际上,Java 是一种濒临灭绝的编程语言。尽管 Java 一直是世界上使用最广泛、最受欢迎的编程语言之一,但它很快就会面临消亡的危险。 …

【C语言加油站】qsort函数的模拟实现

qsort函数的模拟实现 导言一、回调函数二、冒泡排序2.1 冒泡排序实现升序 三、qsort函数3.1 qsort函数的使用3.2 比较函数 四、通过冒泡排序模拟实现qsort函数4.1 任务需求4.2 函数参数4.3 函数定义与声明4.4 函数实现4.4.1 函数主体4.4.2 比较函数4.4.3 元素交换 4.5 my_qsort…

单片机控制步进电机

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、步进电机的工作原理是什么?二、连线图三、程序1.参考程序2.实际测试 四、开发板1.原理图2.实际连接图3.参考程序4.测试5. 思考 五、步距角总结 …

面向对象三大特征——继承

目录 1. 概述 2. 继承的限制 2.1 单继承 2.2 访问修饰符 2.3 . final 3. 重写 4. super 4.1super的作用 4.2访问父类的成员和被重写方法 4.3调用父类的构造器 1. 概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么就无需在…

【JavaEE】多线程案例 - 定时器

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…

中文论文修改和润色哪个好 神码ai

大家好,今天来聊聊中文论文修改和润色哪个好,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:中文论文修改和润色,哪个更好&#x…

【OpenHarmony 北向应用开发】ArkTS语言入门(构建应用页面)

ArkTS语言入门 在学习ArkTS语言之前,我们首先需要一个能够编译并运行该语言的工具 DevEco Studio。 了解ArkTS ArkTS是OpenHarmony优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继…

关于找不到XINPUT1_3.dll,无法继续执行代码问题的5种不同解决方法

一、xinput1_3.dll的作用 xinput1_3.dll是Windows操作系统中的一款动态链接库文件,主要用于支持游戏手柄和游戏输入设备。这款文件属于Microsoft Xbox 360兼容性库,它包含了与游戏手柄和其他输入设备相关的功能。在游戏中,xinput1_3.dll负责…

(数据结构)单链表的插入删除

代码实现 #include<stdio.h> #include<stdlib.h> typedef struct LNode {int data;struct LNode* next; }LNode, * LinkList; //创建头结点 LNode* InitList(LinkList L) {L (LNode*)malloc(sizeof(LNode));if (L NULL){printf("申请头结点失败\n");…

git 上传大文件操作 lfs 的使用

我们要先去下载 下载后安装 我最后还是下载到了D:\git\Git\bin这个目录下 如何检查是否下载成功呢&#xff0c;用 git lfs install 在命令行运行就可以查看 下面怎么上传文件呢 首先我们还是要初始化文件的 git init 下一步输入命令 git lfs install 下一步 git lfs tra…

如何在安装了巨魔2的iphone中运行Theos编译的本地化二进制工具:Bootstrap

如何在安装了巨魔2的iphone中运行Theos编译的本地化二进制工具:Bootstrap 一、首先从https://github.com/34306/iPA/releases/tag/bstr下载jb.zip、jb_with_jb_folder.zip、prefs_fix.ipa三个文件。 二、然后使用Filza文件管理器把jb.zip解压后复制到/var/containers/jb目录&…

1836_emacs显示空白字符

Grey 全部学习汇总&#xff1a; GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. 全部学习内容汇总&#xff1a; 1836_emacs显示空白字符 show-trailing-whitespace是emacs中内置的一个变量&#xff0c;这个变量的值如果设置为nil那么不…

c++ websocket 协议分析与实现

前言 网上有很多第三方库&#xff0c;nopoll,uwebsockets,libwebsockets,都喜欢回调或太复杂&#xff0c;个人只需要在后端用&#xff0c;所以手动写个&#xff1b; 1:环境 ubuntu18 g(支持c11即可) 第三方库:jsoncpp,openssl 2:安装 jsoncpp 读取json 配置文件 用 自动安装 网…

【案例】注册表简介,新建一个右键菜单打开方式选项

这里写目录标题 来源注册表的介绍注册表编辑器VScode的打开方式菜单![image-20231217201730121](https://img-blog.csdnimg.cn/img_convert/56c02643df9e8ec3afb4f3ac5cc0cdd5.png)如何自定义一个右键菜单备份注册表新建一个菜单选项”右键用记事本打开“ DWORDQWORD可扩充字符…

社交网络分析3:社交网络隐私攻击、保护的基本概念和方法 + 去匿名化技术 + 推理攻击技术 + k-匿名 + 基于聚类的隐私保护算法

社交网络分析3&#xff1a;社交网络隐私攻击、保护的基本概念和方法 去匿名化技术 推理攻击技术 k-匿名 基于聚类的隐私保护算法 写在最前面社交网络隐私泄露用户数据暴露的途径复杂行为的隐私风险技术发展带来的隐私挑战经济利益与数据售卖防范措施 社交网络 用户数据隐私…

力扣刷题-二叉树-路径总和

112 路径总和 给定一个二叉树和一个目标和&#xff0c;判断该树中是否存在根节点到叶子节点的路径&#xff0c;这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树&#xff0c;以及目标和 sum 22&#xff0c; 返回 true, 因为…