如何从成千上万的事件中构建Neo4j图表?

时间:2015-06-01 07:02:32

标签: neo4j

我们有一个事件源应用程序,正在考虑将neo4j添加到问题中以查看某些关系。我认为用例非常好,但问题是如果我要逐个重放每个事件,那么构建图表需要花费很多时间。那么从~1.000.000事件重建图表最好的是什么?结果图是约。 100.000个节点和很多关系。第一个天真的尝试是逐个进行,但它需要花费很多时间,因为这是我们可能想做的不止一次。

是构建所有节点的内存列表然后为所有节点构建大型密码查询以及为关系构建一个大型密码查询的最佳方法吗?或者是使用批处理API的最佳方式?

在理想的情况下,重建的逻辑应该与我逐个处理事件时的逻辑相同,但是对于实时处理,应该在每个事件之后执行“提交”。

2 个答案:

答案 0 :(得分:1)

我可能会使用LOAD CSV作为初始加载,然后使用单个或批量INSERT语句进行滴灌。

答案 1 :(得分:1)

如果您的要求是保持与事件的应用程序生命周期中相同的逻辑,并且在应用程序中使用Cypher,那么您将无法使用Transactional Cypher端点处理它。

几乎不可行,而LOAD CSV和BATCH api将为您提供更多性能。

我有一个应用程序,我在每个Cypher事务中编写~1250个Cypher语句,每个事务大约需要0.2到0.3秒。

实现此时间率的一些小技巧:

做一些小陈述:如果你需要写很多东西,最好有10个小语句,如MATCH (n1), (n2) MERGE (n1)-[:FOLLOW]->(n2),而不是10个合并的大语句。

描述您的查询并确保所有索引都正确

每笔交易保留500-1000条报表。

在批量加载时为数据库留出足够的内存。