git clone https://github.com/vesoft-inc/nebula.git
cd nebula/third-party
脚本全安装一遍
mkdir build
cd build
cmake ..
make
make install
/usr/local/nebula/scripts/nebula.service start all
/usr/local/nebula/scripts/nebula.service status all
客户端要单独装:
git clone https://github.com/vesoft-inc/nebula-console
yum install go
go version
make
--local_ip --meta_server_addrs 都改成本地ip
--local_ip=9.134.89.156
--meta_server_addrs=9.134.89.156:9559
存储文件在data下
配置在storage.conf 的 data_path
./nebula-console -addr 9.134.89.156 -port 9669 -u root -p nebula
show HOSTS;
ADD HOSTS 9.134.89.156:9779
https://discuss.nebula-graph.com.cn/t/topic/7788
show hosts graph
show hosts meta
show hosts
create space: https://docs.nebula-graph.com.cn/master/3.ngql-guide/9.space-statements/1.create-space/
CREATE SPACE IF NOT EXISTS my_space_1 (vid_type=FIXED_STRING(30));
SHOW SPACES;
##########
执行语句:
use my_space_1
show tags;
CREATE TAG IF NOT EXISTS player(name string, age int);
CREATE TAG IF NOT EXISTS no_property();
CREATE TAG IF NOT EXISTS player_with_default(name string, age int DEFAULT 20);
CREATE TAG IF NOT EXISTS woman(name string, age int, \
married bool, salary double, create_time timestamp) \
TTL_DURATION = 100, TTL_COL = "create_time";
drop tag no_property;
创建边:https://docs.nebula-graph.com.cn/3.0.1/3.ngql-guide/11.edge-type-statements/1.create-edge/
CREATE EDGE IF NOT EXISTS follow(degree int);
show edges;
CREATE EDGE IF NOT EXISTS no_property();
CREATE EDGE IF NOT EXISTS follow_with_default(degree int DEFAULT 20);
CREATE EDGE IF NOT EXISTS e1(p1 string, p2 int, p3 timestamp) \
TTL_DURATION = 100, TTL_COL = "p2";
查询:
match(n:player) return n limit 2
desc tag player;
insert vertex player(name ,age) values "1":("haha",39)
insert vertex player(name ,age) values "2":("hehe",32)
delete vertex "1";
DELETE VERTEX "1" WITH EDGE;
##GO FROM "player100" OVER serve WHERE properties(edge).start_year == "2021" YIELD dst(edge) AS id | DELETE VERTEX $-.id;
边操作:
CREATE EDGE IF NOT EXISTS e1();
INSERT EDGE e1 () VALUES "10"->"11":();
desc edge e1;
CREATE EDGE IF NOT EXISTS e2 (name string, age int);
# 多次插入属性值。
INSERT EDGE e2 (name, age) VALUES "11"->"13":("n1", 12);
INSERT EDGE e2 (name, age) VALUES "11"->"13":("n1", 13);
INSERT EDGE e2 (name, age) VALUES "11"->"13":("n1", 14);
match(n:e2) return n limit 2
match 语句
https://docs.nebula-graph.com.cn/3.0.1/3.ngql-guide/7.general-query-statements/2.match/
CREATE TAG INDEX IF NOT EXISTS name ON player(name(20))
REBUILD TAG INDEX name;
CREATE TAG INDEX IF NOT EXISTS actorname ON actor(name(20))
REBUILD TAG INDEX actorname;
MATCH (v:player) \
WHERE v.player.name == "haha" \
RETURN v;
CREATE TAG actor (name string, age int);
INSERT VERTEX actor(name, age) VALUES "player100":("Tim Duncan", 42);
INSERT VERTEX actor(name, age) VALUES "1":("haha", 42);
insert vertex player(name ,age) values "1":("haha",39)
insert vertex player(name ,age) values "2":("hehe",32)
insert vertex player(name ,age) values "3":("Tim Duncan",32)
INSERT EDGE e2 (name, age) VALUES "1"->"2":("n1", 12);
INSERT EDGE e2 (name, age) VALUES "3"->"2":("n3", 32);
INSERT EDGE e1 () VALUES "1"->"3":();
INSERT EDGE e1 () VALUES "2"->"3":();
INSERT EDGE e1 () VALUES "3"->"2":();
UPDATE VERTEX ON player "1" SET name = "Tim Duncan"
UPDATE VERTEX ON player "3" SET name = "haohao"
MATCH (v:player:actor) \
RETURN v \
LIMIT 10;
MATCH (v:actor) RETURN v LIMIT 10;
MATCH (v:player{name:"haha"}) RETURN v;
match (v:player) return v;
MATCH (v:player) \
WHERE v.player.name == "haha" \
RETURN v;
MATCH (v) WHERE id(v) == '1' RETURN v;
MATCH (v:player) RETURN v;
MATCH (v:player { name: 'Tim Duncan' })--(v2) \
WHERE id(v2) IN ["1", "2"] \
RETURN v2;
MATCH (v:player{name:"hehe"})--(v2:player) RETURN v2.player.name AS Name;
MATCH (v:player{name:"Tim Duncan"})-->(v2:player) RETURN v2.player.name AS Name;
MATCH (v:player{name:"Tim Duncan"})--(v2) \
RETURN \
CASE WHEN v2.team.name IS NOT NULL \
THEN v2.team.name \
WHEN v2.player.name IS NOT NULL \
THEN v2.player.name END AS Name;
MATCH (v:player{name:"Tim Duncan"})-->()<--(v3) \
RETURN v3.player.name AS Name;
########匹配路径
MATCH p=(v:player{name:"Tim Duncan"})-->(v2) \
RETURN p;
MATCH p=(v:player{name:"haohao"})-->(v2) RETURN p;
###### 匹配边:
MATCH ()<-[e]-() RETURN e LIMIT 3;
MATCH ()<-[e]-() RETURN e LIMIT 5;
MATCH ()-[e:e2]->() RETURN e limit 3;
######## 匹配边的属性:
MATCH (v:player{name:"haohao"})-[e:e2{age:32}]->(v2) RETURN e;
###### 查多个边
MATCH (v:player{name:"Tim Duncan"})-[e:e2|:e1]->(v2) RETURN e;
###### 匹配多条边
MATCH (v:player{name:"Tim Duncan"})-[]->(v2)<-[]-(v3) RETURN v2, v3;
MATCH (v:player{name:"Tim Duncan"})-[p1]->(v2)<-[p2:e2]-(v3) RETURN v2,p1,p2,v3;
###### 匹配定长路径
一跳
MATCH p=(v:player{name:"Tim Duncan"})-[e:e2*1]->(v2) RETURN DISTINCT v2 AS Friends;
两跳
MATCH p=(v:player{name:"Tim Duncan"})-[e:e2*2]-(v2) RETURN DISTINCT v2 AS Friends;
如果hop为 0,模式会匹配路径上的起始点。
MATCH (v:player{name:"Tim Duncan"}) -[*0]-> (v2) RETURN v2;
MATCH p=(v:player{name:"Tim Duncan"})-[e:e1*2]->(v2) RETURN v2 AS Friends;
MATCH p=(v:player{name:"Tim Duncan"})-[e:e1]-()-[e:e2]->(v2) RETURN v2 AS Friends;
MATCH p=(v:player{name:"Tim Duncan"})-[e:e1]-()-[h:e2]->(v2) RETURN v2 AS Friends;
用户可以使用DISTINCT关键字聚合重复结果
MATCH p=(v:player{name:"Tim Duncan"})-[e:e1*1..3]->(v2:player) RETURN DISTINCT v2 AS Friends, count(v2);
MATCH p=(v:player{name:"Tim Duncan"})-[e:e1*1..3]->(v2:player) RETURN v2 AS Friends;
匹配多个 Edge type 的变长路径:
MATCH p=(v:player{name:"Tim Duncan"})-[e:e2|e1*2]->(v2) RETURN v2
MATCH p=(v:player{name:"Tim Duncan"})-[e:e2|e1*2]->(v2) RETURN DISTINCT v2
匹配多个模式
MATCH (v1:player{name:"Tim Duncan"}), (v2:actor{name:"haha"}) RETURN v1,v2
多MATCH检索:
####### lookup
MATCH (v:player) WHERE v.player.name == "haohao" RETURN v;
LOOKUP ON player WHERE player.name == "haohao" YIELD id(vertex);
LOOKUP ON player WHERE player.age > 30 YIELD id(vertex);
############
分享到:
相关推荐
Nebula Graph,作为一款高性能、分布式、易扩展的图数据库,其图形化管理工具Nebula Graph Studio更是为用户提供了直观易用的界面,便于数据查询、管理和分析。本文将详细介绍如何在基于ARM架构的CentOS 7.9服务器上...
Nebula Graph是一款开源的分布式图数据库,其设计目标是提供高效的图数据处理能力,尤其适合大规模图数据的存储和查询。本篇文章将对Nebula Graph的技术概述进行解析,包括其架构设计、代码仓库概览以及代码结构和...
**Jepsen测试框架在图数据库Nebula Graph中的技术实践** Jepsen是一个由Kyle Kingsbury开发的开源测试框架,专门针对分布式数据库、队列和共识系统进行安全性测试。该框架采用Clojure编程语言,旨在发现分布式系统...
【标题】"nebula-graph-studio-v3.1.0" 指的是Nebula Graph的一个前端展示工具的特定版本,版本号为3.1.0。Nebula Graph是一个高性能、分布式、大规模图数据库,适用于处理复杂的关联数据查询和分析。此版本的图形...
Nebula Graph 源码解读系列的第三部分聚焦于 Planner 的实现,这是一个关键组件,负责将经过 Validator 校验的、语义正确的查询语法树转换为可执行的执行计划。执行计划是 Executor 执行查询操作的基础,由一系列...
Nebula Graph是一款高性能、分布式的图数据库,专门设计用于处理大规模复杂数据网络的查询和分析。在V2.6.0版本中,Nebula进一步优化了性能和功能,提升了用户体验,使其在大数据领域的应用更加广泛。 ### 一、...
Nebula Graph是一款开源的分布式高性能图数据库,其v2.x版本在2021年3月正式发布。该数据库由吴敏参与开发,他在2019年成为Nebula Graph的产品负责人,并在此前在蚂蚁金服担任图平台的研发工程师,以及在阿里云负责...
nebula-graph-3.2.0.el7.x86_64 安装包,包含客户端console
星云图(Nebula Graph)是一个开放源代码图数据库,能够托管具有数十亿个顶点(节点)和数万亿条边(具有几毫秒的延迟)的超大规模图。 它提供了企业级的高性能,可以将可以想象得到的最复杂的数据集简化为有意义和...
nebula-graph new
Nebula Operator 是一款专为 Nebula Graph 设计的 Kubernetes 插件,旨在自动化 Nebula Graph 集群在 Kubernetes 上的部署、管理和运维过程。Nebula Graph 是一款高性能的分布式图数据库,其架构包括三个主要服务:...
nebula-V3.3.0镜像资源包,包含meta、storged及graphd对应的镜像,以及nebula-console文件
Nebula Operator 是一个开源的工具,用于在 Kubernetes 集群上自动化部署和管理 Nebula Graph 数据库。Nebula Graph 是一款高性能、分布式、专为大规模图数据处理设计的图数据库。Nebula Operator 提供了一种简单、...
图数据库nebula官方可视化studio的2.0版本docker-compose安装文件
图数据库nebula官方2.0.0版本的rpm安装包
nebula-graph-study nebula-graph-study 数据结构 Vertex 点 保存实体对象的实例 VID 为唯一表示 点必须至少有一个 Tag Tag 标签 用于对点进行区分。相同标签共享相同属性类型 Edge 边 描述 点与点之间的关系行为 一...
SpringGraph是一款图形化工具,主要用于创建和可视化复杂的网络关系图,尤其在数据建模、系统架构设计以及程序流程分析等领域有着广泛的应用。本实例将深入探讨如何利用SpringGraph来构建和展示数据关系。 首先,...