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

  • 时间:
  • 浏览:2
  • 来源:uu快3官方网站_uu快3苹果版_走势

在 Nebula Graph 中边由类型和边属性构成,而 Nebula Graph 中边均是有向边,有向边表明一六个顶点( 起点 src )指向就是顶点( 终点 dst )的关联关系。此外,在 Nebula Graph 中让让让我们 将边类型称为 edgetype ,每一根边必须一种生活edgetype ,次责 edgetype 相应定义了其他边上属性的 schema 。

不需要 说明的是,起点1 和终点2 之间,能必须同時 存在多条相同已经不同类型的边。

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

关于数据模型的完整性设计会在后续的系列文章中介绍。

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

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

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

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

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

知乎:https://www.zhihu.com/org/nebulagraph/posts

在 Nebula Graph 中顶点由标签 tag 和对应 tag 的属性组构成, tag 代表顶点的类型,属性组代表 tag 拥有的一种生活或多种属性。一六个顶点不需要 合适有一种生活类型,即标签,不需要 必须有多种类型。次责标签有一组相对应的属性,让让让我们 称之为 schema 。

Nebula Graph:一六个开源的分布式图数据库。作为唯一不需要 存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅不需要 在高并发场景下满足毫秒级的低强度查询要求,还不需要 实现服务高可用且保障数据安全性。

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

回到里面的图例,图包含一种生活类型的边,一种生活为 player 指向 player 的 like 关系,属性为 likeness (double);另一种生活为 player 指向 team 的 serve 关系,六个属性分别为 start_year (int) 和 end_year (int)。

Nebula Graph:一六个开源的分布式图数据库。

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

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

本篇主要介绍 Nebula Graph 的数据模型和系统派发。

微博:https://weibo.com/nebulagraph

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

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

GitHub:https://github.com/vesoft-inc/nebula

MetaService 层为有情况汇报的服务,其情况汇报持久化法律方法与 Storage 层一样通过 KVStore 法律方法存储。

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