NebulaGraph

文章目錄

      • 關于 NebulaGraph
      • 客戶端支持
      • 安裝 NebulaGraph
      • 關于 nGQL
        • nGQL 可以做什么
        • 2500 條 nGQL 示例
        • 原生 nGQL 和 openCypher 的關系
      • Backup&Restore
          • 功能
      • 導入導出
          • 導入工具
          • 導出工具
      • NebulaGraph Importer
      • NebulaGraph Exchange
      • NebulaGraph Spark Connector
      • NebulaGraph Flink Connectors
      • NebulaGraph Studio
      • NebulaGraph Dashboard
          • 產品功能
        • NebulaGraph Operator
          • 工作原理
          • 功能介紹
      • NebulaGraph Algorithm 圖計算
      • NebulaGraph Bench


關于 NebulaGraph

  • 官網:https://www.nebula-graph.com.cn

  • 官方文檔:https://docs.nebula-graph.com.cn/3.8.0/

    手冊PDF : https://docs.nebula-graph.com.cn/3.8.0/pdf/NebulaGraph-CN.pdf


客戶端支持

NebulaGraph 提供多種類型客戶端,便于用戶連接、管理 NebulaGraph 圖數據庫。

  • NebulaGraph Console:原生 CLI 客戶端
  • NebulaGraph CPP:C++ 客戶端
  • NebulaGraph Java:Java 客戶端
  • NebulaGraph Python:Python 客戶端
  • NebulaGraph Go:Go 客戶端

安裝 NebulaGraph

有以下安裝方式:

  • 基于 Docker
  • 從云開始(免費試用)
  • 本地部署步驟 1:安裝 NebulaGraph

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


關于 nGQL

nGQL是 NebulaGraph 使用的的聲明式圖查詢語言,支持靈活高效的圖模式,而且 nGQL 是為開發和運維人員設計的類 SQL 查詢語言,易于學習。

nGQL 是一個進行中的項目,會持續發布新特性和優化,因此可能會出現語法和實際操作不一致的問題,如果遇到此類問題,請提交 issue 通知 NebulaGraph 團隊。 NebulaGraph 3.0 及更新版本正在支持 openCypher 9。


nGQL 可以做什么
  • 支持圖遍歷
  • 支持模式匹配
  • 支持聚合
  • 支持修改圖
  • 支持訪問控制
  • 支持聚合查詢
  • 支持索引
  • 支持大部分 openCypher 9 圖查詢語法(不支持修改和控制語法)

2500 條 nGQL 示例

https://github.com/vesoft-inc/nebula/tree/master/tests/tck/features

features 目錄內包含很多.features格式的文件,每個文件都記錄了使用 nGQL 的場景和示例。例如:


原生 nGQL 和 openCypher 的關系

原生 nGQL 是由 NebulaGraph 自行創造和實現的圖查詢語言。openCypher 是由 openCypher Implementers Group 組織所開源和維護的圖查詢語言,最新版本為 openCypher 9。

由于 nGQL 語言部分兼容了 openCypher,這個部分在本文中稱為 openCypher 兼容語句。


Backup&Restore

Backup&Restore(簡稱 BR)是一款命令行界面(CLI)工具,可以幫助備份 NebulaGraph 的圖空間數據,或者通過備份文件恢復數據。


功能
  • 一鍵操作備份和恢復數據。
  • 支持基于以下備份文件恢復數據:
    • 本地磁盤(SSD 或 HDD),建議僅在測試環境使用。
    • 兼容亞馬遜對象存儲(Amazon S3)云存儲服務接口,例如:阿里云對象存儲(Alibaba Cloud OSS)、MinIO、Ceph RGW 等。
  • 支持備份并恢復整個 NebulaGraph 集群。
  • (實驗性功能)支持備份指定圖空間數據。

導入導出


導入工具

有多種方式可以將數據寫入NebulaGraph 3.8.0:

  • 使用命令行 -f 的方式導入:可以導入少量準備好的 nGQL 文件,適合少量手工測試數據準備。
  • 使用 Studio 導入:可以用過瀏覽器導入本機多個 CSV 文件,格式有限制。
  • 使用 Importer 導入:導入單機多個 CSV 文件,大小沒有限制,格式靈活。適合十億條數據以內的場景。
  • 使用 Exchange 導入:從 Neo4j、Hive、MySQL 等多種源分布式導入,需要有 Spark 集群。適合十億條數據以上的場景。
  • 使用 Spark-connector/Flink-connector 讀寫 API:這種方式需要編寫少量代碼來使用 Spark/Flink 連接器提供的 API。
  • 使用 C++/GO/Java/Python SDK:編寫程序的方式導入,需要有一定編程和調優能力。

下圖給出了幾種方式的定位:

image


導出工具
  • 使用 Spark-connector/Flink-connector 讀寫 API:這種方式需要編寫少量代碼來使用 Spark/Flink 連接器提供的 API。
  • 使用 Exchange 導出功能將數據導出至 CSV 文件或另一個圖空間(支持不同 NebulaGraph 集群)中。

NebulaGraph Importer

NebulaGraph Importer(簡稱 Importer)是一款 NebulaGraph 的 CSV 文件單機導入工具,可以讀取并批量導入多種數據源的 CSV 文件數據,還支持批量更新和刪除操作。


功能

  • 支持多種數據源,包括本地、S3、OSS、HDFS、FTP、SFTP、GCS。
  • 支持導入 CSV 格式文件的數據。單個文件內可以包含多種 Tag、多種 Edge type 或者二者混合的數據。
  • 支持過濾數據源數據。
  • 支持批量操作,包括導入、更新、刪除。
  • 支持同時連接多個 Graph 服務進行導入并且動態負載均衡。
  • 支持失敗后重連、重試。
  • 支持多維度顯示統計信息,包括導入時間、導入百分比等。統計信息支持打印在 Console 或日志中。
  • 支持 SSL 加密。

NebulaGraph Exchange

NebulaGraph Exchange(簡稱 Exchange)是一款 Apache Spark? 應用,用于在分布式環境中將集群中的數據批量遷移到 NebulaGraph 中,能支持多種不同格式的批式數據和流式數據的遷移。

Exchange 由 Reader、Processor 和 Writer 三部分組成。Reader 讀取不同來源的數據返回 DataFrame 后,Processor 遍歷 DataFrame 的每一行,根據配置文件中fields的映射關系,按列名獲取對應的值。在遍歷指定批處理的行數后,Writer 會將獲取的數據一次性寫入到 NebulaGraph 中。下圖描述了 Exchange 完成數據轉換和遷移的過程。

NebulaGraph? Exchange 由 Reader、Processor、Writer 組成,可以完成多種不同格式和來源的數據向 NebulaGraph 的遷移

Exchange 有社區版和企業版兩個系列,二者功能不同。社區版在 GitHub 開源開發,企業版屬于 NebulaGraph 企業套餐。


NebulaGraph Spark Connector

詳情:https://github.com/vesoft-inc/nebula-spark-connector/blob/release-3.8/README_CN.md

NebulaGraph Spark Connector 是一個 Spark 連接器,提供通過 Spark 標準形式讀寫 NebulaGraph 數據的能力。NebulaGraph Spark Connector 由 Reader 和 Writer 兩部分組成。

  • Reader
    提供一個 Spark SQL 接口,用戶可以使用該接口編程讀取 NebulaGraph 圖數據,單次讀取一個點或 Edge type 的數據,并將讀取的結果組裝成 Spark 的 DataFrame。
  • Writer
    提供一個 Spark SQL 接口,用戶可以使用該接口編程將 DataFrame 格式的數據逐條或批量寫入 NebulaGraph 。

NebulaGraph Flink Connectors

NebulaGraph Flink Connector 是一款幫助 Flink 用戶快速訪問NebulaGraph的連接器,支持從NebulaGraph圖數據庫中讀取數據,或者將其他外部數據源讀取的數據寫入NebulaGraph圖數據庫。


NebulaGraph Studio

NebulaGraph Studio(簡稱 Studio)是一款可以通過 Web 訪問的開源圖數據庫可視化工具,搭配 NebulaGraph 內核使用,提供構圖、數據導入、編寫 nGQL 查詢等一站式服務。

用戶可以在 NebulaGraph GitHub 倉庫中查看最新源碼,詳情參見 nebula-studio https://github.com/vesoft-inc/nebula-studio。


Studio 可以方便管理 NebulaGraph 數據,具備以下功能:

  • 使用 Schema 管理功能,用戶可以使用圖形界面完成圖空間、Tag(標簽)、Edge Type(邊類型)、索引的創建,查看圖空間的統計數據,快速上手 NebulaGraph 。
  • 使用導入功能,通過簡單的配置,用戶即能批量導入點和邊數據,并能實時查看數據導入日志。
  • 使用控制臺功能,用戶可以使用 nGQL 語句創建 Schema,并對數據執行增刪改查操作。

NebulaGraph Dashboard

NebulaGraph Dashboard(簡稱 Dashboard)是一款用于監控 NebulaGraph 集群中機器和服務狀態的可視化工具。


產品功能
  • 監控集群中所有機器的狀態,包括 CPU、內存、負載、磁盤和流量。
  • 監控集群中所有服務的信息,包括服務 IP 地址、版本和監控指標(例如查詢數量、查詢延遲、心跳延遲等)。
  • 監控集群本身的信息,包括集群的服務信息、分區信息、配置和長時任務。
  • 支持全局調整監控數據的頁面更新頻率。

NebulaGraph Operator

NebulaGraph Operator 是用于在 Kubernetes 系統上自動化部署和運維 NebulaGraph 集群的工具。

依托于 Kubernetes 擴展機制,NebulaGraph 將其運維領域的知識全面注入至 Kubernetes 系統中,讓 NebulaGraph 成為真正的云原生圖數據庫。

operator_map


工作原理

對于 Kubernetes 系統內不存在的資源類型,用戶可以通過添加自定義 API 對象的方式注冊,常見的方法是使用 CustomResourceDefinition(CRD)。

NebulaGraph Operator 將 NebulaGraph 集群的部署管理抽象為 CRD。通過結合多個內置的 API 對象,包括 StatefulSet、Service 和 ConfigMap,NebulaGraph 集群的日常管理和維護被編碼為一個控制循環。在 Kubernetes 系統內,每一種內置資源對象,都運行著一個特定的控制循環,將它的實際狀態通過事先規定好的編排動作,逐步調整為最終的期望狀態。當一個 CR 實例被提交時,NebulaGraph Operator 會根據控制流程驅動數據庫集群進入最終狀態。


功能介紹

NebulaGraph Operator 已具備的功能如下:

  • 集群創建和卸載:NebulaGraph Operator 簡化了用戶部署和卸載集群的過程。用戶只需提供對應的 CR 文件,NebulaGraph Operator 即可快速創建或者刪除一個對應的 NebulaGraph 集群。更多信息參見創建 NebulaGraph 集群。
  • 集群升級:支持升級 3.5.0 版的 NebulaGraph 集群至 3.6.0 版。
  • 故障自愈:NebulaGraph Operator 調用 NebulaGraph 集群提供的接口,動態地感知服務狀態。一旦發現異常,NebulaGraph Operator 自動進行容錯處理。更多信息參考故障自愈。
  • 均衡調度:基于調度器擴展接口,NebulaGraph Operator 提供的調度器可以將應用 Pods 均勻地分布在 NebulaGraph 集群中。

NebulaGraph Algorithm 圖計算

NebulaGraph Algorithm (簡稱 Algorithm)是一款基于 GraphX 的 Spark 應用程序,通過提交 Spark 任務的形式使用完整的算法工具對 NebulaGraph 數據庫中的數據執行圖計算,也可以通過編程形式調用 lib 庫下的算法針對 DataFrame 執行圖計算。


NebulaGraph Bench

NebulaGraph Bench 是一款利用 LDBC 數據集對 NebulaGraph 進行性能測試的工具。


2024-05-21(二)

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15485.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15485.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15485.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python中的可哈希和不可哈希

python 中的每一個對象都有一個哈希值,哈希值是一個固定長度的整數,它通常用于快速比較對象的相等性。 如果在對象的生命周期里該對象的哈希值從未改變,那么這個對象是可哈希的(hashable),也稱為不可變的。…

第一篇【傳奇開心果系列】Python的跨平臺開發工具beeware技術點案例示例:使用beeware實現跨平臺開發,從hello world開始

傳奇開心果博文系列 系列博文目錄Python的跨平臺開發工具beeware技術點案例示例系列 博文目錄前言一、BeeWare套件主要功能介紹二、Toga相對于其他Python UI庫具有的優勢介紹三、使用toga開發安卓手機應用hello world步驟和示例代碼四、使用toga寫一個iOS 蘋果手機應用hello wo…

【文末附gpt升級方案】亞馬遜與Hugging Face合作:定制芯片低成本運行AI模型的創新探索

亞馬遜與Hugging Face合作:定制芯片低成本運行AI模型的創新探索 摘要 本文探討了亞馬遜云部門與人工智能初創公司Hugging Face的合作,旨在通過定制計算芯片Inferentia2在亞馬遜網絡服務(AWS)上更低成本地運行數千個AI模型。文章首…

web前端之vue的生命周期、unmounted、onUnmounted、activated、deactivated、keep-alive

MENU 前言vue2vue3activated和deactivated 前言 在Vue.js中,組件生命周期鉤子函數定義了在組件的不同階段執行的操作。Vue 2.x和Vue 3.x之間的生命周期鉤子函數有一些區別。 vue2 1、beforeCreate: 在實例初始化之后,數據觀測(data observer)和event/wat…

RDD介紹

RDD設計背景 在實際應用中,存在許多迭代式計算,這些應用場景的共同之處是 : 不同計算階段之間會重用中間結果,即一個階段的輸出結果會作為下一個階段的輸入. 而目前的MapReduce框架都是把中間結果寫入到HDFS中,帶來了大量的數據復制、磁盤IO和序列化開銷; 如果能將結果保存在內…

為何程序員35歲就開始被嫌棄了?程序員該如何避免中年危機?

文章目錄 一、為何程序員35歲就開始被嫌棄了?1、技術更新迅速2、職業發展瓶頸3、成本考慮4、年齡歧視5、市場供需變化6、個人因素 二、程序員該如何避免中年危機?1、持續學習與技能更新2、拓展技術廣度與深度3、提升軟技能4、關注行業趨勢與市場變化5、建…

vue3 input輸入框輸入限制(數字)

輸入框限制輸入的內容格式&#xff0c;如&#xff08;金額&#xff0c;數字&#xff09; 金額限制小數點后2位數 <el-input placeholder"請填寫費用" v-model"formMoney.total_money" keyup"formMoney.total_money checkPrice(formMoney.total_…

20240521(代碼整潔和測試入門學習)

測試: 1.測試工程師、測試工具開發工程師、自動化測試工程師。 python&#xff1a; 1、發展背景和優勢&#xff1b; 2、開始多需的工具 interpreter(解釋器) refactor(重構) 2、變量和注釋的基礎語法 3、輸入輸出 i 1 for i in range(1, 11): print(i, end ) 不換行打印…

jupyter notebook 實現聯邦學習模型

聯邦學習(Federated Learning)是一種機器學習框架,它允許多個參與方(例如,移動設備或服務器)在本地數據集上訓練模型,而無需將數據集中到一個位置。這有助于保護數據隱私,并允許在分布式環境中進行模型訓練。 要在Jupyter Notebook中實現聯邦學習模型,你可以遵循以下…

性能大爆炸!為你的Matomo換一個高性能的環境!

隨著我的 Matomo 越來越大&#xff0c;功能需求的增多&#xff0c;插件也變得越來越多&#xff0c;使用傳統的LNMP架構或者LAMP架構都會發現性能正在急劇下級&#xff0c;為此&#xff0c;我們發現了使用FrankenPHP&#xff08;以下簡稱FPHP&#xff09;的方案 首先&#xff0…

Android kotlin協程

說明 可代替線程整異步可控制&#xff0c;靈活 &#xff08;控制優先級&#xff0c;內存占用等&#xff09;速度快 效率高有數量上限 使用 runBlocking 一般用于測試 不建議使用GlobalScope.launch 全局的 生命周期跟隨application 不建議使用CoroutineScope(job) 用 基本使…

櫻花下落的速度是每秒5厘米,我們的心又該以什么速度去接近呢

櫻花下落的速度是每秒五厘米。5年前第一次接觸秒速五厘米的時候&#xff0c;我還在念初中&#xff0c;那時候的我尚且理解不了作品里的太多東西&#xff0c;只是為那輛列車隔開了明里和貴樹感到悲傷&#xff0c;為他們二人那段無疾而終的感情感到遺憾。五年后再一次重溫&#x…

GEE批量導出逐日、逐月、逐季節和逐年的遙感影像(以NDVI為例)

影像導出 1.逐日數據導出2.逐月數據導出3.季節數據導出4.逐年數據導出 最近很多小伙伴們私信我&#xff0c;問我如何高效導出遙感數據&#xff0c;從逐日到逐季度&#xff0c;我都有一套自己的方法&#xff0c;今天就來和大家分享一下&#xff01; ??&#x1f50d;【逐日導出…

Scala 入門介紹和環境搭建

一、簡介 Scala 是一門以 Java 虛擬機&#xff08;JVM&#xff09;為運行環境并將面向對象和函數式編程的最佳特性結合在一起的靜態類型編程語言 (靜態語言需要提前編譯&#xff0c;如&#xff1a;Java、c、c 等&#xff0c;動態語言如&#xff1a;js)Scala 是一門多范式的編程…

【介紹下Pwn,什么是Pwn?】

&#x1f308;個人主頁: 程序員不想敲代碼啊 &#x1f3c6;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f44d;點贊?評論?收藏 &#x1f91d;希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出指正&#xff0c;讓我們共…

CSS3文字與字體

文字與字體 @font-face 用途:定義一種自定義字體,使其可以在網頁中使用。通過@font-face規則,可以指定字體名稱、來源(通常是URL)以及字體的各種變體(如常規、粗體、斜體等)。 @font-face {font-family: MyCustomFont;src: url(mycustomfont.woff2) format(woff2

馮喜運:5.25黃金價格和原油價格加速看跌?未來如何走勢?

【黃金消息面分析】&#xff1a;本周黃金市場經歷劇烈波動&#xff0c;金價創下五個半月來最糟糕的單周表現&#xff0c;盡管周五因美元下跌小幅回升。美聯儲的鷹派立場和美國經濟數據強勁削弱了降息預期&#xff0c;導致金價承壓。然而&#xff0c;分析師對未來金價走勢看法不…

Rolla‘s homework:Image Processing with Python Final Project

對比學習Yolo 和 faster rcnn 兩種目標檢測 要求 Image Processing with Python Final Project Derek TanLoad several useful packages that are used in this notebook:Image Processing with Python Final Project Project Goals: ? Gain an understanding of the object …

leetcode 1049.最后一塊石頭的重量II

思路&#xff1a;01背包 其實這道題我們可以轉化一下&#xff0c;乍一看有點像區間dp&#xff0c;很像區間合并那種類型。 但是&#xff0c;后來發現&#xff0c;這道題的精髓在于你如何轉成背包問題。我們可以把這個石頭分成兩堆&#xff0c;然后求出來這兩堆的最小差值就行…

使用git生成SSH公鑰,并設置SSH公鑰

1、在git命令行里輸入以下命令 ssh-keygen -t rsa 2、按回車&#xff0c;然后會看到以下字眼 Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/xxx/.ssh/id_rsa) 例&#xff1a; 3、繼續回車&#xff0c;然后會看到以下字眼 Enter…