nebulagraph数据库性能测试(数据库nebulagraph)

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

本文向您展示了如何设计图表数据库星云图的数据模型和系统架构。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

下面主要介绍星云图的数据模型和系统架构设计。

有向属性图 DirectedPropertyGraph

星云图使用一个易于理解的有向属性图来建模,即从逻辑上讲,该图由两个图元素组成:顶点和边。

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

00-1010在星云图中,顶点由标签和标签对应的属性组组成,标签代表顶点的类型,属性组代表标签拥有的一个或多个属性。顶点必须至少有一种类型,即标签或多种类型。每个标签都有一组对应的属性,我们称之为schema。

如上图所示,标签顶点有两种:玩家和团队。玩家的模式中有三种属性ID(vid)、姓名(sting)和年龄(int)。的团队架构有两个属性:标识和名称。

和Mysql一样,星云图是一个模式性很强的数据库,属性的名称和数据类型都是在写入数据之前确定的。

顶点 Vertex

在星云图中,边由类型和边属性组成,而在星云图中,边都是有向边,有向边表示一个顶点(起点src)和另一个顶点(终点dst)之间的关系。另外,在星云图中,我们称之为edgetype edgetype,每个边只有一个edgetype,每个edgetype定义了这个边上属性的模式。

回到上图,图中有两种类型的边,一种是玩家指向玩家的相似关系,属性为相似(double);另一种是发球关系,球员指向球队。这两个属性分别是start_year (int)和end_year (int)。

应当注意,在起点1和终点2之间可以同时存在许多相同或不同类型的边。

边 Edge

因为超大规模关系网络中的节点数高达100亿到1000亿,而边数将高达万亿,即使只是存储点和边都远远大于一般服务器的容量。因此,需要一种方法来切割图元素并将它们存储在不同的逻辑分区上。Bulagraph采用边缘分割的方法。默认的分片策略是hash,分区数量是静态的,不能更改。

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

00-1010在星云图中,每个顶点都被建模为一个键值,该键值根据其顶点ID(简称vid)进行哈希处理,然后存储在相应的分区中。

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

在星云图中,一条逻辑边将被建模为两个独立的键值,分别称为out-key和。

code>in-key 。out-key 与这条边所对应的起点存储在同一个 partition 上,in-key 与这条边所对应的终点存储在同一个 partition 上。

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

系统架构 Architecture

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

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

存储层 Storage

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

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

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

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

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

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

元数据服务层 Metaservice

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

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

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

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

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

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

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

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

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

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

计算层 Query Engine & Query Language(nGQL)

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

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

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

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

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

客户端 API & Console

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

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

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153561.html

(0)

相关推荐

  • mysql存储过程中游标怎么用

    技术mysql存储过程中游标怎么用这篇文章将为大家详细讲解有关mysql存储过程中游标怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。DELIMITER $$USE `cms`$$

    攻略 2021年11月2日
  • 大熊猫外貌特征描写,要介绍大熊猫的样子怎么写

    技术大熊猫外貌特征描写,要介绍大熊猫的样子怎么写在介绍大熊猫的样子之前,先对大熊猫做一个简单介绍 大熊猫已在地球上生存了至少800万年,被誉为“活化石”和“中国国宝”,世界自然基金会的形象大使,是世界生物多样性保护的旗舰

    生活 2021年10月24日
  • php_vld怎么用

    技术php_vld怎么用这篇文章主要为大家展示了“php_vld怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php_vld怎么用”这篇文章吧。

    攻略 2021年12月10日
  • 使用了索引查询还是慢的原因是什么

    技术使用了索引查询还是慢的原因是什么本篇内容介绍了“使用了索引查询还是慢的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年10月22日
  • xamarin开发常见错误总结--the operation was canceled

    技术xamarin开发常见错误总结--the operation was canceled xamarin开发常见错误总结--the operation was canceled1.1.1 操作被取消异

    礼包 2021年12月1日
  • 分析型数据仓库中如何实现读写分离

    技术分析型数据仓库中如何实现读写分离这篇文章主要为大家展示了“分析型数据仓库中如何实现读写分离”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“分析型数据仓库中如何实现读写分离”

    攻略 2021年11月23日