Nebula NGQL语言的使用 一

news2024/11/15 22:52:26

前言:可借鉴资料

文档: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.coloradmin.cn/o/2241116.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringSecurity+jwt+captcha登录认证授权总结

SpringSecurityjwtcaptcha登录认证授权总结 版本信息: springboot 3.2.0、springSecurity 6.2.0、mybatis-plus 3.5.5 认证授权思路和流程: 未携带token,访问登录接口: 1、用户登录携带账号密码 2、请求到达自定义Filter&am…

从社交媒体到元宇宙:Facebook未来发展新方向

Facebook,作为全球最大的社交媒体平台之一,已经从最初的简单互动工具发展成为一个跨越多个领域的科技巨头。无论是连接人与人之间的社交纽带,还是利用大数据、人工智能等技术为用户提供个性化的体验,Facebook一直引领着社交网络的…

javascript用来干嘛的?赋予网站灵魂的语言

javascript用来干嘛的?赋予网站灵魂的语言 在互联网世界中,你所浏览的每一个网页,背后都有一群默默工作的代码在支撑着。而其中,JavaScript就像是一位技艺精湛的魔术师,它赋予了网页生命力,让原本静态的页…

Wordpress常用配置,包括看板娘跨域等

一个Wordpress的博客已经搭建完成了,那么为了让它看起来更有人间烟火气一点,有一些常用的初始配置,这里整理一下。 修改页脚 页脚这里默认会显示Powered by Wordpress,还有一个原因是这里要加上备案信息。在主题里找到页脚&…

The Internals of PostgreSQL 翻译版 持续更新...

为了方便自己快速学习,整理了翻译版本,目前翻译的还不完善,后续会边学习边完善。 文档用于自己快速参考,会持续修正,能力有限,无法确保正确!!! 《The Internals of PostgreSQL 》 不是 《 PostgreSQL14 Internals 》…

FlinkPipelineComposer 详解

FlinkPipelineComposer 详解 原文 背景 在flink-cdc 3.0中引入了pipeline机制,提供了除Datastream api/flink sql以外的一种方式定义flink 任务 通过提供一个yaml文件,描述source sink transform等主要信息 由FlinkPipelineComposer解析&#xff0c…

MybatisPlus知识

mybatis与mybatisplus的区别: mybatisplus顾名思义时mybatis的升级版,提供了更多的API和方法,是基于mybatis框架基础上的升级,更加方便开发。mybatisplus继承BaseMapper接口并调用其中提供的方法来操作数据库,不需要再…

利用飞书多维表格自动发布版本

文章目录 背景尝试1,轮询尝试2,长连接 背景 博主所在的部门比较奇特,每个车型每周都需要发版,所以实际上一周会发布好几个版本。经过之前使用流水线自动发版改造之后,发版的成本已经大大降低了,具体参考&a…

Qwen2-VL:发票数据提取、视频聊天和使用 PDF 的多模态 RAG 的实践指南

概述 随着人工智能技术的迅猛发展,多模态模型在各类应用场景中展现出强大的潜力和广泛的适用性。Qwen2-VL 作为最新一代的多模态大模型,融合了视觉与语言处理能力,旨在提升复杂任务的执行效率和准确性。本指南聚焦于 Qwen2-VL 在三个关键领域…

蓝桥杯每日真题 - 第7天

题目:(爬山) 题目描述(X届 C&C B组X题) 解题思路: 前缀和构造:为了高效地计算子数组的和,我们可以先构造前缀和数组 a,其中 a[i] 表示从第 1 个元素到第 i 个元素的…

家政服务小程序,家政行业数字化发展下的优势

今年以来,家政市场需求持续增长,市场规模达到了万亿级别,家政服务行业成为了热门行业之一! 家政服务种类目前逐渐呈现了多样化,月嫂、保姆、做饭保洁、收纳、维修等家政种类不断出现,满足了居民日益增长的…

蓝桥杯每日真题 - 第12天

题目:(数三角) 题目描述(14届 C&C B组E题) 解题思路: 给定 n 个点的坐标,计算其中可以组成 等腰三角形 的三点组合数量。 核心条件:等腰三角形的定义是三角形的三条边中至少有…

Linux系统下svn新建目录

Linux安装svn自行查找 新建目录 新建一个自定义库的文件夹:mkdir security 使用svnadmin命令在新创建的目录中创建一个新的SVN版本库。例如: svnadmin create security 执行完成以上命令就会生成默认配置文件 通过pwd命令查找当前目录路径 路径&…

SpringCloud基础 入门级 学习SpringCloud 超详细(简单通俗易懂)

Spring Cloud 基础入门级学习 超详细(简单通俗易懂) 一、SpringCloud核心组件第一代:SpringCloud Netflix组件第二代:SpringCloud Alibaba组件SpringCloud原生组件 二、SpringCloud体系架构图三、理解分布式与集群分布式集群 四、…

性能调优专题(9)之从JDK源码级别解析JVM类加载机制

一、类加载运行全过程 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM。 package com.tuling.jvm;public class Math {public static final int initData 666;public static User user new User();public int compute() {…

【全面系统性介绍】虚拟机VM中CentOS 7 安装和网络配置指南

一、CentOS 7下载源 华为源:https://mirrors.huaweicloud.com/centos/7/isos/x86_64/ 阿里云源:centos-vault-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 百度网盘源:https://pan.baidu.com/s/1MjFPWS2P2pIRMLA2ioDlVg?pwdfudi &…

「JVM详解」

JVM JVM概述 基本介绍 JVM:全称 Java Virtual Machine,即 Java 虚拟机,一种规范,本身是一个虚拟计算机,直接和操作系统进行交互,与硬件不直接交互,而操作系统可以帮我们完成和硬件进行交互的…

正点原子IMX6ULL--嵌入式Linux开发板学习中常用命令和笔记记录

学习路线图 传驱动文件 sudo cp chrdevbase.ko chrdevbaseApp /home/txj/linux/nfs/rootfs/lib/modules/4.1.15/ -f bootcmd setenv bootcmd tftp 80800000 zImage;tftp 83000000 imx6ull-alientek-emmc.dtb;bootz 80800000 - 83000000 setenv bootcmd tftp 80800000 zImag…

DVWA靶场通关——SQL Injection篇

一,Low难度下unionget字符串select注入 1,首先手工注入判断是否存在SQL注入漏洞,输入1 这是正常回显的结果,再键入1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for…

CSS回顾-基础知识详解

一、引言 在前端开发领域,CSS 曾是构建网页视觉效果的关键,与 HTML、JavaScript 一起打造精彩的网络世界。但随着组件库的大量涌现,我们亲手书写 CSS 样式的情况越来越少,CSS 基础知识也逐渐被我们遗忘。 现在,这种遗…