图数据库对于需要大规模遍历复杂关系的应用至关重要。由 vesoft-inc 开发的 NebulaGraph 是一个从头开始设计的分布式图数据库,用于处理万亿级边缘数据集,具有毫秒级查询延迟。
与将分布式附加到单节点设计上的图数据库不同,NebulaGraph 采用无共享架构构建,其中每个组件都是水平可扩展的。存储、计算和元数据被解耦,允许独立扩展。结果是一个可以从笔记本成长到 100+ 节点集群而无需架构更改的图数据库。
架构组件
| 组件 | 功能 | 可扩展性 |
|---|---|---|
| Meta 服务 | 集群元数据、架构管理 | Raft 共识 |
| Storage 服务 | 搭配自动分片的数据持久化 | 线性水平 |
| Graph 服务 | 查询计算和执行 | 线性水平 |
| Monitor 服务 | 集群健康与性能 | 集中式 |
查询处理流程
flowchart LR
A[客户端查询<br/>nGQL] --> B[Graph 服务]
B --> C[查询解析器]
C --> D[查询规划器]
D --> E[查询优化器]
E --> F[执行计划]
F --> G[Storage 服务 1]
F --> H[Storage 服务 2]
F --> I[Storage 服务 N]
G --> J[结果聚合]
H --> J
I --> J
J --> K[最终结果]查询通过 Graph 服务进入,在那里被解析、规划和优化。执行计划分散到 Storage 服务节点,每个节点返回部分结果,然后聚合为最终结果。
性能特性
| 指标 | NebulaGraph | Neo4j | JanusGraph | Amazon Neptune |
|---|---|---|---|---|
| 最大图大小 | 100 万亿 | 1000 亿 | 100 亿 | 1000 亿 |
| 查询延迟(10 亿边) | 2ms | 5ms | 15ms | 8ms |
| 写入吞吐量 | 1M/s | 50K/s | 100K/s | 200K/s |
| 节点扩展性 | 100+ | 有限 | 50+ | 托管 |
关键能力
NebulaGraph 支持 nGQL 查询语言(类似于图形的 SQL)、ACID 事务、全文搜索和图算法。它与 Spark、Flink 和 Kafka 集成用于数据管线,并支持用于图形探索的可视化工具。
如需更多信息,请访问 NebulaGraph GitHub 仓库 和 NebulaGraph 文档。
常见问题
Q:NebulaGraph 使用什么查询语言? A:nGQL,一种类似 SQL 的图查询语言,设计用于易用性和表达力。
Q:NebulaGraph 可以在单台机器上运行吗? A:是的,它支持用于开发和测试的单节点部署。
Q:NebulaGraph 如何处理数据复制? A:存储分区使用 Raft 共识跨节点复制以实现容错。
Q:NebulaGraph 支持图算法吗? A:是的,包括 PageRank、社区检测、最短路径和连通分量。
Q:NebulaGraph 支持哪些存储引擎? A:它使用自己的针对图工作负载优化的 KV 存储,构建在 RocksDB 之上。
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!