在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何进行图数据库Nebula Graph 的数据模型和系统架构设计

97次阅读
没有评论

共计 3052 个字符,预计需要花费 8 分钟才能阅读完成。

本篇文章为大家展示了如何进行图数据库 Nebula Graph 的数据模型和系统架构设计,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

下面主要介绍 Nebula Graph 的数据模型和系统架构设计。

有向属性图 DirectedPropertyGraph

Nebula Graph 采用易理解的有向属性图来建模,也就是说,在逻辑上,图由两种图元素构成:顶点和边。

顶点 Vertex

在 Nebula Graph 中顶点由标签  tag  和对应  tag  的属性组构成, tag  代表顶点的类型,属性组代表  tag  拥有的一种或多种属性。一个顶点必须至少有一种类型,即标签,也可以有多种类型。每种标签有一组相对应的属性,我们称之为  schema 。

如上图所示,有两种  tag  顶点:player 和 team。player 的  schema  有三种属性  ID (vid),Name (sting)和  Age (int);team 的  schema  有两种属性  ID (vid)和  Name (string)。

和 Mysql 一样,Nebula Graph 是一种强 schema 的数据库,属性的名称和数据类型都是在数据写入前确定的。

边 Edge

在 Nebula Graph 中边由类型和边属性构成,而 Nebula Graph 中边均是有向边,有向边表明一个顶点(起点  src )指向另一个顶点(终点  dst )的关联关系。此外,在 Nebula Graph 中我们将边类型称为  edgetype ,每一条边只有一种 edgetype ,每种  edgetype  相应定义了这种边上属性的  schema 。

回到上面的图例,图中有两种类型的边,一种为 player 指向 player 的  like  关系,属性为  likeness (double);另一种为 player 指向 team 的  serve  关系,两个属性分别为 start_year (int) 和 end_year (int)。

需要说明的是,起点 1 和终点 2 之间,可以同时存在多条相同或者不同类型的边。

图分割 GraphPartition

由于超大规模关系网络的节点数量高达百亿到千亿,而边的数量更会高达万亿,即使仅存储点和边两者也远大于一般服务器的容量。因此需要有方法将图元素切割,并存储在不同逻辑分片  partition  上。Nebula Graph 采用边分割的方式,默认的分片策略为哈希散列,partition 数量为静态设置并不可更改。

数据模型 DataModel

在 Nebula Graph 中,每个顶点被建模为一个  key-value ,根据其 vertexID(或简称 vid)哈希散列后,存储到对应的 partition 上。

一条逻辑意义上的边,在 Nebula Graph 中将会被建模为两个独立的  key-value ,分别称为  out-key  和  in-key 。out-key 与这条边所对应的起点存储在同一个 partition 上,in-key 与这条边所对应的终点存储在同一个 partition 上。

系统架构 Architecture

Nebula Graph 包括四个主要的功能模块,分别是存储层、元数据服务、计算层和客户端。

存储层  Storage

在 Nebula Graph 中存储层对应进程是  nebula-storaged ,其核心为基于 Raft(用来管理日志复制的一致性算法)协议的分布式  Key-valueStorage 。目前支持的主要存储引擎为「Rocksdb」和「HBase」。Raft 协议通过  leader/follower  的方式,来保持数据之间的一致性。Nebula Storage 主要增加了以下功能和优化:

Parallel Raft:允许多台机器上的相同 partiton-id 组成一个  Raft group 。通过多组 Raft group 实现并发操作。

Write Path batch:Raft 协议的多机器间同步依赖于日志 id 顺序性,这样的吞吐量  throughput  较低。通过批量和乱序提交的方式可以实现更高的吞吐量。

Learner:基于异步复制的 learner。当集群中增加新的机器时,可以将其先标记为 learner,并异步从  leader/follower  拉取数据。当该 learner 追上 leader 后,再标记为 follower,参与 Raft 协议。

Load-balance:对于部分访问压力较大的机器,将其所服务的 partition 迁移到较冷的机器上,以实现更好的负载均衡。

元数据服务层  Metaservice

Metaservice 对应的进程是  nebula-metad ,其主要的功能有:

用户管理:Nebula Graph 的用户体系包括  Goduser , Admin , User , Guest  四种。每种用户的操作权限不一。

集群配置管理:支持上线、下线新的服务器。

图空间管理:增持增加、删除图空间,修改图空间配置(Raft 副本数)

Schema 管理:Nebula Graph 为强 schema 设计。

通过 Metaservice 记录 Tag 和 Edge 的属性的各字段的类型。支持的类型有:整型 int, 双精度类型 double, 时间数据类型 timestamp, 列表类型 list 等;

多版本管理,支持增加、修改和删除 schema,并记录其版本号

TTL 管理,通过标识到期回收  time-to-live  字段,支持数据的自动删除和空间回收

MetaService 层为有状态的服务,其状态持久化方法与 Storage 层一样通过  KVStore  方式存储。

计算层  Query Engine Query Language(nGQL)

计算层对应的进程是  nebula-graphd ,它由完全对等无状态无关联的计算节点组成,计算节点之间相互无通信。**Query Engine ** 层的主要功能,是解析客户端发送 nGQL 文本,通过词法解析  Lexer  和语法解析  Parser  生成执行计划,并通过优化后将执行计划交由执行引擎,执行引擎通过 MetaService 获取图点和边的 schema,并通过存储引擎层获取点和边的数据。Query Engine  层的主要优化有:

异步和并发执行:由于 IO 和网络均为长时延操作,需采用异步及并发操作。此外,为避免单个长 query 影响后续 query,Query Engine 为每个 query 设置单独的资源池以保证服务质量 QoS。焦作国医胃肠医院:https://www.jianshu.com/p/b8966d1a468e

计算下沉:为避免存储层将过多数据回传到计算层占用宝贵的带宽,条件过滤  where  等算子会随查询条件一同下发到存储层节点。

执行计划优化:虽然在关系数据库 SQL 中执行计划优化已经经历了长时间的发展,但业界对图查询语言的优化研究较少。Nebula Graph 对图查询的执行计划优化进行了一定的探索,包括执行计划缓存和上下文无关语句并发执行。

客户端  API Console

Nebula Graph 提供 C++、Java、Golang 三种语言的客户端,与服务器之间的通信方式为 RPC,采用的通信协议为 Facebook-Thrift。用户也可通过 Linux 上 console 实现对 Nebula Graph 操作。Web 访问方式目前在开发过程中。

上述内容就是如何进行图数据库 Nebula Graph 的数据模型和系统架构设计,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计3052字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 少妇无码av无码专区 | 国产伦精品一区二区免费 | 亚洲精品一区亚洲精品 | 亚洲依依成人精品 | 又色又爽又无遮挡的女视频免费 | 国产在线19禁免费观看国产 | 亚洲欧美h | 成人6969www色| 久久亚洲av成人出白浆无码国产 | 一本av高清一区二区三区 | 国产精品中文字幕在线观看 | 国产福利在线观看精品 | 国产自产第一区c国产 | 国产午夜精品一区二区三区四区 | 黑人处破女免费播放 | 亚洲免费一区 | 欧美日韩亚洲综合久久久 | 黄网站在线播放视频免费观看 | 好看的黄色网址 | 亚洲av无码乱码国产一区二区 | 黄色大片免费看 | 美女被免费网站视频九色 | 日韩一区二三区无 | 欧美日本亚洲 | 久久综合中文字幕一区二区三区 | 日韩成人在线影院 | 久久精品国产亚洲av不卡 | 网站免费黄 | 人妻少妇乱子伦无码视频专区 | 亚洲精品久久久口爆吞精 | 亚洲av电影院在线观看 | 午夜精品久久久久久久久久久久 | 国产一级在线播放 | 国产欧美日韩综合二区三区 | 免费成年人在线观看视频 | 国产精品亚洲片在线观看不卡 | 欧美日韩国产亚洲一区二区三区 | 日韩av激情在线观看 | 一级毛片区 | 麻豆日韩国产精品欧美在线 | 欧美色图另类图片 |