Nebula Graph 是由杭州欧若数网科技有限公司(官网:https://www.vesoft.com/cn/)开源的一款分布式图数据库,它主要用来解决伴随着海量数据产生,在关联数据分析、挖掘方面面临的新挑战。自 2019 年 5 月开源以来,Nebula Graph 受到了广泛的关注,许多企业、技术团队、开发者将 Nebula Graph 应用到业务上构建知识图谱、风控、数据治理、反欺诈、实时推荐等场景。在 Nebula 社区中,越来越多用户从案例分享中掌握 Nebula Graph 的使用方法,与此同时,出现了一种声音,部分用户希望能了解 Nebula Graph 背后的实现思路和原理。
在这样的背景下,我们希望通过 Nebula Graph 源码解读系列,分析设计思路和实现原理,帮助大家深入了解 Nebula Graph,更好地使用 Nebula Graph,同样的,这也将有利于你和 Nebula Graph 社区一块共建更好的 Nebula Graph。
内容概述
源码解读系列主要从 Nebula Graph 系统架构和核心模块展开,此外针对社区用户关心的架构限制带来的性能问题将在最后一个章节分析此类问题。
源码解读系列虽名为源码解读,但并非只是对代码实现的分析和函数讲解,更侧重于从设计角度带你掌握 Nebula Graph 实现原理,透过实现的代码来了解背后的设计思路。(由于 Nebula Graph 目前仍处于快速迭代阶段,持续有新功能进入主分支,故部分不断迭代的核心模块的讲解不会过多地深入代码细节)。
目前源码解读系列章节规划如下:
- Nebula Graph Overview:带你了解 Nebula Graph 架构和代码仓分布、代码结构和模块规划;
- 核心模块讲解:讲述语义分析、优化、调度等系统模块,Java、Python 等各类客户端的运行原理;
- 组件通信:讲述 Nebula Graph 中通信机制;
- 2.0 新特性讲解:从 Variable Length Pattern Match 和索引选择两个点切入讲述 Match 实现的原理;
- 架构限制和解决方案:针对社区的慢查询中止、超大点处理的问题讲述对应的解决方案;
希望大家读完本系列内容之后,对 Nebula Graph 有一定的了解,明白 Nebula Graph 新功能的实现原理,遇到问题时能从实现角度更快定位问题解决问题。以及,在 Nebula Graph 仓库贡献代码时能更好地写出符合 Nebula Graph 设计思路的代码。
Nebula Graph 完全指南
源码解析系列旨在带你了解 Nebula Graph 代码背后的实现原理,而 Nebula Graph 完全指南(链接:https://docs.nebula-graph.com.cn/site/pdf/NebulaGraph-book.pdf)则是使用大全,从图数据库是什么开始讲起,介绍 nGQL 具体的使用以及对应的参数含义,全方位解决 Nebula Graph 使用问题。
背景知识
本系列内容围绕 Nebula Graph 这一分布式图数据库展开,但是仍然需要读者具备下列技术背景:
- 数据库基本原理
- Nebula Graph 架构
- C++ 语言:Nebula Graph 由 C++ 编程语言实现,读者需要有一定的 C++ 编程基础,这将有利于快速了解代码。
写在文末
这是第一次我们写系列讲解内容,当中若存在不妥和改进点,希望读者能在论坛、微信群等渠道反馈给我们,好让我们更好地产出内容。
想和 Nebula 官方研发团队、社区用户来个面对面的技术交流吗?【nMeetup 认识图数据库】线下活动报名进行中,在 09.04 和我们一起在杭州交流图数据库技术吧~ 【09.04 杭州场报名】、【09.11 深圳场报名】