圖資料庫對於需要大規模遍歷複雜關係的應用至關重要。由 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助你行銷加分!