Neo4j 的现成数据库
Ready-made database for Neo4j
我需要 运行 对不同大小的数据库的 Neo4j 性能进行一些测试。
我想知道是否有一些我可以使用的现成数据库/Cypher CREATE 查询。
我尝试了一种解决方法:使用 Nigel Small 的 XML to Cypher Converter 将 XML 数据库转换为 CREATE quert,但我无法使其工作(500 内部服务器错误)。
有什么建议吗?
我不知道现成的 XML 数据库,但您可以使用实用程序 xml2neo 将您想要的任何 XML 文档转换为一系列准备好的密码语句对于 neo4j。
到那时,您可以将任何 XML 所需的内容导入到 neo4j 数据库中,然后继续,直到获得所需的大小。例如,您可以通过这种方式轻松提取数百万个 ATOM 或 RSS 提要中的任何一个。
它不是 "ready-made" persay 它安装在一个完全填充的数据库开箱即用的地方,但是我对 Neo4j 的空间功能越来越感兴趣并且我使用以下作为我的基础。
http://www.lyonwj.com/mapping-the-worlds-airports-with-neo4j-spatial-and-openflights-part-1/
本站提供了link全球机场数据集(虽然一开始有点难找,下面是具体的link数据集):
https://sourceforge.net/p/openflights/code/HEAD/tree/openflights/data/airports.dat?format=raw
该博客还提供了执行插入的 Python 脚本,尽管您可以通过 LOAD CSV Cypher 脚本轻松插入(我建议首先添加与下面的插入匹配的 headers;例如 airportId , 机场名称, 机场城市等):
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,或者如果您想保留它,可以显着降低该数字。
另外,这个数据集只是节点,没有任何关系。
不过您当然可以创建关系,例如您可以创建一个国家节点,然后将机场节点与其关联的国家节点相关联,而不是将国家/地区名称插入机场节点:
不要引用我的话(这在语法上可能不正确 and/or 不是在 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/
具体参考您可以实现的餐厅数据。
我设法找到了一种将我的 .xml 导入 Neo4j 的方法。
我将 .xml 转换为 .csv,然后在 this instructions.
之后导入它
我需要 运行 对不同大小的数据库的 Neo4j 性能进行一些测试。 我想知道是否有一些我可以使用的现成数据库/Cypher CREATE 查询。 我尝试了一种解决方法:使用 Nigel Small 的 XML to Cypher Converter 将 XML 数据库转换为 CREATE quert,但我无法使其工作(500 内部服务器错误)。
有什么建议吗?
我不知道现成的 XML 数据库,但您可以使用实用程序 xml2neo 将您想要的任何 XML 文档转换为一系列准备好的密码语句对于 neo4j。
到那时,您可以将任何 XML 所需的内容导入到 neo4j 数据库中,然后继续,直到获得所需的大小。例如,您可以通过这种方式轻松提取数百万个 ATOM 或 RSS 提要中的任何一个。
它不是 "ready-made" persay 它安装在一个完全填充的数据库开箱即用的地方,但是我对 Neo4j 的空间功能越来越感兴趣并且我使用以下作为我的基础。
http://www.lyonwj.com/mapping-the-worlds-airports-with-neo4j-spatial-and-openflights-part-1/
本站提供了link全球机场数据集(虽然一开始有点难找,下面是具体的link数据集):
https://sourceforge.net/p/openflights/code/HEAD/tree/openflights/data/airports.dat?format=raw
该博客还提供了执行插入的 Python 脚本,尽管您可以通过 LOAD CSV Cypher 脚本轻松插入(我建议首先添加与下面的插入匹配的 headers;例如 airportId , 机场名称, 机场城市等):
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,或者如果您想保留它,可以显着降低该数字。
另外,这个数据集只是节点,没有任何关系。
不过您当然可以创建关系,例如您可以创建一个国家节点,然后将机场节点与其关联的国家节点相关联,而不是将国家/地区名称插入机场节点:
不要引用我的话(这在语法上可能不正确 and/or 不是在 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/
具体参考您可以实现的餐厅数据。
我设法找到了一种将我的 .xml 导入 Neo4j 的方法。 我将 .xml 转换为 .csv,然后在 this instructions.
之后导入它