天天看點

圖資料庫 Nebula Graph 是什麼

圖資料庫 Nebula Graph 是什麼

圖資料庫(英語:Graph Database)是一個使用圖結構進行語義查詢的資料庫。該系統的關鍵概念是圖,形式上是點 (Node 或者 Vertex) 和邊 (Edge 或者 Relationship) 的集合。一個頂點代表一個實體,比如,某個人,邊則表示兩個實體間的關聯關系,比如 “你關注 Nebula Graph”的關注關系。圖廣泛存在于現實世界中,從社交網絡到風控場景、從知識圖譜到智能推薦。

Nebula Graph 是什麼

Nebula Graph 是一款開源的分布式圖資料庫,擅長處理千億個頂點和萬億條邊的超大規模資料集。提供高吞吐量、低延時的讀寫能力,内置 ACL 機制和使用者鑒權,為使用者提供安全的資料庫通路方式。

作為一款高性能高可靠的圖資料庫,Nebula Graph 提供了線性擴容的能力,支援快照方式實作資料恢複功能。在查詢語言方面,開發團隊完全自研開發查詢語言——nGQL,并且後續會相容 OpenCypher 接口,讓 Neo4j 的使用者可無縫銜接使用 Nebula Graph。

Nebula Graph 特性

  • 開源:Nebula Graph 代碼開源,采用 Apache 2.0 License,使用者可以從 GitHub 下載下傳源碼自己編譯,部署。歡迎送出 pr,成為 Contributor。
  • 可擴充性:存儲計算相分離的架構,當存儲空間或計算資源不足時,支援對兩者獨立進行擴容,避免了傳統架構需要同時擴容導緻的經濟效率低問題。雲計算場景下,能實作真正的彈性計算。提供線性擴充的能力。
  • 高可用:全對稱分布式叢集,無單點故障。并且支援多種類型快照方式實作資料恢複,保證在局部失敗的情況下服務的高可用性。
  • HTAP: 支援 OLTP 實時查詢的同時提供了 OLAP 的接口,真正在同一份資料上提供實時線上更新的前提下,也提供複雜分析和挖掘的能力。
  • 安全性:内置授權登入與 ACL 機制,提供使用者安全的資料庫通路方式,也可接入 LDAP 認證。
  • 類 SQL 查詢語言 nGQL:類 SQL 的風格減少了程式員遷移的成本,同時具有表達能力強的優點。

Nebula Graph 架構

圖資料庫 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
  • 導出工具
    • Dump Tool,單機離線資料導出工具,可以用于導出或統計指定條件的資料。
  • 第三方支援
    • 對接 Prometheus 系統以及 Grafana 可視化元件,支援 Ansible 和 Kubernetes 部署,可實時監控叢集的狀态。

Nebula Graph 一個開源的分布式圖資料庫,如果你在使用過程中遇到問題,你可以在論壇:

https://discuss.nebula-graph.com.cn/

 和 GitHub:

https://github.com/vesoft-inc/nebula

 得到幫助 :)