neo4j
資料庫是一種圖形資料庫(不知道這麼翻譯準不准,暫且這麼稱呼吧),這種資料庫與傳統的關係型資料庫有很大的差別。為了更好地幫助大家理解我這裡就將關係型資料庫與圖形資料庫作個比較。
關係型資料庫:
我們常用的像
mysql
,oracle
等都是關係型資料庫,在關係型資料庫裡面對資料的處理是這樣子的:對每個物件都建立乙個表,物件的屬性對應表裡面的列
如圖所示。在資料庫裡有條資料表示兩個物件:tim,lili。在現實生活中我們會發現任何物件都是有某種聯絡的,那麼關係型資料庫裡是怎樣來表示這種關係呢?就比如tim和lili是好朋友,那麼在資料庫裡怎樣來表示他們的關係呢?關係型資料庫裡面是 這樣處理的——新建乙個叫relationship的表,表裡面有兩個欄位id,friendid。
2 1
如圖所示。如果我們要查詢tim的朋友那麼我們可以遍歷relationship表就可以了。
這種資料模型會有什麼問題呢?其實我們可以對這個資料模型提個問題——tim的朋友的朋友的朋友的朋友是誰?好,關係型資料會這樣回答你的問題:首先在relationship表裡面找到所有id為1(tim的id)的資料,然後拿到對應的friendid,接著逐個根據friendid再進行遍歷找到對應的friendid,如此反覆地遍歷查詢。。。。
也許10分鐘也許一小時,也許它永遠都無法回答你的問題。
其實,這種關係只要超過5級關係型資料庫就無法解決問題,這就是為什麼需要圖形資料庫的出現了。
圖形資料庫:
在圖形資料庫裡面對資料的處理是這樣子的:每個物件都表示成為乙個節點(node),每個節點之間的聯絡表示成關係(rrelationship),節點與節點之間用關係關聯在一起。我們可以看圖更好理解一點。
如圖所示,有三個節點(node)它們都通過friend關係(relationship)關聯起來。tim的朋友是lili,lili跟jack互為朋友,同時jack認識tim。在圖形資料庫裡要回答像「tim的朋友的朋友的朋友」的問題非常簡單,資料庫只需要找到tim的關係(relationship)所對應的節點然後找到對應節點的關係(relationship),只需遍歷幾次,這樣就可以很容易回答了上面的問題了。
用統計如圖:
同樣的問題如果關聯的深度超過5那麼關係型資料庫基本上是無法解決的。由此可見關係型資料庫不僅效能上不如圖形資料庫,它在業務實現上其實也是有瓶頸的。這就是為什麼需要研究圖形資料庫的原因。
Neo4j入門教程 1
neo4j資料庫是一種圖形資料庫 不知道這麼翻譯準不准,暫且這麼稱呼吧 這種資料庫與傳統的關係型資料庫有很大的差別。為了更好地幫助大家理解我這裡就將關係型資料庫與圖形資料庫作個比較。關係型資料庫 我們常用的像mysql,oracle等都是關係型資料庫,在關係型資料庫裡面對資料的處理是這樣子的 對每個...
關於neo4j初入門(1)
圖形資料庫也稱為圖形資料庫管理系統或gdbms。neo4j的官方 關係應該是定向的 訪問neo4j通過使用http localhost 7474 create 節點名稱。節點標籤名稱 create 總結 節點 標籤 屬性 match return 不能單獨使用match或return命令,因此我們應...
Neo4j學習(2) Win系統安裝Neo4j
neo4j 是目前最流行的圖形資料庫,支援完整的事務,在屬性圖中,圖是由頂點 vertex 邊 edge 和屬性 property 組成的,頂點和邊都可以設定屬性,頂點也稱作節點,邊也稱作關係,每個節點和關係都可以由乙個或多個屬性。neo4j建立的圖是用頂點和邊構建乙個有向圖,其查詢語言cypher...