iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0
Software Development

NoSQL: Not Only SQL系列 第 29

[Day 29] Graph Database: 以 Neo4j 為例

  • 分享至 

  • xImage
  •  

Neo4j 由 Neo4j Inc. 在 2007 年發表,目前有企業版及社群版兩種版本,主打支援 ACID 交易的開源 Graph Database,且具有高可擴展性。在資料儲存方面不是在其他資料庫上隔一層抽象將對圖的操作進行轉換,而是以真正的圖結構存放,為 Native Graph Database,因此在彈性和效能上相當優秀。

Neo4j 資料包含 Node (節點)、Relationship (關聯)、Property (屬性)和 Label (標籤)。節點為圖中的實體,關聯表是兩個節點間的關係,節點和關聯都可以各自有多個附屬的屬性。在節點或關聯上可以透過標記標籤來識別不同類型,例如這個節點是 Person 或是 Post,兩個節點間的關聯是 Fried 或 Family。

圖片取自 Neo4j 官網

使用 Neo4j 時,可透過 CQL (Cypher Query Language) 進行操作。CQL 的寫法則更符合對圖的操作需求,如下圖表示查詢 Dan 喜歡的人的語法。

圖片取自 Neo4j 官網

以前一篇的計算親等為例,如果要找出我的四等親(表弟),使用關聯式資料庫的話就要 Join 三次,且 Join 的成本會隨著 Join 的次數飆升。

CQL 在語意上比 SQL 使用大量 Join 更直觀,基本上就是描述在圖中,怎麼在節點間透過關聯走詢。
https://ithelp.ithome.com.tw/upload/images/20221001/2015113798ChtkzOwi.png

圖片取自 Neo4j 官網

跟前幾天 Cassandra Query Language 是不同的 CQL,不要弄混。


上一篇
[Day 28] Graph Database: 簡介
下一篇
[Day 30] Graph Database: 以 Neo4j 為例
系列文
NoSQL: Not Only SQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言