Neo4j實戰之Neo4j概述

一、高性能的,NOSQL圖形數據庫java

(1)結構化數據存儲在網絡上而不是表中;sql

(2)高性能的圖引擎,具備成熟數據庫的全部特性;數據庫

(3)嵌入式、高性能、輕量級等優點,愈來愈受到關注;api

(4)面向對象的、靈活的網絡結構,而不是嚴格、靜態的表;緩存

(5)具有徹底的事務特性、企業級的數據庫的全部好處;服務器

(6)應對海量數據的新型數據庫技術佼佼者;網絡

(7)應對複雜數據的理想選擇;併發

(8)Cypher是neo4j的查詢語言;框架

二、遍歷nosql

(1)圖形數據庫中,由關係鏈接的節點之間,移動訪問一組節點的操做;

(2)實現檢索的基本操做;

(3)局域化,僅僅用到所需條件;

三、主鍵值存儲

(1)主鍵值存儲表明了最簡單、處理大量併發訪問數據的方法

(2)緩存是典型的主鍵值技術;

(3)最簡單的nosql(具備簡單性、高性能、可擴展),其餘分類都是在其基礎上;

四、列族存儲

(1)分佈式主鍵值模型(縮放型號),必須使用某些數據類型;

五、面向文檔數據庫

六、Neo4j的事務特性(關於事務的一切都適用):

(1)原子性

(2)一致性

(3)隔離性

(4)持久性:必須確保寫入數據庫的數據能寫入磁盤;

八、Neo4j的java API---節點(Node)《《《《《《《《《《《《《《《《《《

八、Neo4j的java API---關係(RelationshipType接口)《《《《《《《《《《《《《《《《《《

(1)實現該接口,可自定義關係;

(2)DynamicRelationshipType類;

八、Neo4j的java API---屬性(property)《《《《《《《《《《《《《《《《《《《《《《

(1)不容許空值null;

八、Neo4j的java API---類型(type)《《《《《《《《《《《《《《《《《《《《《《《

(1)節點默認沒有類型;

(2)添加type屬性爲節點類型;

七、Neo4j的java API---標籤(Label)《《《《《《《《《《《《《《《《《《《《《

(1)實現Label接口定義標籤,能夠用於節點查詢;

(2)建議使用標籤,是內置功能;

(3)給查詢、基於模式索引帶來了極大靈活性;

(4)默認狀況下,標籤、屬性查找是蠻力查找(即:遍歷全部);

(5)對屬性、標籤訂義模式索引,引擎會使用更快的索引查找;

(6)節點可包含多個標籤;

九、Neo4j的java API---能夠爲關係添加屬性(RelationshipType枚舉接口)《《《《《《《《《

十、圖形遍歷

(1)特殊的方式,按照圖形節點之間的關係訪問節點的過程;

十一、內存注意事項:

(1)Neo4j的ArrayIntIterator實現了Iterator接口;

(2)ArrayIntIterator是個瘦包裝類;

(3)ArrayIntIterator對結果迭代以前,還沒訪問結果集中包含的元素;

(4)第一次訪問延時加載,一旦使用,不可再用(java迭代器指望的那樣);

(5)Iterator接口容許返回很是大的數據;

(6)使用java的list、set返回大量數據就須要大量堆內存;

十二、Neo4j遍歷api:

(1)具備流暢建立器api;

(2)基於回調函數的框架;

(3)TraversalDescription用於描述遍歷器行爲;

(4)TraversalDescription不可變對象,用於描述遍歷規則;

(5)Evaluator評估函數(Evaluator接口);

(6)Path類型,表明從起始節點到目前節點所遍歷的全部節點和關係;

(7)路徑的起始節點和終止節點依賴於遍歷順序;

(8)Evaluator四個枚舉值:

1三、索引

(1)經過屬性,容易找到節點和關係;

(2)應用程序建立和維護索引項;

(3)索引由Lucene存儲,建立索引項代碼以下:

(4)容許傳遞不一樣設置選項,customConfiguration,可包含任意合法Lucene設置;

(5)經過索引查找到一個節點後,按照常規作遍歷,很容易找到關係人;

(6)多結果匹配:

(7)IndexHits爲檢索結果,根據lucene規定,一次性迭代,用過便不能再用;

(8)支持範圍查詢(由於Lucene支持);

(9)索引的更新採用,先刪除、後添加的方式;

(10)不只僅是節點、關係也能夠進行索引;

1四、模式索引

(1)模式索引與傳統的關係型數據庫索引的方式很像,你定義索引,Neo4j維護;

1五、自動索引

(1)設置自動索引取決於運行模式;

(2)運行模式包括嵌入式模式、服務器模式;

(3)每一個值都在Neo4j中索引,存儲容量可能變成2倍甚至更多;

(4)使用自動索引,打開節點或關係,也能夠同時打開兩者自動索引;

(5)配置文件便可

(6)索引全部屬性不現實的,圖形變化對性能影響和磁盤需求巨大;

1六、索引的成本/效益權衡

(1)索引越多,對磁盤需求越大,修改操做對性能影響越大;

(2)查找彼岸準程序注意點

  • Neo4j編號保存到外部是很差的操做;
  • Neo4j中getAllNodes方法得到Iterable,Iterable迭代全部節點,查找某特定節點性能低下;

1七、索引存儲

(1)建立了較小查找表,能夠對圖形數據庫某個位置快速訪問;

相關文章
相關標籤/搜索