我正在评估Neo4j(2.0,但也可以使用1.0)的项目使用情况,其中大量数据(数百万个节点)每天从不同的来源加载,很可能在某个时间点任意日期和来源将不得不完全删除,因此必须尽快完成。Neo4j中的“drop partition”功能,删除很多节点
在Oracle中,我将使用分区并为每个日期/源组合创建一个不同的分区,然后使用DROP PARTITION
删除它们将会很快。 有什么方法可以在Neo4j中获得相同的结果吗?
现在,我发现标记并最终删除很多节点的最快方式是在插入数据时使用与其链接的“分区节点”,并在必要时遍历它们的关系并删除它们中的所有节点,但是在Cypher中或使用Java API时,事务都会失败,因为要删除的节点数量不能存储在内存中。
是否有一种最快的方法来删除所有具有先前分配的标签的节点?
您能否在您的意思上添加更多细节:“但是在Cypher中或使用Java API时,事务都会失败,因为要删除的节点数量不能存储在内存中。” – FrobberOfBits
他们在单个事务中完成删除操作(至少Cypher,在Java中,我将迭代所连接的节点,并在单个事务中删除它们,但可以将它拆分成不同的部分),并允许回滚事务持有对所有被删除的节点,当它有很多时,它会消耗我看到的所有内存 – Jacopofar