iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
自我挑戰組

圖形資料庫是什麼,可以吃嗎 - Neo4j系列 第 8

Neo4j 結構基礎概念,終於進到比較技術的部份了

前情提要

這篇可能會很短

阿不對 接下來幾篇可能都會很短 (゚∀゚)

上一篇在介紹介面內容的時候,有提到了一堆奇怪的名詞

今天這篇將會好好的來介紹一下他們

沒有屁話可以講,直接開始吧 ~

Neo4j 結構基礎

還記得 第二篇提到的圖形資料庫的核心嗎

  • 節點 Node
  • 關係 Relationship

那麼他都叫資料庫了,總要有一些可以儲存資料的部分吧

當然有! 這時候就要提到另外兩個一樣重要的元素了

  • 標籤 Lable & Type for
    • Lable for Node
    • Type for Relationship
  • 屬性 Property

押觀念時間

整個 Neo4j 的基礎,由 NodeRelationship 構成
NodeRelationship 都各自包含 LableProperty
實際的情況略有不同

Node & Relationship

先來簡單演藝一下 Node 跟 Relationship 的一些組合吧

圖像 說明
這是兩個可愛的節點
他們兩個之間突然有了關係
然而 Node2 其實比較喜歡 Node3
而 Node3 其實對 3P 比較有興趣
這時 Node3 跟 Node2 突然發現原來 Node1 可以自攻自受
於是 Node1 決定攻略自己 ... ( 完結 )

感謝 Node1 Node2 Node3 的演出

大家看完這三個 Node 之間的愛情故事之後

有沒有更加了解 Node 跟 Relationship 之間的可能性了呢

Node 之間的 Relationship 數量是可以一直增加的

但是一條 Relationship 只會有頭尾兩個 Node

好險 Node1 自攻自受了呢

Lable & Type & Property

首先先切換到上一篇提過的 "Json 顯示模式"

// Node
{
  "identity" : 0,
  "labels" : [  //Lable
    "Person"
  ],
  "properties" : {  //Property
    "Name" : "Node 1"
  }
}

// Relationship
{
  "relationship" : {
    "identity" : 0,
    "start" : 0,
    "end" : 1,
    "type" : "Connect",  //Type
    "properties" : {}  //Property
  }
}
  • Lable
  • Type
  • Property

我們分開解釋吧

Lable

"labels" : [
  "Person"
]

首先 Lable,或是好理解一點,你可以叫他 Tag

看一下 Json 結構,你可以發現他就是一個 String 的陣列

換句話說你是可以加非常多的 Label 在一個 Node 上的

Type

{
  "relationship" : {
    ...
    "type" : "Connect",
    ...
  }
}

Relationship Type 我覺得跟 Node Lable 長得很像

因為在下語法的時候,這兩個的用法基本上是一樣的

這部分之後會說明

不過每一條 Relationship 只能有一個 Type

Property

"properties" : {
    "Name" : "Node 1"
}

// or

"properties" : {
    "Name" : "Node 3",
    "Age" : 17,
    "PlayWith" : [
        "Node 1",
        "Node 2"
    ]
}

Property 跟標準 Json 沒什麼兩樣

連在下語法的時候,格式也可以說是一模一樣

不過巢狀結構是不允許的

允許的資料類型

  • 數值 int or float
  • 字串 string
  • 布林值 bool
  • 日期 DateTime
  • 空間座標 The spatial type Point

相關細節歡迎參考官方文件

插旗時間 |>
寫了這篇才知道原來 Neo4j 可以存 WGS 84

所以我們倒數幾篇的時候就來聊聊這個主題吧


基礎結構講完了 (゚∀゚)

原本是說可能會比較短

結果還是一樣長呢 (゚∀。)

下一篇要準備進入枯燥乏味的程式時間了

究竟會不會打字打到睡著呢w

明天 Neo4j 獨創 Cypher Query Language

期待明日的降臨吧 Ciao!


排版好看的版本同步更新在我的 HackMD


上一篇
該來教教 Neo4j 介面怎麼用了吧 ( 下篇 )
下一篇
Neo4j 獨創 Cypher Query Language
系列文
圖形資料庫是什麼,可以吃嗎 - Neo4j30

尚未有邦友留言

立即登入留言