圖數據庫 Nebula Graph 是什麼

圖數據庫(英語: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
  • 導入工具程序員

    • Nebula Importer,提供高性能的 CSV 文件導入工具,支持導入本地和遠程文件。見 Nebula-Importer
    • Spark Writer 基於 Spark 的分佈式數據導入工具。見 Spark Writer
  • 導出工具github

    • Dump Tool,單機離線數據導出工具,能夠用於導出或統計指定條件的數據。
  • 第三方支持web

    • 對接 Prometheus 系統以及 Grafana 可視化組件,支持 Ansible 和 Kubernetes 部署,可實時監控集羣的狀態。

Nebula Graph 一個開源的分佈式圖數據庫,若是你在使用過程當中遇到問題,你能夠在論壇:https://discuss.nebula-graph.com.cn/ 和 GitHub:https://github.com/vesoft-inc/nebula 獲得幫助 :)算法

相關文章
相關標籤/搜索