文章目录

  • 快速入门nebula graph
    • 1.介绍
    • 2.nebula的六种数据模型
    • 3.图论中的路径
    • 4.启动/连接nebula
      • 启动:
      • 连接:
    • 5.nGQL示例
      • 1.增
      • 2.删
      • 3.改
      • 4.查
    • 6.client
    • 7.Nebula Algorithm

快速入门nebula graph

1.介绍

nubula graph 是一款开源分布式易拓展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。
生态图

服务架构图

2.nebula的六种数据模型

  1. space:图空间,相当于一个数据库,不同的图空间数据是相互隔离的
  2. tag:标签,由一组事先定义的属性构成
  3. vertex:点,用vid标识,vid在同一个图空间唯一,相当于主键,一个点至少一个tag
  4. edge type:边类型,同tag,由一组事先定义的属性构成
  5. edge:边,nebula中只有有向边,一条边只有一个edge type,只有一个rank,rank是边的一个排序值,可用作边权,一个边由四元组<起点vid,edge type,rank,终点vid>唯一标识
  6. properties:属性就是键值对形式存储的信息

3.图论中的路径

路径就是一个有限或者无限的点边连成的序列,路径的类型分为3种:walk,trail,path。

  1. walk:点边可以重复的路径。GO语句采用的是walk类型路径
  2. trail:点可以重复,边不可重复的路径。MATCH、FIND PATH和GET SUBGRAPH语句采用的是trail类型路径
    trail中还有两类特殊的路径类型:cycle和circuit。
    2.1 cycle:只有起点终点重复
    2.2 circuit:除了起点终点重复外,还有其他点重复
  3. path:点边都不重复
点重复 点不重复
边重复 walk NONE
边不重复 trail path

4.启动/连接nebula

启动:
# 1. docker启动nebula
下载nebula:git clone -b v2.6.0 https://github.com/vesoft-inc/nebula-docker-compose.git
cd /neubla目录下
docker-compose up -d# 2.docker启动studio
下载studio:https://oss-cdn.nebula-graph.com.cn/nebula-graph-studio/nebula-graph-studio-v3.1.0.tar.gz
cd /studio目录下
docker-compose up -d# 3.停止命令:
docker-compose down# 4.查看服务:
docker-compose ps
连接:
  1. 命令行连接
    下载nebula console:https://github.com/vesoft-inc/nebula-console/releases
    windows下的话修改下载的文件为nebula-console.exe方便使用,执行命令连接数据库:
    nebula-console -addr ip -port 端口 -u 用户名 -p 密码

  2. nebula studio 连接
    启动studio后访问studio,默认是localhost:7001

输入ip:端口,用户名和密码,进入图形界面:(注意ip不能是localhost或者127.0.0.1,得是真正的IP地址)
图探索界面:

控制台执行ngql界面:

5.nGQL示例

以nba数据为例:player,team为点tag,serve,follow为边edge type
数据模型是:player-serve->team,player-follow->player

1.增

1.0 创建图空间:
create space basketballplayer(partition_num=15,replica_factor=1,vid_type=fixed_string(32));
partition_num:指定图空间的分片数量。建议设置为5倍的集群硬盘数量
replica_factor:指定每个分片的副本数量
vid_type:点ID的数据类型,可选值为FIXED_STRING()和INT64

1.1 创建tag:
create tag player(name string,age int);

1.2 创建edge type:
create edge serve(start_year int,end_year int);

1.3 创建index(match,look up等语句依赖索引去匹配数据):
create tag index player_index_0 on player();

1.4 插入点:
insert vertex player(name,age) values "player100":("Tim Duncan", 42);

1.5 插入边:
insert edge serve(start_year,end_year) values "player100"->"team204":(1997, 2016);

2.删

2.1 删除点
DELETE VERTEX "player100";

2.2 删除边
DELETE EDGE serve "player100" -> "team204"@0;

3.改

3.1 修改点:
UPDATE VERTEX ON player "player101" SET age = age + 2 WHEN name == "Tony Parker" YIELD name AS Name, age AS Age;

3.2 修改边:
UPDATE EDGE on serve "player100" -> "team204"@0 SET start_year = start_year + 1 WHEN end_year > 2010 YIELD start_year, end_year;

3.3 修改或插入点:
UPSERT VERTEX ON player "player666" SET age = 30 WHEN name == "Joe" YIELD name AS Name, age AS Age;

3.4 修改或插入边:
UPSERT EDGE on serve "player666" -> "team200"@0 SET end_year = 2021 WHEN end_year == 2010 YIELD start_year, end_year;

4.查
  1. go:指定过滤条件遍历图,遍历的路径类型walk
    1.1 查看指定vid所属的队伍:默认遍历出边
    go from "player102" over serve
    1.2 查看follow vid的点:(遍历入边)
    go from "player102" over follow reversely
    1.3 查看N跳的点:
    go 2 steps from "player100" over follow yield follow._dst

  2. match:基于模式(pattern)匹配的搜索,遍历路径类型trail
    2.1 查看所有player,tag player需要建好索引
    match (v:player) return v
    2.2 查看某个点连接的点:
    match (v:player)--(v2) where id(v)=="player100" return v2
    2.3 查看指定方向的点:
    match (v:player)-->(v2) where id(v)=="player100" return v2
    2.4 查看路径
    MATCH p=(v:player{name:"Tim Duncan"})-->(v2) RETURN p;
    2.5 查看指定长度的路径:
    match p = (v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) return p

  3. lookup:根据索引遍历数据,遍历路径类型trail
    3.1 查看tag的所有点
    lookup on player;
    3.2 查看edge type的所有边
    lookup on follow;
    3.3 统计tag的数量
    lookup on player | yield count(*) as playernum
    3.4 统计边的数量
    lookup on follow | yield count(*) as follownum

更详细的ngql语法参考连接:https://docs.nebula-graph.com.cn/2.6.1/3.ngql-guide/1.nGQL-overview/1.overview/

6.client

1.python client:

#安装nebula2-python:
pip install nebula2-python==2.6.0#示例代码:
from nebula2.gclient.net import ConnectionPool
from nebula2.Config import Configconfig = Config()
# 最大连接数
config.max_connection_pool_size = 10
# 连接超时时间
config.timeout = 60000
# 关闭空闲连接时间
config.idle_time = 0
# 检查空闲连接时间间隔
config.interval_check = -1
connection_pool = ConnectionPool()
ok = connection_pool.init([('10.1.92.187',9669)],config)
# print(ok)
# 连接方式一
# session = connection_pool.get_session("root","123")
# session.execute('use basketballplayer')
# result = session.execute("show tags")
# print(result)
# session.release()
# 连接方式二
with connection_pool.session_context('root','123') as sess:sess.execute('use basketballplayer')res = sess.execute("MATCH (v:player{name:\"Tim Duncan\"})<-[e]-(v2) RETURN e")print(res)

1.java client参考连接:https://docs.nebula-graph.com.cn/2.6.1/14.client/4.nebula-java-client/
2.go client参考连接:https://docs.nebula-graph.com.cn/2.6.1/14.client/6.nebula-go-client/

7.Nebula Algorithm

Nebula Algorithm支持的算法:

算法名 说明 应用场景
PageRank 页面排序 网页排序、重点节点挖掘
Louvain 社区发现 社团挖掘、层次化聚类
KCore K 核 社区发现、金融风控
LabelPropagation 标签传播 资讯传播、广告推荐、社区发现
ConnectedComponent 联通分量 社区发现、孤岛发现
StronglyConnectedComponent 强联通分量 社区发现
ShortestPath 最短路径 路径规划、网络规划
TriangleCount 三角形计数 网络结构分析
GraphTriangleCount 全图三角形计数 网络结构及紧密程度分析
BetweennessCentrality 介数中心性 关键节点挖掘,节点影响力计算
DegreeStatic 度统计 图结构分析

快速入门nebula graph相关推荐

  1. Boost Graph Library 快速入门

    Boost Graph Library 快速入门 图领域的数据结构和算法在某些方面比容器更为复杂,图算法在图中移动有着众多的路线,而STL使用的抽象迭代器接口不能有效的支持这些.作为替换,我们为图提供 ...

  2. OpenStack快速入门

    OpenStack云计算快速入门(1) 该教程基于Ubuntu12.04版,它将帮助读者建立起一份OpenStack最小化安装.我是五岳之巅,翻译中多采用意译法,所以个别词与原版有出入,请大家谅解.我 ...

  3. struts2教程--快速入门

    Struts2框架介绍 1.三大框架 : 是企业主流 JavaEE开发的一套架构 Struts2 + Spring + Hibernate 2. 什么是框架?为什么要学框架 ? 框架 是 实现部分功能 ...

  4. 【效率】超详细!手把手带你快速入门 GitHub!

    作者:Peter     编辑:JackTian 来源:公众号「杰哥的IT之旅」 快速入门GitHub GitHub在程序开发领域家喻户晓,现在几乎整个互联网的开发者都将版本管理工具GitHub作为版 ...

  5. 4.PromQL快速入门

    4.PromQL快速入门 4.1.什么是 PromQL? 4.2.PromQL 基础用法 4.2.1.完全匹配 4.2.2.正则匹配 4.2.3.范围查询 4.2.4.时间位移操作 4.2.5.聚合操 ...

  6. spark之1:快速入门

    spark之1:快速入门 @(SPARK)[spark, 大数据] spark可以通过交互式命令行及编程两种方式来进行调用: 前者支持scala与python 后者支持scala.python与jav ...

  7. .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练

    写在前面 上篇文章.NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文 ...

  8. Dash的快速入门将使您在5分钟内进入“ Hello World”

    by Anuj Pahade 由Anuj Pahade Dash的快速入门将使您在5分钟内进入" Hello World" (This quick intro to Dash wi ...

  9. prometheus命令_Prometheus入门教程(一):Prometheus 快速入门

    点击蓝色"陈树义"关注我哟 Prometheus 是任何一个高级工程师必须要掌握的技能.那么如何从零部署一套 Prometheus 监控系统呢?本篇文章将从 Prometheus ...

  10. [官版翻译ing]OpenStack云计算快速入门之一:OpenStack及其构成简介

    转自:http://blog.chinaunix.net/uid-22414998-id-3263551.html <OpenStack Starter Guide for Ubuntu 12. ...

最新文章

  1. 以列表形式输出_04 Python之列表、集合和字典的推导式
  2. java 切面_实用|AOP切面编程手段大汇总
  3. d-link路由器samba设置_d-link云路由器怎么设置 d-link云路由器设置教程【详解】
  4. 右)侧固定宽度,右(左)侧宽度自适应 ---清除浮动
  5. win10下的selenium + python环境搭建
  6. 如何在 iPhone、iPad、Apple Watch、Mac 和 Apple TV 上使用 AirPods 收听?
  7. VS2005 中网站转为Web应用程序的方法
  8. 算法与数据结构 第3章 高级排序算法下 学习笔记
  9. 朋友,谁会Symbian S40 Symbian S60 v3/v5 Android?
  10. ORA-01722:invalid number
  11. visio 怎么画直线
  12. 关于淘客软件的那些事儿
  13. 短信验证码校验的实现
  14. tcp图片13包java怎么接收_13. TCP协议中的动态数据传输:应对小数据包
  15. 东方财富:公司总经理陶涛辞任 其实将担任总经理职务
  16. 迅雷链:DPoA 与 VRF
  17. c语言学习周报(2020.11.21-11.28)
  18. 电脑版微信聊天记录和小程序视频播放黑屏,但有声音,qq和其浏览器视频播放正常。如何解决?
  19. 10 本最值得阅读的网络安全书籍推荐
  20. Python - 定时自动获取 Bing 首页壁纸

热门文章

  1. 微博、微信、qq、空间、等分享功能
  2. 二十四节气—立秋,文案、海报分享。
  3. 图像mnf正变换_PIE SDK最小噪声变换
  4. HDU 4565 (构造共轭函数+矩阵快速幂)
  5. 网站统计系统内容分析
  6. java flex 聊天_【转帖】实现了视频私聊功能
  7. 打开计算机ping,电脑ping怎么打开
  8. 存活探针(Liveness Probe)
  9. PyCharm New environment和Existing environment
  10. 十载寒冰,难凉热血——2020CSDN年度博客之星Top10心路历程