本文首发于 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. 【Go WEB进阶实战】开源的电商前后台API系统

    前言 最近有很多小伙伴私信我:在学完Go基础后,想使用一个框架实战一个商业项目,但是又苦于不知道选择什么框架,更不知道做什么商业项目. 为了解决大家这些问题,我结合自己的项目经历,为大家开源了一个简单 ...

  2. 【JS 逆向百例】无限debugger绕过,某政民互动数据逆向

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 逆向目标 目标:某政务服务 ...

  3. CouchDB vs. LevelDB

    CouchDB 和 LevelDB 都是数据库系统,但它们在很多方面有着不同的设计和应用重点.下面是对这两个数据库在一些关键点上的对比: 数据模型: CouchDB:CouchDB 是一种面向文档的数 ...

  4. 使用Git 命令行拉取、提交、推送、合并 代码

    1.拉取 1.1.拉取该分支的最新代码(远程分支是与当前分支相同) git pull origin updateCode 1.2.拉取最新代码(远程分支是与当前分支不相同,但要合并) git pull ...

  5. 推荐系统[三]:粗排算法常用模型汇总(集合选择和精准预估),技术发展历史(向量內积,Wide&Deep等模型)以及前沿技术

    1.前言:召回排序流程策略算法简介 推荐可分为以下四个流程,分别是召回.粗排.精排以及重排: 召回是源头,在某种意义上决定着整个推荐的天花板: 粗排是初筛,一般不会上复杂模型: 精排是整个推荐环节的重 ...

  6. 6.6 Windows驱动开发:内核枚举Minifilter微过滤驱动

    Minifilter 是一种文件过滤驱动,该驱动简称为微过滤驱动,相对于传统的sfilter文件过滤驱动来说,微过滤驱动编写时更简单,其不需要考虑底层RIP如何派发且无需要考虑兼容性问题,微过滤驱动使 ...

  7. C/C++ 命名空间引用知识

    标准命名空间 命名空间的使用 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; // 命名空 ...

  8. Win32汇编:字符串浮点数运算过程

    整理复习汇编语言的知识点,以前在学习<Intel汇编语言程序设计 - 第五版>时没有很认真的整理笔记,主要因为当时是以学习理解为目的没有整理的很详细,这次是我第三次阅读此书,每一次阅读都会 ...

  9. Spring自带的这11个工具类,真香!

    前言 最近有些小伙伴,希望我分享一些好用的工具类,帮他们提升开发效率. 今天这篇文章专门跟大家一起总结一下,Spring框架本身自带的一些好用的工具类,希望对你会有所帮助. 1 Assert 很多时候 ...

  10. 【奶奶看了也不会】AI绘画 Mac安装stable-diffusion-webui绘制AI妹子保姆级教程

    1.作品图 2.准备工作 目前网上能搜到的stable-diffusion-webui的安装教程都是Window和Mac M1芯片的,而对于因特尔芯片的文章少之又少,这就导致我们还在用老Intel 芯 ...