【问题标题】:In Neo4J how do I get the largest node id in the graph?在 Neo4J 中,如何获得图中最大的节点 ID?
【发布时间】:2012-07-18 22:43:35
【问题描述】:

我正在运行一个遍历所有节点的脚本。最初,我认为最大节点 ID 对应于我通过 REST 上的 Cypher 查询检索到的图中的节点总数:

START n=node(*) RETURN count(n)

但是,当我遍历每个数字时,我发现某些 id 的节点根本不存在。所以,这意味着我的最大 id 节点是一个大于节点总数的数字。知道如何检索这个号码吗?我非常喜欢 Cypher 或 Rest。

【问题讨论】:

    标签: graph neo4j graph-databases cypher


    【解决方案1】:

    您可以通过 JMX 获取此号码,请参阅 http://docs.neo4j.org/chunked/1.4.2/operations-monitoring.html 或使用 Java 通过

    Neo4jManager manager = new Neo4jManager( graphDb.getManagementBean( Kernel.class ) );
    long nodeIDsInUse    = manager.getPrimitivesBean.getNumberOfNodeIdsInUse();
    

    这也通过 REST 从

    开始暴露给 Webadmin JMX 端点
    http://localhost:7474/db/manage/server/jmx/domain/org.neo4j/instance%3Dkernel%230%2Cname%3DPrimitive%20count?_=1342719685294
    

    【讨论】:

    • 除其他外,我得到了这个:"attributes" : [ { ==> "description" : "An estimation of the number of nodes used in this Neo4j instance", ==> "name" : "NumberOfNodeIdsInUse", ==> "value" : 12345, ==> "isReadable" : "true", ==> "type" : "long", ==> "isWriteable" : "false ", ==> "isIs" : "false " ==> }, 除非我遗漏了什么,这看起来仍然是节点的总数。
    • NumberOfNodeIdsInUse 不是给你实际的节点数,而是给出的 ID 数。这不是你想要的吗?在 HA 场景中,ID 在从属服务器之间分块,因此默认情况下您将有 1000 步的计数。
    • 所以,为了清楚起见,如果给出 5 个 id 是否意味着给出了 0,1,2,3,4?或者,无论出于何种原因,是否可以跳过 id 以便给出 0、1、3、5、10?无论哪种情况,NumberOfNodeIdsInUse 都是 5。
    • mmh,表示正在使用的ID数,表示如果是5,则使用0,1,2,3,4。在集群环境中,将 1000 个 ID 的块分配给集群,因此并非所有这些都实际使用,而是保留。
    • 接口org.neo4j.graphdb.GraphDatabaseService确实有一个getManagementBean()方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    相关资源
    最近更新 更多