這是一份簡單到沒朋友的上手圖數據庫的圖文教程

前幾天和社區小夥伴友好交流(閒聊),不少加入 NebulaGraph 的小夥伴雖然對圖感興趣,但是因爲業務調整或者是時間緣故,最終沒能用上 NebulaGraph。而他們當中不少的小夥伴說,春節我打算好好學習一番。既然大家有此打算,那 Nebula 一定要來助力一番。

本文是一份極度友好,你即便只會一個開機操作不懂任何數據庫,你也能獲得像是下圖這樣的直觀關係圖譜。

<small>* 注:本文雖然看過篇幅很長,大多數是爲了方便新手對照加入了大量的圖片供參考,別擔心用上圖數據庫的過程很複雜:它真的很簡單,幾分鐘就搞定了~</small>

寫在前面

寫給新手

本文作者是一個 SQL 都不會寫的小運營,她根據文檔完成了 NebulaGraph 的部署和可視化工具 NebulaGraph Studio、NebulaGraph Explorer 的部署,以及完成了簡單的圖探索。優秀如你,一定可以完成本次的 NebulaGraph 圖庫打卡活動~

本文所用操作系統爲 macOS,採用 Docker 和雲服務兩種方式來部署 NebulaGraph。如果你採用 Docker 部署方式,而操作系統爲 Windows,記得自行搜索“Windows 如何安裝使用 Docker Desktop”。

寫給老手

如果你已經完成了部署,會用 NebulaGraph Studio 之類的圖探索工具。那麼,你可以試試由思爲提供的進階實踐教程(難度依次增加):

NebulaGraph 和可視化工具部署

爲了降低難度(其實是沒有 Linux 機器),本次部署採用了 Docker 方式,按照文檔:https://docs.nebula-graph.com.cn/3.6.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose/,一步步執行。

你可以按照文檔一步步操作,也可以只看本文完成 Docker 的部署安裝。

Docker Compose 安裝

首先,安裝 Docker Compose。這裏我們直接安裝 Docker Desktop(Docker 桌面版),它提供了 Docker Compose。點擊此處:https://www.docker.com/products/docker-desktop/,自行完成安裝。

安裝完成之後,點擊你的 Docker 圖標,運行 Docker。

當你看到上圖,狀態欄有 Docker 的圖標,說明你的 Docker 環境已 ready。我們可以來驗證下:打開你的 terminal,輸入命令:docker-compose version,有像下圖一樣的返回結果,說明你的 Docker 可以開始工作了。

NebulaGraph 部署

現在有 Docker Compose 了,我們來安裝下圖數據庫。

還是那個執行了 Docker 版本查詢的 terminal,輸入命令:

git clone -b release-3.6 https://github.com/vesoft-inc/nebula-docker-compose.git

讓命令運行一段時間,看到下圖:

好的,到此爲止。你已經有了優秀的圖數據庫 NebulaGraph,完成了它的部署。

NebulaGraph 服務啓動

下面,我們來啓動 NebulaGraph。非常簡單的兩條命令,還是在 terminal 裏執行:

# 切到 nebula-docker-compose 目錄
cd nebula-docker-compose

# 拉起服務
docker-compose up -d

看到上圖,說明你的 NebulaGraph 的服務已經啓動。

NebulaGraph 服務連接

現在 NebulaGraph 已經啓動了,一般來說現在就是連接它,執行什麼 SQL boy 的日常 CRUD 操作——往數據庫里加點數據、做些查詢。

先前,我們提到了 NebulaGraph Studio 和 NebulaGraph Explorer 你可以理解是一個 Web 客戶端,我們會用瀏覽器來連接 NebulaGraph。作爲一個附加學習,下面是通過 nebula-console 來連接 NebulaGraph。

還是在之前那個執行了 docker-compose up -d 的 terminal,用命令 docker-compose ps 看下目前 Docker 中服務名:

nebula-docker-compose git:(release-3.6) docker-compose ps
NAME                                IMAGE                                     COMMAND                  SERVICE     CREATED          STATUS                             PORTS
nebula-docker-compose-console-1     docker.io/vesoft/nebula-console:v3.5      "sh -c 'for i in `se…"   console     44 seconds ago   Up 40 seconds                      
nebula-docker-compose-graphd-1      docker.io/vesoft/nebula-graphd:v3.6.0     "/usr/local/nebula/b…"   graphd      44 seconds ago   Up 41 seconds (healthy)            0.0.0.0:9669->9669/tcp, 0.0.0.0:55153->19669/tcp, 0.0.0.0:55154->19670/tcp
nebula-docker-compose-graphd1-1     docker.io/vesoft/nebula-graphd:v3.6.0     "/usr/local/nebula/b…"   graphd1     44 seconds ago   Up 41 seconds (healthy)            0.0.0.0:55152->9669/tcp, 0.0.0.0:55150->19669/tcp, 0.0.0.0:55151->19670/tcp
nebula-docker-compose-graphd2-1     docker.io/vesoft/nebula-graphd:v3.6.0     "/usr/local/nebula/b…"   graphd2     44 seconds ago   Up 41 seconds (healthy)            0.0.0.0:55157->9669/tcp, 0.0.0.0:55155->19669/tcp, 0.0.0.0:55156->19670/tcp
nebula-docker-compose-metad0-1      docker.io/vesoft/nebula-metad:v3.6.0      "/usr/local/nebula/b…"   metad0      44 seconds ago   Up 43 seconds (healthy)            9560/tcp, 0.0.0.0:55131->9559/tcp, 0.0.0.0:55132->19559/tcp, 0.0.0.0:55133->19560/tcp
nebula-docker-compose-metad1-1      docker.io/vesoft/nebula-metad:v3.6.0      "/usr/local/nebula/b…"   metad1      44 seconds ago   Up 43 seconds (healthy)            9560/tcp, 0.0.0.0:55130->9559/tcp, 0.0.0.0:55128->19559/tcp, 0.0.0.0:55129->19560/tcp
nebula-docker-compose-metad2-1      docker.io/vesoft/nebula-metad:v3.6.0      "/usr/local/nebula/b…"   metad2      44 seconds ago   Up 43 seconds (healthy)            9560/tcp, 0.0.0.0:55136->9559/tcp, 0.0.0.0:55134->19559/tcp, 0.0.0.0:55135->19560/tcp
nebula-docker-compose-storaged0-1   docker.io/vesoft/nebula-storaged:v3.6.0   "/usr/local/nebula/b…"   storaged0   44 seconds ago   Up 42 seconds (health: starting)   9777-9778/tcp, 9780/tcp, 0.0.0.0:55140->9779/tcp, 0.0.0.0:55141->19779/tcp, 0.0.0.0:55142->19780/tcp
nebula-docker-compose-storaged1-1   docker.io/vesoft/nebula-storaged:v3.6.0   "/usr/local/nebula/b…"   storaged1   44 seconds ago   Up 42 seconds (health: starting)   9777-9778/tcp, 9780/tcp, 0.0.0.0:55144->9779/tcp, 0.0.0.0:55145->19779/tcp, 0.0.0.0:55143->19780/tcp
nebula-docker-compose-storaged2-1   docker.io/vesoft/nebula-storaged:v3.6.0   "/usr/local/nebula/b…"   storaged2   44 seconds ago   Up 42 seconds (health: starting)   9777-9778/tcp, 9780/tcp, 0.0.0.0:55139->9779/tcp, 0.0.0.0:55137->19779/tcp, 0.0.0.0:55138->19780/tcp

這裏要注意 nebula-console 這個鏡像對應的服務名 nebula-docker-compose-console-1,用 nebula-console 連接 NebulaGraph 時需要用到它。

在 terminal 繼續執行命令 docker exec -it nebula-docker-compose-console-1 /bin/sh,此時終端需要你輸入 NebulaGraph 的賬號、密碼信息:

./usr/local/bin/nebula-console -u root -p nebula1234 --address=graphd --port=9669

在本文示例中設定賬號 -u 爲 root,密碼 -p 爲 nebula1234。你可以根據自己的喜好,修改爲你記得住的密碼。而上面語句的地址 --address 和端口 --port 直接用默認的 graphd 和 9669 即可。

等你通過賬號和密碼連接上 nebula-console 之後,你便可以進行相關的數據庫操作,比如:你可以看下相關的服務狀態。

可視化工具 NebulaGraph Studio 部署

還是根據文檔:https://docs.nebula-graph.com.cn/3.6.0/nebula-studio/deploy-connect/st-ug-deploy/#docker_studio 走下。

先下載 nebula-studio 的 tar 包:3.8.0 版本,將下載的包放到你的 nebula-docker-compose 文件所在的目錄下。

terminal 在 nebula-docker-compose 目錄的情況下,執行下面的命令、打開對應的 tar 包:

mkdir nebula-graph-studio-3.8.0 && tar -zxvf nebula-graph-studio-3.8.0.tar.gz -C nebula-graph-studio-3.8.0

將 terminla 的目錄切到 nebula-graph-studio-3.8.0 這個目錄下:

cd nebula-graph-studio-3.8.0

如果你查看過 nebula-graph-studio-3.8.0 裏的內容,裏面就一個 .yaml 文件和說明文檔,那如何搞到 nebula-studio 的鏡像呢?下面的命令就是拉取相關的 nebula-studio:

docker-compose pull

現在看下上面命令的執行結果:

現在,我們來啓動下 nebula-studio 服務:在剛纔的 terminla 執行下面的命令

docker-compose up -d

看到下面的 nebula-graph-studio-380-web-1 已經是狀態爲 Started(綠色),

我們可以在瀏覽器終端打開 127.0.0.1:7001 訪問 nebula-stuido:

在 graphd 部分填入你本機真實 IP,賬號和密碼可輸入:root / nebula。至此,恭喜你已經有了玩轉圖數據庫的環境。

10 秒搞定部署安裝

剛我們搞了 Docker 的 NebulaGraph、NebulaGraph Studio 的部署安裝,這裏有一鍵完成之前的捷徑。

前提,你得裝好 Docker Desktop。打開 Docker,看到界面左側的菜單欄有“Extension”:

添加擴展之後,在搜索框裏輸入:Nebula 便能找到對應的 NebulaGraph 擴展:

點擊安裝之後,你便能看到 NebulaGraph Extension 已經安裝在你的 Docker Desktop 裏。點擊【Studio】:

好的 nebula-studio 服務啓動 🎉,再填入相關的信息:graphd /9669,以及賬號和密碼:root / nebula,完成登陸。

綠色通道

下面帶大家走一趟阿里雲計算巢,薅一個付費的企業服務。(注意:填寫完信息之後,需要審覈,審覈結果將會以短信形式發送給你)

先訪問:https://market.aliyun.com/isv-nebulagraph,打開 NebulaGraph 企業版使用界面:

登錄之後,點擊頁面上方的【立即使用】,填寫下相關的信息:

正常情況下,這是需要審覈的:一般是 3 個工作日。不過,這次我們已經打點妥當直接提交信息之後自動審批。等你填完信息之後,前往計算巢服務頁面:https://computenest.console.aliyun.com/service/cn-hangzhou?tabKey=used,在我的服務中找到【我使用的服務】,同下圖:

我們現在開始創建 30 天的免費企業版 NebulaGraph,遇到需要填寫的地方填寫下,已經自動填充默認值的地方直接跳過,畢竟我們是白嫖的企業服務——沒有啥可以選擇的餘地。

下面是需要填寫的信息:

  • 服務實例名稱:隨便取個你喜歡的名字;
  • Storage 數據盤空間:隨便填個大於 32 小於 16384 的值,這裏我填了 500;
  • ECS服務器密碼:填個你記得住的密碼;
  • 交換機可用區:選擇默認的第一個可用區;

再勾選下 2 個協議,之後提交下信息:

現在你有了一個 30 天的企業版 NebulaGraph 服務。我們現在去找到它,它還附帶了一個企業版可視化工具 NebulaGraph Explorer。前往服務實例頁面:https://computenest.console.aliyun.com/service/instance/cn-hangzhou?secondTabKey=poc 在我的【試用服務】服務中找到剛纔創建的實例:

往右拉動滾動條,看到該實例的詳情,點擊【詳情】。可以看到對應的實例信息,包括在線可視化探索工具 nebula-explorer 的在線地址:

點擊 nebula-explorer 的在線地址,就能打開 explorer,填入詳情中 graph 服務私有 IP 對應的 ip,以及詳情提到的圖探索服務登陸信息中的賬號和密碼。

至此,你已經可以正常使用可視化圖探索工具來探索 NebulaGraph 了。

下面,開始我們的主菜:探索圖數據庫。因爲 nebula-studio 有較多相似,又不少不同的地方。下面內容無特殊說明,說明二者通用。

探索圖數據庫

草圖構建 Schema

草圖功能是 nebula-explorer 先有,後來再添加到 nebula-studio 的功能。由奢入儉難,我們從比較樸素的開源的 nebula-studio 爲例。

登陸 nebula-studio 之後,在頁面上左上方導航處選中【Schema 草圖】,nebula-explorer 對應的功能在頁面右側、從左往右數第一個圖標。

下面這個是我們本次實踐的圖模型(社區的 contributor 關係圖):

OK,根據這個圖模型上面的 Schema 信息,我們在草圖中創建下相關的點(圓圈)和邊(一個圓指向另外個圓的連接線)信息:

repocontributororg 等 3 個 tag 類型信息,以及 PR屬於 等 2 個 edgetype 類型提交之後,你可以在頁面到對應的 Schema 信息。下圖以 contributor tag 爲例:

點擊右上角的保存圖標保存之後,應用到圖空間——現在,我們要開始創建圖空間了:

至此,我們的 Schema 信息創建完成。

nebula-studio 的小夥伴可直接點擊左側的菜單的 Schema(nebula-explorer 的小夥伴點擊右側菜單從左往右數第二個圖標)查看圖空間信息,等你看到 nebula-contributor 之後,點擊圖空間名,可查看相關的 Schema 信息:

細心的你此時可以對下相關的屬性個數。

導入圖數據

點擊這裏把本次用的 nebula-contributor-dataset2024 數據集下載到本地,放在一個你能找到的目錄下。

解壓縮之後得到 5 個文件:

  • tag 點類型數據
    • contributor20240110.csv
    • repo20240110.csv
    • org.csv
  • edgetype 邊類型數據
    • pr20240110.csv
    • belong20240110.csv

上面的數據已經經過處理,我們開始導數環節。nebula-studio 和 nebula-explorer 的數據導入流程相似,下面以 nebula-studio 爲例:

點擊左側導航的【導入】菜單(nebula-explorer 爲右側第三個圖標),進入導數頁面之後我們先上傳本地文件(支持批量上傳),將所有文件上傳到 nebula-stuido 中:

點擊同頁面右側的【導入數據】,進行數據和 Schema 關聯。

以 contributor tag 爲例,將對應的 Schema 屬性信息同源數據進行關聯:

  • 標籤:選 contributor
  • 關聯文件:選【本地】再選擇 contributor20240110.csv
  • VID 列:選 Column 0
  • name:選 Column 1
  • number:選 Column 2
  • merged_time:選 Column 3
  • is_vesoft:選 Column 4
  • merge_repo:選 Column 5

聰明的你應該發現了,所有的 Schema 和原數據關聯都是順序的——因爲爲了方便:

而邊的關聯稍顯複雜,這裏做個文字描述:

  • 邊類型:選 PR
  • 關聯文件:選【本地】再選擇 pr20240110.csv
  • 起點 VID 列:選 Column 0
  • 終點 VID 列:選 Column 1
  • number:選 Column 2
  • created_time:選 Column 3
  • closed_time:選 Column 4
  • merged_time:選 Column 5
  • is_merged:選 Column 6
  • add_lines:選 Column 7
  • delete_lines:選 Column 8
  • rank:選 Column 2

參考下圖

同理,將其他的 2 個 tag 和 1 個 edgetype 關聯之後,點擊導入按鈕:

輸入你的 NebulaGraph 服務密碼(nebula)。等待數據導入…

等導入任務完成之後,我們去 Schema 頁面看下數據【統計】點擊下【更新】按鈕:

如果你的數據和我的數據相同,說明你已經成功了,我們開始探索圖數據庫。

探索圖數據

現在,我們開始探索下剛導入進去的數據。探索數據之前,我們先創建幾個索引來檢索數據:

依舊是 Schema 頁面,進入圖空間之後,看到【索引】選項,我們需要創建幾個索引:

  • 標籤索引
    • contributor 它的屬性 is_vesoft 爲索引
    • org 索引,可不選屬性
    • repo 它的屬性 name 爲索引
  • 邊類型索引
    • belong 索引,因爲它本身就沒有屬性,直接創建邊索引即可
    • PR 的 closed_time 屬性索引
    • PR 的 is_merged 屬性索引

等我們創建完所有索引之後,對所有的索引進行【重建索引】。記得所有都得重建完成哦~~

準備工作做完,我們開始探索數據。

如果你是尊貴的企業版用戶(綠色通道用戶),我們直接用 nebula-explorer 的可視化探索(Visual Query),和草圖類似:把 3 個 tag 拖出來,通過邊進行鏈接,在邊上選中邊類型,像下圖這樣:

點擊右上角的【查詢】,你就可以看到相關數據了:

上圖點擊了紅框中的邊聚合,將同類型的邊進行了聚合,看過去非常清爽。

上面的只是簡單查詢了圖模型的對應數據,你可以加一點點篩選條件,比如:“找出非 NebulaGraph 僱員的人的 PR 合併情況”,你可以在 Visual Query 界面加入過篩條件:

執行下看到:

而 nebula-stuido 的用戶不能通過拖拽看到數據,可以前往左上角導航的【控制檯】功能,選擇圖空間爲 nebula-contributor 之後,輸入下面的查詢語句:

MATCH (v0:`contributor`)-[e1:`PR`]->(v2:`repo`)-[e3:`屬於`]->(v1:`org`) RETURN e1,e3 LIMIT 100

得到和 nebula-explorer 類似的結果:

點擊【可視化】,得到下圖類似的可視化結果(因爲查詢時隨機返回 100 條邊,可能你的數據和下圖有出入):

恭喜,你現在已經會圖探索了。

可能你對文中用到的一些術語感到困惑,記得去讀一讀 NebuleGraph 的文檔:https://docs.nebula-graph.com.cn/3.6.0/

完成本文實操的小夥伴,可以聯繫星雲小姐姐領取限量的春節學圖禮包喲~

下面,放幾個基於本數據集的一些探索圖:

PR 還沒被合併的小夥伴分佈(下圖爲 nebula-explorer 的可視化展示,用上了點的換圖標功能):


對圖數據庫 NebulaGraph 感興趣?歡迎前往 GitHub ✨ 查看源碼:https://github.com/vesoft-inc/nebula;

想要一起提高文檔的可讀性麼?一起來給『文檔 nGQL 示例添加註釋』吧~請瞄準那條讓人費解的 nGQL 語句,留下你的講解 (///▽///)

點擊下圖瞭解活動詳情 🥹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章