【前言】
Arango DB 相對多數的圖資料庫,特殊的便是圖資料庫與傳統的資料庫並存。藉由分出 Document(資料)與 Edge(關係)兩種集合,分開負責不同的檔案型態,又能直接透過 Edge 進行跨集合的資料連接。那這期我們就先從最基礎的資料與關聯開始建立。
【重點整理】
- 社群版的 Web UI 只能上傳與匯出 JSON 格式,若要使用其他格式可自行參考 CLI 工具
【可用資料】
- 本系列所使用之範例資料來自 Kaggle 的 Famous Paintings 之中的 artists.csv 與 works.csv
https://www.kaggle.com/datasets/mexwell/famous-paintings - csv 轉 json 工具
https://csvjson.com/csv2json
【預計內容】
- Document — 資料匯入
- Edge — 同資料集的連接
- Edge — 跨資料集的連接
【主要內容】
1. Document — 資料匯入
在開始之前,我們當然需要先建立 Collection,這邊選擇 Document 形式,取好名後便可建立。那通常我們會推薦在尾部加上 vertices 或 nodes 標註用途。

成功進入後,點擊進入設定介面,我們進入 Content 仍是一片空白,這時我們就將事先準備的資料進行匯入。但要注意的是,資料庫本身不會檢查資料是否重複,因此後續要新加入的資料要隔離開來。

那如果想要手動新增任何資料,也可透過表格右上的按鈕透過輸入 JSON 格式進行添加。那可以看到,實際上是有辦法能指定資料的 key 值,我們未來再進行解說。

那實際上資料欄位是可以增多或缺漏的,之後在提取時系統會自動認為 Null 空值,所以不用太擔心無法伸縮。(下圖刪除了 nationality 欄位)

那再來,就麻煩各位再建立一個 work_vertices,匯入 work 資料集吧。

2. Edge — 同資料集的連接
那接著我們就要進入同資料集的關聯性,那我們就以畫家間的關聯來做介紹。那我們這次建立名為 artist_edges 的 Edge 型態的集合。

那在這之中,我利用塞選條件找到作為師徒關係的 Eugène Boudin 與 Claude Monet,那 from 跟 to 其實只會影響資料提取時的方向,因此請在 Collection 統一格式。那 body 可以做為資料的延伸,如這邊我就標記師徒關係。(在圖資料庫的階層式分布中,from 會向下延伸到 to 節點)

那為了之後的圖像化呈現,我再加上兩位 Claude Monet 的朋友 Paul Cézanne 與 Pierre-Auguste Renoir 兩個關聯。

那其實這樣後,我們就完成集合內部的關聯囉。那其實也可以透過 _from 與 _to,先製作一份 JSON 直接匯入。但這個步驟,由於涉及到各式各樣的關聯,還是非常的消耗人力。
3. Edge — 跨資料集的連接
那再來我們建立新的 Edge Collection 叫 work_edges,我們接著要將多個作品連結到作者。那操作過上述流程,一樣使用 _id 來指定資料即可,只是這次會是不同資料及的內容。那在這邊我先塞選出登記在資料中的 Claude Monet 的作品。

那我就使用前三筆,from 作者 to 作品來示範跨資料的連結了

【後話】
那建立完這些連結,一條一條的去看十分的難受。所以我們下一步,就要透過 Graph 功能,將上方兩個 Edge 進行圖像化,方便我們用眼看出關係。那麼,我們下期再會啦。
【參考資料】
[1] Arango DB Tutorial
https://youtu.be/4C4zqhXwCKs?si=vHTrqR9tFbflJLyW