代码之家  ›  专栏  ›  技术社区  ›  Govind Singh

Neo4j节点或关系支持ttl?

  •  5
  • Govind Singh  · 技术社区  · 9 年前

    我在学习 neo4j ,我想知道有没有任何方法可以创建 relationship node 这将在一定时间段后自动删除。

    4 回复  |  直到 9 年前
        1
  •  4
  •   Daniel Rearden    5 年前

    正如@Scott在评论中指出的,您可以使用APOC在节点上指定TTL,如图所示 here 。将以下内容附加到 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
  •  3
  •   Brian Underwood    9 年前

    我不知道有什么像这样的。Neo4j只是一个类似于*SQL或MongoDB的数据库(尽管让我知道他们是否可以这样做)。

    我最好的建议是 delete_after 属性(或类似的属性),然后有一个定期查询以清理它们的作业。请注意,您不能直接查询关系(也就是说,节点总是需要参与到查询中),因此根据数据库的大小,您可能需要考虑所需的索引类型。我在这里有点模糊,因为我不知道你的域模型会是什么样子。

        3
  •  2
  •   Namrata    3 年前

    如果你和我一样,偶然发现了这篇文章,这篇文章最近已经更新了。 裁判: https://neo4j.com/labs/apoc/4.3/overview/apoc.ttl/apoc.ttl.expireIn/

        Match(person:person {id: 100})
        CALL apoc.ttl.expireIn(person, 10,'s')
        Return person;
    
        4
  •  1
  •   Himanshu Jain    6 年前

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

    使用此类扩展的一个缺点是,有时它们不再支持Neo4j的更新版本,而且需要一些时间才能支持最新版本。如果这些都不是你的问题,你应该对扩展没有问题。