Neo4j 的一些使用心得



由對圖數據的處理需求,看到了圖數據庫(GraphDataBase)這種比較新的數據庫模式,並且通過比較發現用的相對多的要屬Neo4j了,現在來看網上對Neo4j的介紹還比較少,內容主要來源於三個地方:官方網站http://www.neo4j.org/ ;中文社區http://www.neo4j.org.cn/ 和Neo4j google網上論壇https://groups.google.com/forum/?fromgroups#!forum/neo4j。而中文社區的內容基本上是對官網內容的翻譯,可以中英文對照着看,以加快理解。

       在各種官方資料中都說Neo4j的性能優良,可以支持幾十億個節點和上百億的關系,於是懷着興奮和期望開始了對它的研究。
      Neo4j有兩種運行模式,即程序嵌入式模式和服務器模式。對於項目的長期使用來說顯然是服務器模式更加適合。所以在對嵌入式模式進行了簡單的了解之后就開始對其服務器模式進行研究。對於官網中已經介紹的內容本文就不再贅述了,而目前能搜索到的資料基本上也是這些內容的重復,本文中講一些我使用過程中遇到的問題和經驗。
      首先當然是去官網上下載安裝包。我選擇的是neo4j-enterprise-1.8.M07-windows版本,按照官網的教程逐步進行安裝,啟動。這個時候遇到了第一個問題,就是neo4j.bat install執行之后,服務可以安裝上去,但是無論如何都無法啟動。提示: 失敗 1053 服務沒有及時響應啟動或控制請求 在網上翻看了很多資料,基本上都是修改服務的超時時間,但是此時對這個問題無效。最后在google論壇上看到相似內容,可能是電腦安裝的Java jdk版本問題,於是把jdk 1.7 換回到jdk 1.6,再啟動果然問題解決了。所以如果要使用Neo4j的服務器模式運行,最好還是首先確定自己電腦安裝的是jdk 1.6 
    服務運行起來之后就是研究它的功能和用法了。我用的是Java,所以一切內容都是以Java為語言基礎的。服務器模式提供了REST API,但是由於水平有限,要自己通過Java使用這些API實在是不容易。於是尋找針對REST API的封裝工具。 http://docs.neo4j.org.cn/server-java-rest-client-example.html這里介紹了如何在Java中使用REST API,其中用到了Jersey,但是在網頁上所給的例子中我發現了一個問題,在查詢某個點的時候,他的參數用到了之前創建點的時候的臨時變量URI firstNode,這就意味着如果所有點已經創建完畢,而我想通過某個點的屬性查詢到它的話就沒有辦法了。遺憾的是Java使用REST API這部分只有這一頁的例子,其他地方也沒有搜索到相關資料。這種方法只能先告一段落。
    還有另外一種方法是通過Java-REST-Binding http://docs.neo4j.org.cn/rest-clients.html 它集成了REST API 可以通過Java遠程連接Neo4j服務器GraphDatavaseService gds=new RestGraphDatabase("http://10.108.xxx.xx:7474/db/data");同時還支持Neo4j-core-API,這樣就可以像使用嵌入式模式那樣的代碼形式對數據庫進行響應操作,而且嵌入式模式下的代碼實例相對較多。這樣就可以很方便的進行創建節點,添加屬性和關系,查詢,創建索引等操作。
    與MongoDB的可視化操作工具MongoVUE相似的是,針對Neo4j也有一個工具-neoclipse。cfeibiao的博客 http://blog.csdn.net/cfeibiao/article/details/6842941有對它的基本介紹。
Neo4j <wbr>的一些使用心得
    如果你的數據庫已經對應點的屬性建立了索引,則可以通過某個點的屬性值對其進行查詢,比如“name”屬性的“張三”。另外還支持cyper語言查詢。
    另外一種檢測工具就是web控制台,可以通過http://ip地址:7474/webadmin訪問。
Neo4j <wbr>的一些使用心得

Neo4j <wbr>的一些使用心得
    最終,一個致命的問題就是速度問題。從現有的MongoDB中把數據轉存到Neo4j中,包括查重、設置屬性、關系、建立索引等操作,完成一個點需要將近1秒的時間,這是無法忍受的速度。。。


免責聲明!

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



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