NebulaGraph Source Code Explained | Vol.00 Preface

NebulaGraph Source Code Explained | Vol.00 Preface

NebulaGraph is an open-source, distributed graph database solution developed by Vesoft Inc.. The solution mainly aims to solve the new challenges in analyzing and mining connected data caused by the generation of massive data. Since it was open sourced in May 2019, NebulaGraph has gained much traction. Many companies, technical teams, and developers have adopted NebulaGraph in their businesses such as knowledge graph, risk control, data governance, anti-fraud, and real-time recommendations. In the NebulaGraph community, our users have been actively sharing their use cases of NebulaGraph and all of them help others understand the database better.

Meanwhile, there is a growing voice in the community for how NebulaGraph is designed and implemented. Therefore, we have prepared a series of articles exlplaining the source code of NebulaGraph, hoping that by explaining the design and implementation of NebulaGraph in these articles you can understand and use NebulaGraph better. Besides, we hope that these articles will enable you to make NebulaGraph a better product together with our community.


This series is mainly about the architecture and the kernel of NebulaGraph. Additionally, the community members are concerned about the performance problems caused by the architecture limitations, and we will discuss them in the last article of this series. It should be noted that this series aim to explain the source code, but it is not only about explaining how the functions and features are implemented. It more focuses on guiding you to master NebulaGraph from a designer's perspective by understanding the ideas behind it via explaining the source code.

NOTE: NebulaGraph is still under continuous development and more features are being continuously merged to the master branch. Therefore, this series will not go into too many details of how these ongoing modules are implemented.

Here is the agenda of this series:

  • NebulaGraph overview: Introduces the architecture of NebulaGraph, its source code repositories, the hierarchy of its code, and its development planning of the modules.
  • Understanding the Kernel: Introduces parsing, optimization, scheduling, and other modules, as well as the implementations of the clients in Java, Python, and other languages.
  • Communications between components: Introduces how NebulaGraph communicates internally.
  • New features of NebulaGraph 2.0: Introduces how MATCH is implemented by introducing the implementation of two features of variable-length pattern matching and indexing.
  • Architecture limitations and solutions: Introduces the solutions to the problems that are of general concern in the community, such as aborting slow queries and processing super vertices.

We hope this series of articles could help you understand NebulaGraph better, knowing how the new features are implemented, so that you can solve problems from an implementation perspective. Besides, we hope it will enable you to submit PRs more in line with the NebulaGraph design ideas to the NebulaGraph repositories.

A Complete Guide to NebulaGraph

This series focuses on how NebulaGraph is implemented, but A Complete Guide to NebulaGraph is a complete manual of NebulaGraph. This guide starts with an introduction to graph database and then how to use nGQL and related parameters. It is a complete solution to using NebulaGraph.

Technical Knowledge Requirements

This series try to introduce NebulaGraph for most people, but they would be more appropriate if you have the following technical knowledge:

  • Database basics
  • NebulaGraph architecture
  • C++ language: NebulaGraph is implemented in C++ language. If you have learned C++, you can understand its source code more quickly

Before the End

This is our first try of writing a series of articles to introduce the implementations of NebulaGraph. If you find a mistake or have a suggestion, please feel free to send your feedback to us on the social media platforms such as our forum and the Slack channel. All your feedback will help us improve the subsequent articles.

Join our Slack channel if you want to discuss with the rest of the NebulaGraph community!