Nebula Graph Source Code Explained ｜ Vol.00 Preface
Nebula Graph 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, Nebula Graph has gained much traction. Many companies, technical teams, and developers have adopted Nebula Graph in their businesses such as knowledge graph, risk control, data governance, anti-fraud, and real-time recommendations. In the Nebula Graph community, our users have been actively sharing their use cases of Nebula Graph and all of them help others understand the database better.
Meanwhile, there is a growing voice in the community for how Nebula Graph is designed and implemented. Therefore, we have prepared a series of articles exlplaining the source code of Nebula Graph, hoping that by explaining the design and implementation of Nebula Graph in these articles you can understand and use Nebula Graph better. Besides, we hope that these articles will enable you to make Nebula Graph a better product together with our community.
This series is mainly about the architecture and the kernel of Nebula Graph. 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 Nebula Graph from a designer’s perspective by understanding the ideas behind it via explaining the source code.
NOTE: Nebula Graph 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:
- Nebula Graph overview: Introduces the architecture of Nebula Graph, 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 Nebula Graph communicates internally.
- New features of Nebula Graph 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 Nebula Graph 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 Nebula Graph design ideas to the Nebula Graph repositories.
A Complete Guide to Nebula Graph
This series focuses on how Nebula Graph is implemented, but A Complete Guide to Nebula Graph is a complete manual of Nebula Graph. 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 Nebula Graph.
Technical Knowledge Requirements
This series try to introduce Nebula Graph for most people, but they would be more appropriate if you have the following technical knowledge:
- Database basics
- Nebula Graph architecture
- C++ language: Nebula Graph 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 Nebula Graph. 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 Nebula Graph community!