能够将维基百科导入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] ------------------------------------------------------------------------

  [INFO] Graphipedia Parent .................................... SUCCESS [1:08.932s]

  [INFO] Graphipedia DataImport ................................ SUCCESS [1:16.018s]

  [INFO] ------------------------------------------------------------------------

  [INFO] ------------------------------------------------------------------------

  [INFO] BUILD SUCCESSFUL

  [INFO] ------------------------------------------------------------------------

  [INFO] Total time: 2 minutes 25 seconds

  [INFO] Finished at: Thu Feb 16 11:36:55 CST 2012

  [INFO] Final Memory: 28M/434M

  [INFO] ------------------------------------------------------------------------
  下面将需要下载的维基百科文件通过wget下载下来:

  wget http://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz2
  这足足有7.6G的文件,我们先尝试一个较小的数据:Peesi tali fiefia词条,然后解压缩该词条的维基百科文件。

  wget http://dumps.wikimedia.org/towiki/latest/towiki-latest-pages-articles.xml.bz2

  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数据库。