Neo4j簡介


1、什么是Neo4j
  Neo4j是由java實現的開源NOSQL圖數據庫
  數據庫分為關系型和非關系型兩種類型。
  其中非關系型又分為Graph(圖形),Document(文檔),Cloumn Family(列式),以及Key-Value Store(KV),
  這四種類型數據庫分別使用不同的數據結構進行存儲。因此它們所適用的場景也不盡相同。

  特點:
    1、界面友好: 前端D3.js
    2、查詢語言: Cypher
    3、ACID事務

  A、體系結構:
    Neo4j最初的動機是為了更好的描述實體之間的聯系
  1、免索引鄰接
    (1)免索引鄰接使用遍歷物理關系的方法查找,比起全局索引代價要小的多
    (2)當索引建立后,反向遍歷時,索引就會失效
    所以免索引鄰接機制,使得圖庫上關系查詢效率非常高

  B、存儲結構:
    節點和關系都是采用固定長度存儲。

  (1)節點(Node)
    包含一個和多個屬性(properties),標簽(Label)
    長度: 9字節
    存儲文件名:neostore.nodestore.db
    格式:Node:inUse+newRelId+newPropId
    inUse: 1表示該節點唄正常使用,0表示該節點被刪除
    nextRelId: 該節點的下一個關系ID
    nextPropId: 該節點的下一個屬性ID

    示例數據:
    Node[0,used=true,rel=9,prop=-1]
    Node[1,used=true,rel=1,prop=0]
    Node[2,used=true,rel=2,prop=2]
    Node[3,used=true,rel=2,prop=4]
  數據解釋:
    Node[12,used=true,rel=11,prop=22]采用固定字節長度的記錄可以快速地查詢到存儲文件中的節點。
  如果有個ID為100的節點。我們知道該記錄在存儲文件的第900個字節。基於這種查詢方式,查詢成本是O(1)


  (2)關系(Relationship)
    包含起始節點(startNode)和終止節點(endNode),一個和多個屬性,標簽,一個類型
  長度: 33字節
  存儲文件名: neostore.relationshipstore.db
  格式: Relationship:inUse+firstNode+secondNode+relType+firstPreRelId+firstNextRelId+secondPrevRelId+secondNextRelId+nextPropId
  inUse:,nextPropId: 作用同上。
  firstNode: 當前關系的起始節點。
  secondNode: 當前關系的終止節點。
  relType: 關系的類型。
  firstPrevRelId & firstNextRelId: 起始節點的前一個和后一個關系的ID。
  secondPrevRelId & secondNextRelId: 終止節點的前一個和后一個關系ID。

  數據解釋:
  Relationship[0,used=true,source=1,target=0,type=0,sPrev=1,sNext=-1,tPrev=3,tNext=-1,prop=1]
  Relationship[0,used=true,source=2,target=1,type=1,sPrev=2,sNext=-1,tPrev=-1,tNext=0,prop=3]

  (3)屬性(property)
  長度:9字節
  存儲文件名:neostore.propertystore.db.index
  格式:property:inUse+propCount+keyBlockId
  屬性索引的值部分存儲的是指向動態內存的記錄或者內聯值,短字符串和短數組會直接內聯在屬性存儲記錄中。當長度超過屬性記錄中propBlock長度限制之后
  會存儲到其他的動態存儲文件中

  C、遍歷方式
  從一個給定節點定位關系鏈中第一個關系的位置,然后計算它在關系存儲的偏移量獲取,使用關系ID乘關系的固定大小即可定位存儲文件中的正確位置
  在關系記錄中,搜索第二個字段可以找第二個節點的ID,用節點固定大小乘節點ID可以得到節點在存儲中的正確位置

  D、存儲優化
  盡量將短字符的屬性直接存儲在屬性文件中,壓縮和內聯存儲

Neo4j的安裝

批量導入工具的使用

Cypher語句

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM