Neo4j节点或关系支持ttl?

时间:2015-02-13 11:50:31

标签: neo4j cypher relationship nodes ttl

我正在学习neo4j,我想知道有什么方法可以创建relationshipnode,在一段时间后会自动删除。

3 个答案:

答案 0 :(得分:3)

我不知道这样的事。 Neo4j只是一个像* SQL或MongoDB这样的数据库(虽然让我知道他们是否可以这样做)。

我最好的建议是在关系上放置一个delete_after属性(或类似的东西),然后找一份定期查询的工作来清理它们。请注意,您无法直接查询关系(即,查询中始终需要涉及节点),因此根据数据库的大小,您可能需要考虑所需的索引类型。我在这里有点模糊,因为我不知道你的域模型是什么样的。

答案 1 :(得分:2)

正如@Scott在评论中指出的那样,您可以使用here所示的APOC在节点上指定TTL。将以下内容添加到您的neo4j.conf

apoc.ttl.enabled=true

然后,您可以自己设置适当的标签和属性:

SET n:TTL
SET n.ttl = timestamp() + 3600

或使用以下过程之一:

// Expires in
CALL apoc.date.expire.in(node,time,'time-unit')

// Expires at
CALL apoc.date.expire(node,time,'time-unit')

答案 2 :(得分:1)

Neo4j的另一个选项是使用GraphAware的Neo4j扩展名:neo4j-expire

使用此类扩展的一个缺点是,有时它们不再支持Neo4j的较新版本,并且它们需要一些时间来支持最新版本。如果这些对您来说没有问题,那么扩展名应该没有问题。