我需要使用不同大小的数据库对Neo4j性能进行一些测试。 我想知道是否有一些现成的数据库/ Cypher CREATE查询我可以使用。 我尝试了一种解决方法:将XML数据库转换为使用Nigel Small的XML到Cypher转换器的CREATE命令,但我无法使其工作(500内部服务器错误)。
有什么建议吗?
答案 0 :(得分:2)
我不知道现成的XML数据库,但您可以使用实用程序xml2neo将您想要的任何XML文档转换为为neo4j准备的一系列cypher语句。
此时,您可以将所需的任何XML导入到neo4j数据库中,并继续直到获得所需的大小。例如,您可以轻松地以这种方式提取数百万个ATOM或RSS源。
答案 1 :(得分:0)
它不是“现成的”,它在开箱即用的地方安装了一个完全填充的数据库,但是我对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等):< / p>
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
上面的博客文章还提供了有关通过Cypher,Java等查询的详细信息。
如果我遇到任何其他人,我会更新我的答案。
编辑1 数据集不是非常大(少于10,000个节点),因此您可能不需要USING PERIODIC 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/
具体是您可以实施的餐馆数据的参考。
答案 2 :(得分:0)
我设法找到了将我的.xml导入Neo4j的方法。 我将.xml转换为.csv,然后在this instructions之后导入它。