现成的Neo4j数据库

时间:2015-04-07 11:11:58

标签: xml database neo4j cypher

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

有什么建议吗?

3 个答案:

答案 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之后导入它。