暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

NebulaGraph认证通关秘籍

原创 cqiwen 2022-12-23
942

笔者近期突然想考一个证,在朋友的推荐下研究了下图数据库NebulaGraph,2天内基本掌握并轻松拿下NGCI。以下是笔者对于考试中遇到的考点进行的知识点整理,相信如果你拿着这些知识点,直接开考也应该能顺利拿到证书了。

一、NebulaGraph 技能认证

NebulaGraph 技能认证分为个人技能认证和企业认证两类。

NebulaGraph 个人认证设有 2 个不同难度等级的认证考试:

  • NebulaGraph Certified Insider(简称:NGCI),证明用户对图数据库及 NebulaGraph 有基本了解,是合格的 Nebula Graph 使用者。
    • NGCI 考试共 100 题,总分 100 分。其中,单项选择题 40 题,每题 1 分;判断题 60 题,每题 1 分。
  • NebulaGraph Certified Professional(简称:NGCP),证明用户对图数据库及 NebulaGraph 有深入的了解,是 Nebula Graph 专业人士。
    • NGCP 考试共 100 题,总分 100 分。其中单项选择题 40 题,不定项选择题 30 题,判断题 30 题,各题型均为每题 1 分。

在 NGCI / NGCP 认证考试中,获得 60 分,即视为认证通过,可获得对应的认证证书。

二、相关网站

NebulaGraph 技能认证
https://discuss.nebula-graph.com.cn/t/topic/8728?utm_source=dis_nav

快速入门:

https://academic.nebula-graph.io/?lang=ZH_CN

https://docs.nebula-graph.com.cn/3.3.0/

三、相关考点

在 NebulaGraph 3.2 的版本中,允许存在无 Tag 的点,但从 NebulaGraph 3.3.0 开始默认不支持无 Tag 的点。  
  
NebulaGraph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。  
  
NebulaGraph 文档以 Markdown 语言编写。单击文档标题右上侧的铅笔图标即可提交修改建议。  
  
一张图由一些小圆点(称为顶点或节点,即 Vertex)和连接这些圆点的直线或曲线(称为边,即 Edge)组成。  
  
图也可以用于记录一个大型 IT 系统内部错综复杂的微服务之间的调用关系5,运维团队用其进行服务治理。这里每个点表示一个微服务,边表示两个微服务之间的调用关系;这样,运维人员可以方便地寻找可用性低于阈值 (99.99%) 的调用链路,或者发现那些出故障会影响面特别大的微服务节点。  
  
图是一种更直观、更符合人脑思考直觉的知识表示方式。图更容易展现数据的特征.  
  
图数据库用图来存储数据,而图是最接近高度灵活、高性能的数据结构之一。图数据库是一种专门用于存储和检索庞大信息网的存储引擎,它能够高效地将数据存储为点和边,并允许对这些点边结构进行高性能的检索和查询。我们也可以为这些点和边添加属性。  
  
图数据库几乎适用于存储所有领域的数据。因为在几乎所有领域中,事物之间都是由某种相关联的。  
  
根据 verifiedmarketresearc4, fnfresearch5, marketsandmarkets6, 以及 gartner7 等智库的统计和预测,图数据库市场(包括云服务)规模在2019年大约是8亿美元,将在未来6年保持25%左右的年复合增长(CAGR)至 30-40 亿美元,这大约对应于全球数据库市场 5-10% 的市场份额。  
  
NoSQL 一词最早于上世纪 90 年代末提出,可以解释为“非 SQL” 或“不仅是 SQL”,具体解释要根据语境判断。市面上还有很多非关系型数据库的产品,这些产品都可以叫做 NoSQL。  
NoSQL 数据库可以分为四类:  
键值存储(key-value stores)  
列式存储(column-family stores)  
文件存储(document stores)  
图数据库(graph databases)  
  
NebulaGraph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载包含数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。  
  
图数据库是专门存储庞大的图形网络并从中检索信息的数据库。它可以将图中的数据高效存储为点(Vertex)和边(Edge),还可以将属性(Property)附加到点和边上。  
  
NebulaGraph 可用于各种基于图的业务场景。NebulaGraph 的 Graph 服务默认端口为 9669。  
  
图空间用于隔离不同团队或者项目的数据。不同图空间的数据是相互隔离的,可以指定不同的存储副本数、权限、分片等。  
一个 NebulaGraph 实例由一个或多个图空间组成。每个图空间都是物理隔离的,用户可以在同一个实例中使用不同的图空间存储不同的数据集。  
  
点是用点标识符(VID)标识的。VID在同一图空间中唯一。NebulaGraph 1.x 只支持 VID 类型为INT64,从 2.x 开始支持INT64和FIXED\_STRING(<N>).  
VID 在一个图空间中必须唯一,其作用类似于关系型数据库中的主键(索引+唯一约束)。但不同图空间中的 VID 是完全独立无关的。  
点 VID 的生成方式必须由用户自行指定,系统不提供自增 ID 或者 UUID。  
VID 通常会被(LSM-tree 方式)索引并缓存在内存中,因此直接访问 VID 的性能最高。  
VID 的数据类型必须在创建图空间时定义,且一旦定义无法修改。  
VID 必须在插入点时设置,且一旦设置无法修改。  
  
边是用来连接点的,表示两个点之间的关系或行为,特点如下:  
  
两点之间可以有多条边。  
边是有方向的,不存在无向边。NebulaGraph 中没有无向边,只支持有向边。  
四元组 <起点 VID、Edge type、边排序值 (rank)、终点 VID> 用于唯一标识一条边。边没有 EID。  
一条边有且仅有一个 Edge type。  
一条边有且仅有一个 Rank,类型为 int64,默认值为 0。  
  
路径是指一个有限或无限的边序列,这些边连接着一系列点。路径的类型分为三种:walk、trail、path。  
walk类型的路径由有限或无限的边序列构成。遍历时点和边可以重复。GO语句采用的是walk类型路径。  
trail类型的路径由有限的边序列构成。遍历时只有点可以重复,边不可以重复。MATCH、FIND PATH和GET SUBGRAPH语句采用的是trail类型路径。  
papath类型的路径由有限的边序列构成。遍历时点和边都不可以重复。  
  
NebulaGraph 由三种服务构成:Graph 服务、Meta 服务和 Storage 服务,是一种存储与计算分离的架构.  
在 NebulaGraph 架构中,Meta 服务是由 nebula-metad 进程提供的,负责数据管理,例如 Schema 操作、集群管理和用户权限管理等。所有 nebula-metad 进程构成了基于 Raft 协议的集群,其中一个进程是 leader,其他进程都是 follower。leader 和 follower 的数据通过 Raft 协议保持一致,因此 leader 故障和选举新 leader 不会导致数据不一致。  
Meta 服务存储 TTL(Time To Live)定义信息,可以用于设置数据生命周期。数据过期后,会由 Storage 服务进行处理  
NebulaGraph 采用计算存储分离架构。Graph 服务负责处理计算请求,Storage 服务负责存储数据。它们由不同的进程提供,Graph 服务是由 nebula-graphd 进程提供,Storage 服务是由 nebula-storaged 进程提供。  
Graph 服务主要负责处理查询请求,包括解析查询语句(parser)、校验语句(validator)、生成执行计划(planner)以及按照执行计划执行(executor)四个大步骤.  
NebulaGraph的Planner模块目前的优化方式是 RBO(rule-based optimization),即预定义优化规则,然后对 Validator 模块生成的默认执行计划进行优化。新的优化规则 CBO(cost-based optimization)正在开发中。  
所有 nebula-storaged 进程构成了基于 Raft 协议的集群。  
NebulaGraph 使用 RocksDB 作为本地存储引擎,实现了自己的 KVStore。  
  
分片策略采用静态 Hash 的方式,即对点 VID 进行取模操作,同一个点的所有 Tag、出边和入边信息都会存储到同一个分片,这种方式极大地提升了查询效率。创建图空间时需指定分片数量,分片数量设置后无法修改,建议设置时提前满足业务将来的扩容需求。  
  
nGQL 是 NebulaGraph 创建的声明式图查询语言。用户可以使用 nGQL 语句对 NebulaGraph 数据库进行增删改查。  
  
执行命令SHOW HOSTS检查分片的分布情况和主机状态。  
  
查询数据:  
GO 语句可以根据指定的条件遍历数据库。GO语句从一个或多个点开始,沿着一条或多条边遍历,返回YIELD子句中指定的信息。  
FETCH 语句可以获得点或边的属性。  
LOOKUP 语句是基于索引的,和WHERE子句一起使用,查找符合特定条件的数据。MATCH和LOOKUP语句的执行都依赖索引,但是索引会导致写性能大幅降低。请不要随意在生产环境中使用索引,除非很清楚使用索引对业务的影响。  
MATCH 语句是查询图数据最常用的,可以灵活的描述各种图模式,但是它依赖索引去匹配 NebulaGraph 中的数据模型,性能也还需要调优。确保LOOKUP或MATCH有一个索引可用。如果没有,请先创建索引。  
  
子句/符号 说明  
YIELD 指定该查询需要返回的值或结果。  
$$ 表示边的终点。  
\\ 表示换行继续输入。  
$^ 表示边的起点。  
| 组合多个查询的管道符,将前一个查询的结果集用于后一个查询。  
$- 表示管道符前面的查询输出的结果集。  
  
nGQL 设计目标仅为兼容部分的 DQL 语句(match, optional match, with等)。不计划兼容任何 DDL,DML,DCL.  
nGQL 没有事务及隔离性。  
用户可以在 NebulaGraph GitHub 的 features 目录内查看超过 2500 条 nGQL 示例。  
NebulaGraph 1.x 支持四种注释方式:#、--、//、/\* \*/。NebulaGraph 2.x 中,--不再是注释符。  
  
标识符(如图空间名)区分大小写,关键字(如show)不区分大小写,函数不区分大小写.  
在 nGQL 语句中,除关键字、函数、标点符号、空格以外的字符内容都是标识符。  
  
仅 God 角色权限可以终止任意查询,其他角色只能终止自己的查询。  
所有作业管理命令都需要先选择图空间后才能执行。  
  
用脚本nebula.service管理服务,包括启动、停止、重启、中止和查看。nebula.service的默认路径是/usr/local/nebula/scripts。  
执行如下命令启动服务:/usr/local/nebula/scripts/nebula.service start all  
  
从 NebulaGraph 3.0.0 版本开始,必须先使用ADD HOSTS添加主机,才能正常通过 Storage 服务读写数据。  
nebula> ADD HOSTS 192.168.10.100:9779, 192.168.10.101:9779, 192.168.10.102:9779;  
  
NebulaGraph 是针对 NVMe SSD 进行设计和实现的,所有默认参数都是基于 SSD 设备进行调优,要求极高的 IOPS 和极低的 Latency。  
  
NebulaGraph 支持两种身份验证方式:本地身份验证和 LDAP 验证。默认情况下,身份验证功能是关闭的,用户可以使用root用户名和任意密码连接到 NebulaGraph。开启身份验证后,默认的 God 角色账号为root,密码为nebula。角色详情请参见内置角色权限。  
  
全量Compaction可以对图空间进行大规模后台操作,例如合并文件、删除 TTL 过期数据等,该操作需要手动发起。  
为保证 NebulaGraph 的性能,请参考如下操作建议:  
数据导入完成后,请执行SUBMIT JOB COMPACT。  
业务低峰期(例如凌晨)执行SUBMIT JOB COMPACT。  
  
全量Compaction操作开始后可以停止吗?不可以停止,必须等待操作完成。这是 RocksDB 的限制。  
广度优先大于深度优先:NebulaGraph 基于图拓扑结构进行深度图遍历的性能较低,广度优先遍历以及获取属性的性能较好。  
  
NebulaGraph Studio(简称 Studio)是一款可以通过 Web 访问的开源图数据库可视化工具,搭配 NebulaGraph 内核使用,提供构图、数据导入、编写 nGQL 查询等一站式服务。  
Studio 可以方便管理 NebulaGraph 图数据,具备以下功能:  
使用 Schema 管理功能,用户可以使用图形界面完成图空间、Tag(标签)、Edge Type(边类型)、索引的创建,查看图空间的统计数据,快速上手 NebulaGraph。  
使用导入功能,通过简单的配置,用户即能批量导入点和边数据,并能实时查看数据导入日志。  
使用控制台功能,用户可以使用 nGQL 语句创建 Schema,并对数据执行增删改查操作。  
Studio 上传数据仅支持上传无表头的 CSV 文件,但是,单个文件大小及保存时间不受限制,而且数据总量以本地存储容量为准。  
  
NebulaGraph Dashboard(简称 Dashboard)是一款用于监控 NebulaGraph 集群中机器和服务状态的可视化工具。  
产品功能:  
监控集群中所有机器的状态,包括 CPU、内存、负载、磁盘和流量。  
监控集群中所有服务的信息,包括服务 IP 地址、版本和监控指标(例如查询数量、查询延迟、心跳延迟等)。  
监控集群本身的信息,包括集群的服务信息、分区信息、配置和长时任务。  
支持全局调整监控数据的页面更新频率。  
默认保存14天的监控数据。  
  
NebulaGraph Importer(简称 Importer)是一款 NebulaGraph 的 CSV 文件单机导入工具。Importer 可以读取本地的 CSV 文件,然后导入数据至 NebulaGraph 图数据库中。  
  
NebulaGraph Explorer (简称 Explorer)是一款可以通过 Web 访问的可视化图探索工具,搭配 NebulaGraph 内核使用,用于与图数据进行可视化交互。  
  
NebulaGraph Exchange(简称 Exchange)是一款 Apache Spark™ 应用,用于在分布式环境中将集群中的数据批量迁移到 NebulaGraph 中,能支持多种不同格式的批式数据和流式数据的迁移。  
Exchange 具有以下优点:  
适应性强:支持将多种不同格式或不同来源的数据导入 NebulaGraph 数据库,便于迁移数据。  
支持导入 SST:支持将不同来源的数据转换为 SST 文件,用于数据导入。  
支持 SSL 加密:支持在 Exchange 与 NebulaGraph 之间建立 SSL 加密传输通道,保障数据安全。  
支持断点续传:导入数据时支持断点续传,有助于节省时间,提高数据导入效率。  
  
NebulaGraph Operator 是用于在 Kubernetes 系统上自动化部署和运维 NebulaGraph 集群的工具。  
  
NebulaGraph Spark Connector 是一个 Spark 连接器,提供通过 Spark 标准形式读写 NebulaGraph 数据的能力。  
NebulaGraph Spark Connector 适用于以下场景:  
在不同的 NebulaGraph 集群之间迁移数据。  
在同一个 NebulaGraph 集群内不同图空间之间迁移数据。  
NebulaGraph 与其他数据源之间迁移数据。  
结合 NebulaGraph Algorithm 进行图计算。  
  
NebulaGraph Flink Connector 是一款帮助 Flink 用户快速访问 NebulaGraph 的连接器,支持从 NebulaGraph 图数据库中读取数据,或者将其他外部数据源读取的数据写入 NebulaGraph 图数据库。  
NebulaGraph Flink Connector 适用于以下场景:  
在不同的 NebulaGraph 集群之间迁移数据。  
在同一个 NebulaGraph 集群内不同图空间之间迁移数据。  
NebulaGraph 与其他数据源之间迁移数据。  
  
NebulaGraph Bench 是一款利用 LDBC 数据集对 NebulaGraph 进行性能测试的工具。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

暂无图片
获得了15次点赞
暂无图片
内容获得6次评论
暂无图片
获得了38次收藏
目录
  • 一、NebulaGraph 技能认证
  • 二、相关网站
  • 三、相关考点