本文首发于 Nebula Graph Community 公众号

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 深圳场报名】

Nebula Graph 源码解读系列 | Vol.00 序言的更多相关文章

  1. swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?

    date: 2018-8-01 14:22:17title: swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?description: 阅读 sowft 框架源码, 了解 sowf ...

  2. 新手阅读 Nebula Graph 源码的姿势

    摘要:在本文中,我们将通过数据流快速学习 Nebula Graph,以用户在客户端输入一条 nGQL 语句 SHOW SPACES 为例,使用 GDB 追踪语句输入时 Nebula Graph 是怎么 ...

  3. Alamofire源码解读系列(二)之错误处理(AFError)

    本篇主要讲解Alamofire中错误的处理机制 前言 在开发中,往往最容易被忽略的内容就是对错误的处理.有经验的开发者,能够对自己写的每行代码负责,而且非常清楚自己写的代码在什么时候会出现异常,这样就 ...

  4. Alamofire源码解读系列(四)之参数编码(ParameterEncoding)

    本篇讲解参数编码的内容 前言 我们在开发中发的每一个请求都是通过URLRequest来进行封装的,可以通过一个URL生成URLRequest.那么如果我有一个参数字典,这个参数字典又是如何从客户端传递 ...

  5. Alamofire源码解读系列(三)之通知处理(Notification)

    本篇讲解swift中通知的用法 前言 通知作为传递事件和数据的载体,在使用中是不受限制的.由于忘记移除某个通知的监听,会造成很多潜在的问题,这些问题在测试中是很难被发现的.但这不是我们这篇文章探讨的主 ...

  6. Alamofire源码解读系列(五)之结果封装(Result)

    本篇讲解Result的封装 前言 有时候,我们会根据现实中的事物来对程序中的某个业务关系进行抽象,这句话很难理解.在Alamofire中,使用Response来描述请求后的结果.我们都知道Alamof ...

  7. Alamofire源码解读系列(六)之Task代理(TaskDelegate)

    本篇介绍Task代理(TaskDelegate.swift) 前言 我相信可能有80%的同学使用AFNetworking或者Alamofire处理网络事件,并且这两个框架都提供了丰富的功能,我也相信很 ...

  8. Alamofire源码解读系列(七)之网络监控(NetworkReachabilityManager)

    Alamofire源码解读系列(七)之网络监控(NetworkReachabilityManager) 本篇主要讲解iOS开发中的网络监控 前言 在开发中,有时候我们需要获取这些信息: 手机是否联网 ...

  9. Alamofire源码解读系列(八)之安全策略(ServerTrustPolicy)

    本篇主要讲解Alamofire中安全验证代码 前言 作为开发人员,理解HTTPS的原理和应用算是一项基本技能.HTTPS目前来说是非常安全的,但仍然有大量的公司还在使用HTTP.其实HTTPS也并不是 ...

  10. Alamofire源码解读系列(九)之响应封装(Response)

    本篇主要带来Alamofire中Response的解读 前言 在每篇文章的前言部分,我都会把我认为的本篇最重要的内容提前讲一下.我更想同大家分享这些顶级框架在设计和编码层次究竟有哪些过人的地方?当然, ...

随机推荐

  1. Linux线程间交互

    前言 上一篇说过,系统会为线程mmap一块内存,每个线程有自己的私有栈,使用局部变量没啥问题.但是实际场景中不可避免的需要线程之间共享数据,这就需要确保每个线程看到的数据是一样的,如果大家都只需要读这 ...

  2. word论文常用格式设定技巧【公式对齐、制表符公式编号等】

    1.公式对齐 改动前: 改动后结果: 2.段落行距要求 对于文字可以设定为1.5倍行距 对于公式 5号字体对应1.5倍行距大概在23.4磅,因此可以根据需求适当调整大小. 3.公式标号---使用制表符 ...

  3. Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏、实物、人物、风景、动漫、邮票、海报等生成,终极模板教学

    Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏.实物.人物.风景.动漫.邮票.海报等生成,终极模板教学 场景6:游戏 Prompt 真的越长越好吗? 按照 Mi ...

  4. C/C++ 病毒破坏手法总结

    针对注册表恶意修改: #include <stdio.h> #include <Windows.h> // 禁用系统任务管理器 void RegTaskmanagerForbi ...

  5. C/C++ 内存遍历与KMP特征搜索

    内存遍历,枚举数据,实现特征码扫描. 内存遍历: 每次读入4096字节,然后每16个字符换一次行,遍历内存 0x00401000 - 0x7FFFFFFF. #include <stdio.h& ...

  6. hydra 密码爆破工具入门

    Hydra(九头蛇海德拉)是希腊神话之中的一个怪兽,以九个头闻名于世,在Kali中hydray(hai der rua) 是默认被安装的,该工具是密码破解的老司机,可以破解各种登录密码,非常怪兽,但是 ...

  7. PHP操作数据分页

    PHP操作数据分页 一.数据库安全 string addslashes ( string $str ) 返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线.这些字符是单引号('). ...

  8. Spring boot 的定时任务。

    @Scheduled(fixedRate=2000):上一次开始执行时间点后2秒再次执行: @Scheduled(fixedDelay=2000):上一次执行完毕时间点后2秒再次执行: @Schedu ...

  9. NC54580 素数分布

    题目链接 题目 题目描述 素数分布函数 \(\pi (n)\) 表示小于或等于n的素数的数目.例如 \(\pi (10)=4\)(2,3,5,7是素数).这个函数涉及到许多高等数论的内容,甚至和黎曼猜 ...

  10. NC20545 [HEOI2012]采花

    题目链接 题目 题目描述 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花. 花园足够大,容纳了 \(n\) 朵花,花有 \(c\) 种颜色(用整 ...