`
haoningabc
  • 浏览: 1466159 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nebula graph踩坑(一)

阅读更多
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-studio-3.8.0 ARM架构编译完成的包

    Nebula Graph,作为一款高性能、分布式、易扩展的图数据库,其图形化管理工具Nebula Graph Studio更是为用户提供了直观易用的界面,便于数据查询、管理和分析。本文将详细介绍如何在基于ARM架构的CentOS 7.9服务器上...

    nebula-graph-studio-v3.1.0

    【标题】"nebula-graph-studio-v3.1.0" 指的是Nebula Graph的一个前端展示工具的特定版本,版本号为3.1.0。Nebula Graph是一个高性能、分布式、大规模图数据库,适用于处理复杂的关联数据查询和分析。此版本的图形...

    Nebula Graph 源码解读系列-Vol.01 Nebula Graph技术概述.docx

    Nebula Graph是一款开源的分布式图数据库,其设计目标是提供高效的图数据处理能力,尤其适合大规模图数据的存储和查询。本篇文章将对Nebula Graph的技术概述进行解析,包括其架构设计、代码仓库概览以及代码结构和...

    Jepsen 测试框架在图数据库 Nebula Graph 中的技术实践.docx

    **Jepsen测试框架在图数据库Nebula Graph中的技术实践** Jepsen是一个由Kyle Kingsbury开发的开源测试框架,专门针对分布式数据库、队列和共识系统进行安全性测试。该框架采用Clojure编程语言,旨在发现分布式系统...

    Nebula Graph 源码解读系列-Vol.03 Planner的实技术现.docx

    Nebula Graph 源码解读系列的第三部分聚焦于 Planner 的实现,这是一个关键组件,负责将经过 Validator 校验的、语义正确的查询语法树转换为可执行的执行计划。执行计划是 Executor 执行查询操作的基础,由一系列...

    nebula图数据库V2.6.0

    Nebula Graph是一款高性能、分布式的图数据库,专门设计用于处理大规模复杂数据网络的查询和分析。在V2.6.0版本中,Nebula进一步优化了性能和功能,提升了用户体验,使其在大数据领域的应用更加广泛。 ### 一、...

    9-4.Nebula+Graph+v2.x开源分布式高性能图数据库.pdf

    Nebula Graph是一款开源的分布式高性能图数据库,其v2.x版本在2021年3月正式发布。该数据库由吴敏参与开发,他在2019年成为Nebula Graph的产品负责人,并在此前在蚂蚁金服担任图平台的研发工程师,以及在阿里云负责...

    nebula-graph-3.2.0.el7.x86_64

    nebula-graph-3.2.0.el7.x86_64 安装包,包含客户端console

    Nebula Graph是具有水平可伸缩性和高可用性的分布式快速开源图形数据库-C/C++开发

    星云图(Nebula Graph)是一个开放源代码图数据库,能够托管具有数十亿个顶点(节点)和数万亿条边(具有几毫秒的延迟)的超大规模图。 它提供了企业级的高性能,可以将可以想象得到的最复杂的数据集简化为有意义和...

    nebula-graph new

    nebula-graph new

    基于Nebula Operator的K8s自动化部署运维.docx

    Nebula Operator 是一款专为 Nebula Graph 设计的 Kubernetes 插件,旨在自动化 Nebula Graph 集群在 Kubernetes 上的部署、管理和运维过程。Nebula Graph 是一款高性能的分布式图数据库,其架构包括三个主要服务:...

    nebula-V3.3.0镜像资源包

    nebula-V3.3.0镜像资源包,包含meta、storged及graphd对应的镜像,以及nebula-console文件

    Nebula Operator云上技术实践.docx

    Nebula Operator 是一个开源的工具,用于在 Kubernetes 集群上自动化部署和管理 Nebula Graph 数据库。Nebula Graph 是一款高性能、分布式、专为大规模图数据处理设计的图数据库。Nebula Operator 提供了一种简单、...

    nebula-graph-studio-2.zip

    图数据库nebula官方可视化studio的2.0版本docker-compose安装文件

    nebula-graph-2.0.0.el7.x86_64.rpm

    图数据库nebula官方2.0.0版本的rpm安装包

    nebula-graph-study:星云图研究

    nebula-graph-study nebula-graph-study 数据结构 Vertex 点 保存实体对象的实例 VID 为唯一表示 点必须至少有一个 Tag Tag 标签 用于对点进行区分。相同标签共享相同属性类型 Edge 边 描述 点与点之间的关系行为 一...

    SpringGraph实例

    SpringGraph是一款图形化工具,主要用于创建和可视化复杂的网络关系图,尤其在数据建模、系统架构设计以及程序流程分析等领域有着广泛的应用。本实例将深入探讨如何利用SpringGraph来构建和展示数据关系。 首先,...

Global site tag (gtag.js) - Google Analytics