图数据库NebulaGraph学习

1.图空间(Space)操作

1.1创建图空间,指定vid_type为整形

CREATE SPACE play_space (partition_num = 10, replica_factor = 1, vid_type = INT64) COMMENT = "运动员库表空间";

1.2创建图空间,指定vid_type为字符串

CREATE SPACE play_space (partition_num = 10, replica_factor = 1, vid_type = FIXED_STRING(32)) COMMENT = "运动员库表空间";

1.3删除图空间

drop SPACE play_space;

2.标签(Tag)操作

2.1创建点

CREATE tag player (name string NULL  COMMENT "姓名", age int8 NULL  COMMENT "年龄")  COMMENT = "球员";
CREATE tag team (name string NULL  COMMENT "球队名称")  COMMENT = "归属球队";

2.2查看库下面的点

SHOW TAGS;

2.2查看某个点的属性

describe TAG player;

2.3基于标签创建点

单条插入示例:

insert vertex player(name,age) values 100:("詹姆斯",38);
insert vertex player(name,age) values 101:("库里",34);
insert vertex player(name,age) values 102:("杜兰特",34);

批量插入示例:

insert vertex team(name) values 200:("洛杉矶湖人队"),201:("金州勇士队"),202:("布鲁克林篮网队");

2.4查看点

指定属性查看示例:

fetch prop on player 100,101,102 YIELD properties(vertex).name,properties(vertex).age;

查询全部属性示例 :

fetch prop on team 200,201,202 YIELD properties(vertex);

2.5删除点

delete vertex 100;

3.边(Edge)操作

3.1创建边

CREATE edge follow (attention_rate int16 NULL  COMMENT "关注度")  COMMENT = "球员关注度关联表";
CREATE edge service (start_time int32 NULL  COMMENT "开始时间", end_time int32 NULL  COMMENT "结束时间")  COMMENT = "球员服役时间关联表";

3.2查看库下面的边

SHOW edges;

3.3查看边的属性

describe edge service;

3.4插入边

单条插入示例:

insert edge follow(attention_rate) values 100->101:(20);
insert edge follow(attention_rate) values 101->102:(50);
insert edge follow(attention_rate) values 102->103:(80);

批量插入示例:

insert edge service(start_time,end_time) values 100->200:(2003,2023),101->201:(2009,2023),102->203:(2007,2023);

3.5查看边

单条查看示例:

fetch prop on follow 100->101 YIELD properties(edge);

批量查看示例:

fetch prop on service 100->200,101->201 YIELD properties(edge).start_time,properties(edge).end_time;

4.查看图谱关系图

5.索引创建

5.1创建索引

CREATE {TAG | EDGE} INDEX [IF NOT EXISTS] <index_name>
ON {<tag_name> | <edge_name>} ([<prop_name_list>]) [COMMENT = '<comment>'];

示例

//点
CREATE TAG INDEX IF NOT EXISTS index_player ON player(name(30), age);
//边
CREATE EDGE INDEX IF NOT EXISTS index_follow ON follow(attention_rate);

5.2重建索引

REBUILD {TAG | EDGE} INDEX <index_name>;

示例

//点
REBUILD TAG INDEX index_name;
//边
REBUILD EDGE INDEX index_follow;

6.常用查询

6.1Go语句查询

        语句从一个或多个点开始,沿着一条或多条边遍历,返回YIELD子句中指定的信息。

GO [[<M> TO] <N> STEPS ] FROM <vertex_list>
OVER <edge_type_list> [{REVERSELY | BIDIRECT}]
[ WHERE <conditions> ]
YIELD [DISTINCT] <return_list>
[{ SAMPLE <sample_list> | <limit_by_list_clause> }]
[| GROUP BY {<col_name> | expression> | <position>} YIELD <col_name>]
[| ORDER BY <expression> [{ASC | DESC}]]
[| LIMIT [<offset>,] <number_rows>];

从vid为100的球员开始找,沿着service边找到终点vid,输出起点vid和终点vid及其信息

GO FROM 100 OVER service YIELD id($^),properties($^),id($$),properties($$);

备注:

$^ :表示边的起点
$$ :表示边的终点
properties() :返回点/边的所有属性

6.2FETCH语句查询

可以获得点或边的属性

6.2.1查看点

查看点

语法:
FETCH PROP ON {<tag_name>[, tag_name ...] | *}
<vid> [, vid ...]
YIELD <return_list> [AS <alias>];

示例:

fetch prop on player 100 YIELD properties(vertex);
6.2.2查看边

语法:
FETCH PROP ON <edge_type> <src_vid> -> <dst_vid>[@<rank>] [, <src_vid> -> <dst_vid> ...]
YIELD <output>;

示例:

fetch prop on follow 100->101 YIELD properties(edge);

6.3LOOKUP查找

        语句是基于索引的,和WHERE子句一起使用,查找符合特定条件的数据,要先创建索引

LOOKUP ON {<vertex_tag> | <edge_type>}
[WHERE <expression> [AND <expression> ...]]
YIELD <return_list> [AS <alias>];

<return_list>
    <prop_name> [AS <col_alias>] [, <prop_name> [AS <prop_alias>] ...];

a.找出点中名称为詹姆斯的球员

LOOKUP ON player WHERE player.name == "詹姆斯" YIELD properties(vertex); 

 

b.找出球员中名字经库里开始,并且年龄在34和38两个值之前的球员

LOOKUP ON player WHERE player.name STARTS WITH "库里" AND player.age IN [34,38] YIELD properties(vertex).name, properties(vertex).age;

 

c.根据条件查看边

LOOKUP ON follow WHERE follow.attention_rate > 20 YIELD properties(edge); 

d.统计边或者点的数量 

LOOKUP ON player YIELD id(vertex)| YIELD COUNT(*) AS Player_Number;
LOOKUP ON follow YIELD edge AS e| YIELD COUNT(*) AS Follow_Number;

 

6.4MATCH查找

        可以灵活的描述各种图模式,但是它依赖索引去匹配 Nebula Graph 中的数据模型,性能也还需要调优,要先创建索引

MATCH <pattern> [<clause_1>]  RETURN <output>  [<clause_2>];

查找球员名称为的点并返回

 MATCH (v:player{name:"杜兰特"}) RETURN v

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

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

相关文章

YOLOv8改进 | 主干篇 | 利用MobileNetV3替换Backbone(轻量化网络结构)

一、本文介绍 本文给大家带来的改进机制是MobileNetV3&#xff0c;其主要改进思想集中在结合硬件感知的网络架构搜索&#xff08;NAS&#xff09;和NetAdapt算法&#xff0c;以优化移动设备CPU上的性能。它采用了新颖的架构设计&#xff0c;包括反转残差结构和线性瓶颈层&…

Java小案例-聊一聊Java、Spring、Dubbo三者SPI机制的原理和区别

前言 什么是SPI&#xff1f; 什么是SPI SPI全称为Service Provider Interface&#xff0c;是一种动态替换发现的机制&#xff0c;一种解耦非常优秀的思想&#xff0c;SPI可以很灵活的让接口和实现分离&#xff0c;让api提供者只提供接口&#xff0c;第三方来实现&#xff0c…

软件工程中关键的图-----知识点总结

目录 1.数据流图 2.变换型设计和事务型设计 3.程序流程图 4.NS图和PAD图&#xff1a; 5.UML图 1.用例图 2.类图 3.顺序图 4.协作图 本文为个人复习资料&#xff0c;包含个人复习思路&#xff0c;多引用&#xff0c;也想和大家分享一下&#xff0c;希望大家不要介意~ …

CVE-2023-49898 Apache incubator-streampark 远程命令执行漏洞

项目介绍 Apache Flink 和 Apache Spark 被广泛用作下一代大数据流计算引擎。基于大量优秀经验结合最佳实践&#xff0c;我们将任务部署和运行时参数提取到配置文件中。这样&#xff0c;带有开箱即用连接器的易于使用的 RuntimeContext 将带来更轻松、更高效的任务开发体验。它…

【LeetCode刷题笔记】贪心

135.分发糖果 解题思路: 两个数组 + 两次遍历 ,取 最大峰值 ,准备两个数组 L 和 R ,默认填充 1 , 先 从左往右 扫描一遍, 更新 L 数组,如果 右边

评论回复功能数据库设计

1. 评论的场景 类似csdn博客评论 2. 建表sql CREATE TABLE comment (id varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT id,parent_id varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 父级评论id&#xff08;…

初识大数据,一文掌握大数据必备知识文集(3)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

State of PostgreSQL 2023 报告解读

基于 PostgreSQL 内核的时序数据库厂商 Timescale 发布了一年一度的 State of Postgres 2023 报告。 Timescale 介绍 简单先介绍一下 Timescale 这家公司的历史。它最早是提供了一个 PG 的插件&#xff0c;引入了 Hypertable 这个概念&#xff0c;来高效地处理时序数据&…

Flappy Bird游戏python完整源码

通过pygame实现当年风靡一时的flappy bird小游戏。 当前只设定了同样长度的管道&#xff0c;图片和声音文件自行导入。 效果如下&#xff1a; # -*- coding:utf-8 -*- """ 通过pygame实现曾风靡一时的flappybird游戏。 小鸟x坐标不变&#xff0c;画布左移实现…

mac上使用 Downie 下载网页视频

在今天的数字时代&#xff0c;视频内容在互联网上的传播变得更加普遍和便捷。然而&#xff0c;有时我们可能希望将网页上的视频保存在本地&#xff0c;以便离线观看或与他人分享。Downie 是一款强大而简便的工具&#xff0c;专门设计用于下载网页上的视频内容。本文将介绍 Down…

阿里巴巴虚拟试衣间:在模特身上尝试任何服装 | 开源日报 No.122

HumanAIGC/OutfitAnyone Stars: 1.8k License: NOASSERTION Outfit Anyone 由阿里巴巴集团的智能计算研究院开发。它提供了超高质量的虚拟试衣功能&#xff0c;用户可以在模特身上尝试任何服装&#xff0c;并且保证安全和隐私。主要功能包括&#xff1a; 提供超高质量的虚拟试…

Qt通用属性工具:随心定义,随时可见(一)

一、开胃菜&#xff0c;没图我说个DIAO 先不BB&#xff0c;给大家上个效果图展示下&#xff1a; 上图我们也没干啥&#xff0c;几行代码&#xff1a; #include "widget.h" #include <QApplication> #include <QObject> #include "QtPropertyEdit…

基于单片机设计的指纹锁(读取、录入、验证指纹)

一、前言 指纹识别技术是一种常见的生物识别技术&#xff0c;利用每个人指纹的唯一性进行身份认证。相比于传统的密码锁或者钥匙锁&#xff0c;指纹锁具有更高的安全性和便利性&#xff0c;以及防止钥匙丢失或密码泄露的优势。 基于单片机设计的指纹锁项目是利用STC89C52作为…

基于Spring自动注入快速实现策略模式+工厂模式优化过多的if..else

一、策略模式 1.1策略模式定义 在策略模式&#xff08;Strategy Pattern&#xff09;中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式定义了一系列算法或策略&#xff0c;并将每个算法封装在独立的类中&#xff0c;使得它们可以互相…

cleanmymac和柠檬清理哪个好 cleanmymac有必要买吗

大家好&#xff0c;不定期分享正版软件激活安装、使用帮助&#xff0c;售后等知识。 在我们的日常使用中&#xff0c;电脑常常会出现卡顿、运行缓慢的情况。这时候&#xff0c;我们通常会想到清理电脑&#xff0c;以期望恢复电脑的正常运行状态。而在清理电脑时&#xff0c;有两…

Service详解【六】

文章目录 6. Service详解6.1 Service介绍6.2 Service类型6.3 Service使用6.3.1 实验环境准备6.3.2 ClusterIP类型的Service6.3.3 HeadLiness类型的Service6.3.4 NodePort类型的Service6.3.5 LoadBalancer类型的Service6.3.6 ExternalName类型的Service 6.4 Ingress介绍6.5 Ingr…

多个bean获取同一个Service,获取的内存地址是同一块;引用bean地址存储在一个map中

public class UserService {public void test() {System.out.println("---test----");} } Testpublic void doesNotContain1(){// 创建Spring容器AnnotationConfigApplicationContext applicationContext new AnnotationConfigApplicationContext();// 向容器中注册…

3 pandas之dataframe

定义 DataFrame是一个二维数据结构&#xff0c;即数据以行和列的方式以表格形式对齐。 DataFrame特点&#xff1a; 存在不同类型的列大小可变带有标签的轴可对列和行进行算数运算 构造函数 pandas.DataFrame( data, index, columns, dtype, copy)参数解释&#xff1a; 序号…

【SpringBoot快速入门】(1)SpringBoot的开发步骤、工程构建方法以及工程的快速启动详细讲解

目录 SpringBoot简介1 SpringBoot快速入门1.1 开发步骤1.1.1 创建新模块1.1.2 创建 Controller1.1.3 启动服务器1.1.4 进行测试 2 对比3 官网构建工程3.1 进入SpringBoot官网3.2 选择依赖3.3 生成工程 4 SpringBoot工程快速启动4.1 问题导入4.2 打包4.3 启动 之前我们已经学习的…

浅谈Redis分布式锁(上)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 不论面试还是实际工作中…