release of the open-source DBMS , designed for efficient storage of large sets of interconnected data that form a graph with billions of nodes and trillions of relationships. The project is written in C++ and is licensed under Apache 2.0. Client libraries for accessing the DBMS have been prepared for Go, Python, and Java. The developing DBMS startup VESoft recently secured its first tranche of investments amounting to $8 million.
In the DBMS a distributed architecture without resource sharing (shared-nothing), implying the launch of independent and self-sufficient processes for handling requests (graphd) and storage processes (storaged). Data movement orchestration and providing meta-information about the graph are managed by the meta-service. To ensure data consistency, a protocol based on the .
Key features of Nebula Graph:
- is used to ensure by providing access only to authenticated users, whose permissions are defined through a role-based access control (RBAC) system.
- support for connecting different types of storage engines. Support for extending the query language with new algorithms.
- Ensuring minimal latency when reading or writing data and maintaining high throughput. In a cluster consisting of one graphd node and three storaged nodes, with a database size of 632 GB, including a graph with 1.2 billion vertices and 8.4 billion edges, latencies were at the level of several milliseconds, while throughput reached up to 140 thousand queries per second.
- Linear scalability.
- SQL-like query language, powerful enough yet easy to comprehend. It supports operations such as GO (bidirectional traversal of graph nodes), GROUP BY, ORDER BY, LIMIT, UNION, UNION DISTINCT, INTERSECT, MINUS, and PIPE (using the result from the previous query). Indexes and user-defined variables are supported.
- Ensuring high availability and fault tolerance.
- Support for creating snapshots of the database state to facilitate backup creation.
- Ready for industrial application (already used in the infrastructure of companies JD, Meituan, and Xiaohongshu).
- The ability to change the storage schema and update data without stopping or affecting ongoing operations.
- TTL support for data lifespan management.
- Commands for managing settings and storage hosts.
- Tools for job management and scheduling (currently, only COMPACT and FLUSH jobs are supported).
- Operations for searching the full path and shortest path between specified vertices.
- OLAP interface for integration with third-party analytics platforms.
- Utilities for importing data from CSV files or from Spark.
- Metrics export for monitoring via Prometheus and Grafana.
- Web Interface
for visualizing graph operations, navigating through the graph, designing storage schemas, and loading data.
Source: opennet.ru
