
圖數據庫(英語:Graph Database)是一個使用圖結構進行語義查詢的數據庫。該系統的關鍵概念是圖,形式上是點 (Node 或者 Vertex) 和邊 (Edge 或者 Relationship) 的集合。一個頂點表明一個實體,好比,某我的,邊則表示兩個實體間的關聯關係,好比 「你關注 Nebula Graph」的關注關係。圖普遍存在於現實世界中,從社交網絡到風控場景、從知識圖譜到智能推薦。java
Nebula Graph 是什麼
Nebula Graph 是一款開源的分佈式圖數據庫,擅長處理千億個頂點和萬億條邊的超大規模數據集。提供高吞吐量、低延時的讀寫能力,內置 ACL 機制和用戶鑑權,爲用戶提供安全的數據庫訪問方式。python
做爲一款高性能高可靠的圖數據庫,Nebula Graph 提供了線性擴容的能力,支持快照方式實現數據恢復功能。在查詢語言方面,開發團隊徹底自研開發查詢語言——nGQL,而且後續會兼容 OpenCypher 接口,讓 Neo4j 的用戶可無縫銜接使用 Nebula Graph。git
Nebula Graph 特性
- 開源:Nebula Graph 代碼開源,採用 Apache 2.0 License,用戶能夠從 GitHub 下載源碼本身編譯,部署。歡迎提交 pr,成爲 Contributor。
- 可擴展性:存儲計算相分離的架構,當存儲空間或計算資源不足時,支持對二者獨立進行擴容,避免了傳統架構須要同時擴容致使的經濟效率低問題。雲計算場景下,能實現真正的彈性計算。提供線性擴展的能力。
- 高可用:全對稱分佈式集羣,無單點故障。而且支持多種類型快照方式實現數據恢復,保證在局部失敗的狀況下服務的高可用性。
- HTAP: 支持 OLTP 實時查詢的同時提供了 OLAP 的接口,真正在同一份數據上提供實時在線更新的前提下,也提供複雜分析和挖掘的能力。
- 安全性:內置受權登陸與 ACL 機制,提供用戶安全的數據庫訪問方式,也可接入 LDAP 認證。
- 類 SQL 查詢語言 nGQL:類 SQL 的風格減小了程序員遷移的成本,同時具備表達能力強的優勢。
Nebula Graph 架構

Nebula Graph 1.0 功能
基礎功能
- 多圖空間:支持多圖空間,不一樣的圖空間的數據物理隔離,而且可設置不一樣的副本數,以應對不一樣的可用性要求。
- 頂點:支持基本增刪改查操做,支持多種頂點類型,也支持同一頂點有多種類型。
- 邊:支持基本增刪改查操做,支持有向圖,支持節點間存在同一種類型或者不一樣類型的多條邊。
- Schema:Tag / EdgeType 支持多種數據類型,支持對屬性設置默認值。一個點能夠設置多個 Tag。
- 聚合操做:聚合函數 GROUP BY、排序函數 ORDER BY、限定函數 LIMIT 自由組合返回所需數據。
- 組合查詢:UNION,UNION DISTINCT,INTERSECT,MINUS 對數據集進行組合查詢。
- 條件查詢/更新:IF...RETURN 和 UPDATE ... WHEN 根據指定條件查詢/更新數據。
- Partition: 支持查看數據分片信息,以及 Partition 對應的 leader 信息。
- 頂點 ID 策略:支持用戶自定義 int64 ID, 內置 hash() 和 uuid() 函數生成頂點 ID。
- 索引:支持索引、聯合索引,對已創建索引的數據,按條件查找快速查找數據。
- 管道查詢: 管道符前面查詢語句的輸出可做爲管道符後面命令的輸入。
- 用戶定義變量:用戶自定義變量可暫時將查詢結果存儲在自定義的變量中,並在隨後查詢語句中使用。
- 多種字符集、字符編碼
高級功能
- 權限管理: 支持用戶權限認證,支持用戶角色訪問控制。可輕鬆對接現有用戶認證系統。 Nebula Graph 提供五種角色權限:GOD、ADMIN、DBA、USER 和 GUEST。
- 稠密點:對於超級頂點支持蓄水池採樣, 在只遍歷一遍數據(O(N))的狀況下,隨機的抽取k個元素。
- 集羣快照:支持以集羣維度建立快照,提供在線的數據備份功能,快速恢復。
- TTL:支持設置數據的有效期,快速清理過時數據釋放資源。
- Job Manager:Job 管理調度工具,目前支持 Compaction / Flush 操做。
- 支持在線擴縮容以及負載均衡
- 圖算法:支持全路徑 / 最短路徑算法。
- 提供 OLAP 接口,對接圖計算平臺。
- 監控接口:支持系統狀態監控、API 訪問時間監控、性能數據監控等操做。
客戶端
- Java 客戶端:可自行編譯或者從 mvn 倉庫進行下載。
- Python 客戶端:可經過源碼安裝或者 pip 進行安裝。
- Go 客戶端:可經過
go get -u -v github.com/vesoft-inc/nebula-go
安裝使用。
周邊工具
- Nebula Graph Studio:基於 Web 的可視化環境,提供圖操做界面、圖數據展現與分析。見 Nebula Graph Studio
-
導入工具程序員
-
導出工具github
- Dump Tool,單機離線數據導出工具,能夠用於導出或統計指定條件的數據。
-
第三方支持web
- 對接 Prometheus 系統以及 Grafana 可視化組件,支持 Ansible 和 Kubernetes 部署,可實時監控集羣的狀態。
Nebula Graph 一個開源的分佈式圖數據庫,若是你在使用過程當中遇到問題,你能夠在論壇:https://discuss.nebula-graph.com.cn/ 和 GitHub:https://github.com/vesoft-inc/nebula 獲得幫助 :)算法