How vesoft-inc/nebula works
NebulaGraph is a distributed graph database. A client submits a graph query to the Graph service; the query engine creates a per-request query context and execution instance, which plans and runs query or mutation work, requesting partitioned data operations through the storage client. Storage servers serve those operations using the KV layer, while metadata services supply schema and index information. The graph includes documented capabilities such as administration, graph algorithms, and role-based access control. Source excerpts were limited, so some subsystem links are intentionally omitted rather than inferred.
Main entry points: QueryEngine.cpp Query Engine · MetaClient.cpp Metadata Client · service Query Instance · executor Query Executors
Components 21
Graph Query
- Graph Daemon
src/daemons/GraphDaemon.cpp - Query Engine
src/graph/service/QueryEngine.cpp - Query Instance
src/graph/service - Query Planner
src/graph/planner - Optimizer
src/graph/optimizer/Optimizer.cpp - Query Executors
src/graph/executor - Admin Executors
src/graph/executor/admin - Graph Algorithms
src/graph/executor/algo
Metadata
- Metadata Client
src/clients/meta/MetaClient.cpp - Metadata Service
- Schema Manager
src/common/meta/ServerBasedSchemaManager.cpp - Index Manager
src/common/meta/ServerBasedIndexManager.cpp
Storage
- Storage Client
src/clients/storage/StorageClient.cpp - Storage Service
src/storage/StorageServer.cpp - Storage Execution
src/storage/exec - KV Store
src/kvstore/RocksEngine.cpp
Query Data
- Query Context
src/graph/context/QueryContext.cpp - Expressions
src/common/expression/Expression.cpp - Row Codec
src/codec
Other components
- Query Client
- Full-text Service
Connections 23
- Query Client → Graph Daemon: submits query
- Graph Daemon → Query Engine: dispatches
- Query Engine → Metadata Client: uses
- Query Engine → Schema Manager: creates
- Query Engine → Index Manager: creates
- Query Engine → Storage Client: creates
- Query Engine → Optimizer: creates
- Query Engine → Query Instance: executes
- Query Instance → Query Planner: plans
- Query Instance → Query Executors: runs
- Query Instance → Query Context: creates
- Query Executors → Expressions: evaluates
- Query Executors → Storage Client: requests data
- Admin Executors → Metadata Client: administers
- Graph Algorithms → Storage Client: requests data
- Metadata Client → Metadata Service: RPC
- Schema Manager → Metadata Client: reads schema
- Index Manager → Metadata Client: reads indexes
- Storage Client → Storage Service: partitioned RPC
- Storage Service → Storage Execution: dispatches
- Storage Execution → KV Store: reads and writes
- Storage Execution → Row Codec: decodes rows
- Query Executors → Full-text Service: full-text lookup