能夠将維基百科導入Neo4j資料庫是不是很酷?
Neo4j是NoSQL的一個代表,它是一個嵌入式,基于磁盤的,支援完整事務的Java持久化引擎,它在圖像中而不是表中存儲資料。Neo4j提供了大規模可擴充性,在一台機器上可以處理數十億節點/關系/屬性的圖像,可以擴充到多台機器并行運作。相對于關系資料庫來說,圖形資料庫善于處理大量複雜、互連接配接、低結構化的資料,這些資料變化迅速,需要頻繁的查詢——在關系資料庫中,這些查詢會導緻大量的表連接配接,是以會産生性能上的問題。
Neo4j重點解決了擁有大量連接配接的傳統RDBMS在查詢時出現的性能衰退問題。通過圍繞圖形進行資料模組化,Neo4j會以相同的速度周遊節點與邊,其周遊速度與構成圖形的資料量沒有任何關系。此外,Neo4j還提供了非常快的圖形算法、推薦系統和OLAP風格的分析,而這一切在目前的RDBMS系統中都是無法實作的。
英國的軟體工程師Mirko Nasato同樣意識到這點,并使用批處理導入技術建立了Graphipedia(注:graphipedia是一個将維基百科頁面和超連結導入圖形資料庫的工具集)。
Graphipedia使用Java編寫,如果你專注于Ruby,并不擅長使用Java,下面的教程将會手把手的教你如何完成這些步驟。
首先,複制這個項目并打開:
git clone git://github.com/mirkonasato/graphipedia.git
cd graphipedia
如果發現pom.xml檔案意味着你需要下載下傳Maven并建立項目。
sudo apt-get install maven2
mvn install
你将看到一串代碼滾動,這是相關檔案在下載下傳,運作到最後你将看到如下代碼:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] Graphipedia Parent .................................... SUCCESS [1:08.932s]
[INFO] Graphipedia DataImport ................................ SUCCESS [1:16.018s]
[INFO] BUILD SUCCESSFUL
[INFO] Total time: 2 minutes 25 seconds
[INFO] Finished at: Thu Feb 16 11:36:55 CST 2012
[INFO] Final Memory: 28M/434M
下面将需要下載下傳的維基百科檔案通過wget下載下傳下來:
這足足有7.6G的檔案,我們先嘗試一個較小的資料:Peesi tali fiefia詞條,然後解壓縮該詞條的維基百科檔案。
bzip2 -d towiki-latest-pages-articles.xml.bz2
以下是兩個步驟,首先建立一個隻包含頁面标題和連結的較小的中間XML檔案:
java -classpath ./graphipedia-dataimport/target/graphipedia-dataimport.jar org.graphipedia.dataimport.ExtractLinks towiki-latest-pages-articles.xml towiki-links.xml
顯示如下:
Parsing pages and extracting links...
..
2835 pages parsed in 0 seconds.
然後運作批處理導入該檔案,将内容存儲在圖形資料庫目錄下。
java -Xmx3G -classpath ./graphipedia-dataimport/target/graphipedia-dataimport.jar org.graphipedia.dataimport.neo4j.ImportGraph towiki-links.xml graph.db
将會出現以下代碼:
Importing pages...
2835 pages imported in 0 seconds.
Importing links...
.....
5799 links imported in 0 seconds; 6383 broken links ignored
打開并檢視neostore檔案夾:
cd graph.db
ls
重寫/neo4j/data/graph.db檔案夾,将該檔案夾覆寫任何原有Neo4j資料庫。
本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/786478,如需轉載請自行聯系原作者