Nebula NGQL语言的使用 一

前言:可借鉴资料

文档:https://docs.nebula-graph.com.cn
Nebula Graph架构,实践等文章:https://nebula-graph.com.cn/posts
视频分享和教程:https://space.bilibili.com/472621355
入门文章索引:https://zhuanlan.zhihu.com/p/368781105
用户问答论坛:https://discuss.nebula-graph.com.cn
GitHub:https://github.com/vesoft-inc/nebula-graph
Nebula 布道者博客:https://siwei.io/posts/

Nebula 图数据库的逻辑组成:
图空间(Space) 由 点(Vertex),标签(Tag),边(Edge),边类型(Edge type)

图空间(Space) 在NGQL中 有TAG 与 EDGE两个存储概念。
TAG:记录实体信息,每个实体中都有一个VID 在一个图空间中,VID的值是唯一的 但是VID 在insert时,并不限制VID重复,但是在delete时,会导致所有相同的VID 被删除。
EDGE:记录关系信息,每个关系信息中都有一个RANK 在一个关系中用于组成组合唯一值。它也可以为点增加属性,比如 100->100:(money=一个小目标)。

一、图空间的创建
涉及两个参数:partition_num和replica_factor
partition_num 默认值是100,replica_factor 的参数值是1
第一种创建图空间方式,默认值创建
#默认值创建表空间

create space default_value;

#查看表空间的属性

describe space default_value;

第二种创建图空间的方式,是通过指定partition_num值

create space specify_partition(partition_num=10)

查看图空间属性

describe space specify_partition;

第三种创建图空间的方式,是通过指定replica_factor值

create space specify_replica(replica_factor=3);
describe space specify_replica;

第四种创建图空间的方式,是通过指定partition_num与replica_factor值的方式

create space nba(partition_num=10,replica_factor=3);
describe space nba;

#使用如下命令查看已存在的图空间

show spaces;
#使用如下命令删除图空间
drop space default_value;
#使用如下命令切换到图空间中
use nba;

二、在Nebula Graph 中创建标签
#创建与查看

create tag player(name string,age int);
show tags;
create tag team(name string);
show team;

#查看tag详情

describe tag player;
describe tag team;

#创建于删除

create tag property_free();
drop tag property_free;

三、在Nebula Graph 中创建边类型
#创建与查看

create edge follow(degree int);
show edges;
create edge serve(start_year int,end_year int);
show edges;

#查看edge详情

describe edge follow;
describe edge serve;

#创建与删除

create edge no_property();
drop edge no_property;

四、在Nebula Graph 中插入点(VID 必须要引号引起来,否则报错)

insert vertex player(name,age) values "100":("Tim Duncan",42);
insert vertex player(name,age) values "101":("Tony Parker",36),"102":("LaMarcus Aldridge",33),"103":("Rudy Gay",32),"99":("Useless",0);
insert vertex team(name) values "200":("Warriors"),"201":("Nuggets");

#查看(使用FETCH 查询点的属性值)(VID 必须要引号引起来,否则报错)

FETCH PROP ON player "100","101","102","103" YIELD properties(vertex);
FETCH PROP ON team "200","201" YIELD properties(vertex);

#删除点语句

delete vertex "101";
fetch prop on player;
Wrong vertex id type;

五、在Nebula Graph 中插入边
#释义 100是点的起始位置,指向-> 101点的最终位置:(值)
#插入边数据

insert edge follow(degree) values "100" -> "101":(95);
insert edge serve(start_year,end_year) values "100" -> "101":(1997,2016),"101" -> "201":(1999,2018);

#查询点与点之间边的信息(关联关系)

fetch prop on follow "100" -> "101" YIELD properties(edge);
fetch prop on serve "100" -> "200","101" -> "201" YIELD properties(edge);

#在两个点之间插入多条同类型的边,可以使用ranking参数"101"@1 其中1 表示ranking的值

insert edge follow(degree) values "100" -> "101"@1:(80);
fetch prop on follow "100" -> "101"@1 YIELD properties(edge);

#删除边,删除带有ranking值的边

delete edge follow "100" -> "101";
delete edge follow "100" -> "101"@1;

六、在Nebula Graph 中查询数据
使用go语句查询
#指定起始位置遍历所有位置(起点VID 100开始查询,遍历所有被VID 100关注的点)

GO FROM 100 OVER follow;

#找到年龄大于35的球员且该球员被VID为100的球员关注(WHERE语句限定年龄,$$符号表示目标点,YIELD语句指定返回的结果并别名展示)

GO FROM 100 OVER follow WHERE $$.player.age > 35 YIELD $$.player.name AS Teammate,$$.player.age AS Age;

#找到VID 100 关注的球员所效力的球队(两种方式:第一种方式中使用管道(pipe),第二种方式中使用临时变量)

GO FROM 100 OVER follow YIELD follow._dst AS id | \
GO FROM $-.id OVER serve YIELD $$.team.name \
AS Team,$^.player.name AS Player;

解释:|竖线 表示管道,\斜线表换行符。意思是将第一个GO语句得到的值作为第二条GO语句的输入值。

$var=GO FROM 100 OVER follow YIELD follow.dst AS id; \
GO FROM $var.id OVER serve YIELD $$.team.name \
AS Team,$^.player.name AS Player;

解释:将第一个GO语句定义为一个变量,在第二个GO语句中引入该变量

图语义的Query 可以更快的进行操作,书写的SQL 复杂的度较小于关系型SQL。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——基础指令2 + 权限

目录 1.zip/unzip 2.tar 3.bc 4.uname –r 5.重要的几个热键 6.扩展命令 7.shell命令以及运行原理 8.Linux权限的理解 关于权限的三个问题: 1.目录权限 2.缺省权限 3.粘滞位 1.zip/unzip 打包、压缩:使用特定的算法,文件进行合…

pgsql和mysql的自增主键差异

1. 当有历史数据存在时, mysql的自增主键是默认从最大值自增。 pgsql的自增主键取初始值开始逐个尝试,所以存在可能与历史数据的主键重复的情况。 pgsql解决上述问题的方式:重设自增值。 SELECT SETVAL(t_db_filed_id_seq, (SELECT MAX(&q…

【Linux】基础IO及文件描述符相关内容详细梳理

0. C语言文件I/O 在C语言中,我们学习了相关函数来读写文件,例如:fopen,fwrite,fread,fprintf等, 在C语言中文件的打开方式: r Open text file for reading. …

大语言模型在序列推荐中的应用

一、简介 序列推荐技术通过分析用户的过往交互历史,能够有效挖掘出用户可能感兴趣的项目,对于提升各类应用的服务质量具有重要作用。近期,大语言模型(LLMs)的发展在应对复杂的推荐问题上展现出了显著的优势。不过&…

JavaScript——函数、事件与BOM对象

一、系统函数(JS中预置的函数) JS的预置函数在遇到非数字字符时会停止解析 parseInt 转整型 parseFloat 转浮点型 isNaN !isNaN("10") 检测是否纯数字 eval 把字符串转成算式并计算 1.parseInt(string, radix); 语法: string&#x…

Python酷库之旅-第三方库Pandas(208)

目录 一、用法精讲 971、pandas.MultiIndex.set_levels方法 971-1、语法 971-2、参数 971-3、功能 971-4、返回值 971-5、说明 971-6、用法 971-6-1、数据准备 971-6-2、代码示例 971-6-3、结果输出 972、pandas.MultiIndex.from_arrays类方法 972-1、语法 972-2…

相亲小程序(源码+文档+部署+讲解)

最近我在挖掘一些优秀的开源项目时,无意间发现了一个相当给力的系统——相亲小程序管理系统。这个系统不仅功能实用,而且代码结构清晰,易于二次开发。作为一名技术爱好者,我觉得有必要把这个好东西推荐给我的读者们。接下来&#…

spring cloud 入门笔记1(RestTemplate,Consul)

最大感受: spring cloud无非是将spring boot中的各个工作模块拆分成独立的小spring boot,各个模块之间,不再是通过导包什么的,调用而是通过网路进行各个模块之间的调用 工具一:RestTemplate 在Java代码中发送HTTP请…

高性能分布式缓存Redis-高可用部署

一、主从架构搭建 为什么要进行主从架构搭建,一台redis不行吗? ①、持久化后的数据只在一台机器上,因此当硬件发生故障时,比如主板或CPU坏了,这时候无法重启服务器,有什么办法可以保证服务器发生故障时数…

新的恶意软件活动通过游戏应用程序瞄准 Windows 用户

一种新的恶意软件 Winos4.0 被积极用于网络攻击活动。FortiGuard实验室发现,这种先进的恶意框架是从臭名昭著的 Gh0strat 演变而来的,配备了模块化组件,可在受感染的设备上进行一系列恶意活动。 这些攻击已在游戏相关应用程序中发现&#xf…

Python教程笔记(1)

Python教程笔记 3.1.1 数字3.1.2 文本3.1.3 列表4.2 for语句4.3 range()函数4.7 match语句4.8 定义函数4.9.1 默认值参数4.9.3 特殊参数4.9.5. 解包实参列表 对官方教程中自我感觉生疏的知识点做个记录,以便后面回顾。 3.1.1 数字 除法运算 (/) 总是返回浮点数。 如…

C++笔记---异常

1. 异常的概念 1.1 异常和错误 异常通常是指在程序运行中动态出现的非正常情况,这些情况往往是可以预见并可以在不停止程序的情况下动态地进行处理的。 错误通常是指那些会导致程序终止的,无法动态处理的非正常情况。例如,越界访问、栈溢出…

【RabbitMQ】08-延迟消息

1. 延迟消息 2. 死信交换机 正常队列不需要接受消息。 Configuration public class NormalQueueConfig {Beanpublic DirectExchange normalExchange() {return new DirectExchange("normal.direct");}Beanpublic Queue normalQueue() {return QueueBuilder.durable(…

软件测试——认识测试

在本篇文章中,我会给大家说明一下几个问题: 什么是测试软件测试和开发的区别优秀的测试人员需要具备的素质 通过这几个问题,带大家了解测试这个岗位。 1. 什么是测试? 在我们的日常生活中就有很多测试的例子,比如我…

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略 目录 zeroX的简介 1、支持的文件类型 zeroX的安装和使用方法 T1、Node.js 版本: 安装 使用方法 使用文件 URL: 使用本地路径&…

5G 现网信令参数学习(3) - RrcSetup(1)

目录 1. rlc-BearerToAddModList 1.1 rlc-Config 1.1.1 ul-AM-RLC 1.1.2 dl-AM-RLC 1.2 mac-LogicalChannelConfig 2. mac-CellGroupConfig 2.1 schedulingRequestConfig 2.2 bsr-Config 2.3 tag-Config 2.4 phr-Config 2.5 skipUplinkTxDynamic 3. physicalCellG…

力扣 LeetCode 27. 移除元素(Day1:数组)

解题思路: 注意:数组只能覆盖,不能删除 erase方法的复杂度为O( n )而不是O( 1 ),因为需要把删除后后面的数组向前移动 方法一:双层for循环暴力 方法二:快慢指针 fast表示新数组的元素 slow表示新数组元…

Redis - String 字符串

一、基本认识 字符串类型是Redis最基础的数据类型,关于字符串需要特别注意: Redis中所有的键的 类型都是字符串类型,⽽且其他⼏种数据结构也都是在字符串类似基础上构建的,例如列表和集合的 元素类型是字符串类型,所…

树-好难-疑难_GPT

// // Created by 徐昌真 on 2024/11/10. // #include <iostream> using namespace std;template<typename T> struct ListNode{ //新建链表节点T data; //指向下一个子节点 ListNode< TreeNode<T>* > childHead; 这里的 T 是TreeNde类型的…

Mysql数据类型面试题15连问

整数类型的 UNSIGNED 属性有什么用&#xff1f; MySQL 中的整数类型可以使用可选的 UNSIGNED 属性来表示不允许负值的无符号整数。使用 UNSIGNED 属性可以将正整数的上限提高一倍&#xff0c;因为它不需要存储负数值。 例如&#xff0c; TINYINT UNSIGNED 类型的取值范围是 0 ~…