2015-04-07 51 views
0

我需要在不同大小的数据库上对Neo4j性能进行一些测试。 我想知道是否有一些现成的数据库/ Cypher CREATE查询我可以使用。 我尝试了一种解决方法:使用Nigel Small将XML数据库转换为XML到Cypher转换器的CREATE quert,但是我一直无法使其工作(500内部服务器错误)。Neo4j的现成数据库

有什么建议吗?

+0

我发现Neo4j网站托管一些示例数据集以使用[here](http://neo4j.com/developer/example-data/)。电影数据库就像一个魅力。我也下载了Musicbrainz数据库,但似乎必须在存档中出现问题:每次我尝试提取它时都会抛出一些错误(损坏的文件或不受支持的压缩)。我也尝试修复它没有成功。具有数百万个节点的数据库正是我所需要的! 任何想法如何解决这个问题?任何其他地方我可以找到它? – fgiacc

回答

0

我设法找到一种方法将我的.xml导入Neo4j。 我将.xml转换为.csv,然后我将它导入到this instructions之后。

2

我不知道现成的XML数据库,但您可以使用实用程序xml2neo将您需要的任何XML文档转换为为neo4j准备的一系列密码语句。

此时,您可以将所需的任何XML导入到neo4j数据库中,然后继续操作,直到获得所需的大小。例如,您可以通过这种方式轻松提取数百万个ATOM或RSS源。

+0

这个工具可能很棒,但它似乎有一些缺陷。我尝试将它与提供的sample.xml一起使用,并生成了一些在Neo4j中使用时引发语法错误的密码查询。 – fgiacc

+0

将它作为问题发布并附带一个xml样本,它将得到更正 – FrobberOfBits

0

它不是“现成的”persay,它使用完全填充的数据库进行开箱即用,但是我对Neo4j的空间功能更感兴趣,并使用以下作为我的基础开始。

http://www.lyonwj.com/mapping-the-worlds-airports-with-neo4j-spatial-and-openflights-part-1/

在这个网站,它提供了一个链接到世界各地机场的数据集(虽然这是一个有点难以找到在第一,所以对数据集中的具体链接如下):

https://sourceforge.net/p/openflights/code/HEAD/tree/openflights/data/airports.dat?format=raw

博客还提供了Python脚本来执行插入操作,虽然您可以通过LOAD CSV Cypher脚本轻松插入(我建议添加首先匹配下面插入的标题;例如airportId,airportName,airportCity等):

USING PERIODIC COMMIT 500 
LOAD CSV WITH HEADERS FROM "file:d:/airports.dat" AS line 
CREATE (airport:Airport { id: line.airportId, name: line.airportName, city: line.airportCity, country: line.airportCountry, iata: line.airportIATA, icao: airportICAO, latitude: line.airportLat, longitude: line.airportLon, altitude: line.airportAltitude, offset: line.airportOffset, dst: line.airportDST, timezone: line.airportTimezone }); 

有关数据集的内容的更多信息,请访问:

http://openflights.org/data.html

的博客中也上方则提供了通过暗号,Java等查询

细节如果我遇到任何其他人,我会更新我的答案。

编辑1 数据集不是非常大(小于10000个节点),所以你可能不需要使用周期性COMMIT 5000,或者如果你想保持它,你可以显著降低这一数字。

此外,这个数据集只是节点,并没有任何关系。

你当然可以创建关系,虽然,如而不是插入的国名到机场节点,你可以创建一个国家节点,然后涉及机场节点及其关联的国家节点:

不要报价(在Neo4j中这可能是语法错误和/或不是最好的方法,但应该给你一个开始),因为我对Cypher还是很新的,但我认为它会像这样:

USING PERIODIC COMMIT 500 
LOAD CSV WITH HEADERS FROM "file:d:/airports.dat" AS line 
CREATE (airport:Airport { id: line.airportId, name: line.airportName, city: line.airportCity, iata: line.airportIATA, icao: airportICAO, latitude: line.airportLat, longitude: line.airportLon, altitude: line.airportAltitude, offset: line.airportOffset, dst: line.airportDST, timezone: line.airportTimezone }) 
WITH airport, MERGE (country:Country { name: line.airportCountry }) 
ON CREATE SET (airport)-[:IN_COUNTRY]->(country) 
ON MATCH SET (airport)-[:IN_COUNTRY]->(country); 

编辑2 另外,请上网:

http://maxdemarzi.com/2014/01/31/neo4j-spatial-part-1/

具体的参考餐厅的数据就可以实现。

+0

机场数据集不适合我的需要。虽然我可以按照您的建议添加一些关系,但这会创建一堆集群,而不是一个大的连接图,而这可能会用于路径查找性能测试。 反正Neo4j Spatial是一个我不知道的有趣的项目,我会密切关注它=) – fgiacc