如何测量社区版的 Neo4j 数据库大小?

net*_*t_j 5 neo4j

据我所知,Neo4j 社区版不提供转储。测量底层 Neo4j 数据库大小的最佳方法是什么?做 du 会提供一个好的估计吗?

谢谢。

Nic*_*las 2

你是什​​么意思:

Neo4j 社区版不提供转储

企业版也不提供类似的功能。您是否正在寻找有关原始磁盘或节点/关系计数的数据库大小的统计信息?

如果是磁盘:du -sh在linux上使用,或者在Windows上检查文件夹。

如果节点/关系:您必须编写 Java 代码来实际评估真实大小,因为 Web 控制台上的计数并不总是正确的。您还可以通过获取磁盘上的纯大小并除以节点存储的 9 和关系存储的 33 来进行基本计数。

Java 代码如下所示:

    long relationshipCounter = 0;
    long nodeCounter = 0;
    GlobalGraphOperations ggo = GlobalGraphOperations.at(db);
    for (Node n : ggo.getAllNodes()) {
                    nodeCounter++;
        try {
            for (Relationship relationship : n.getRelationships()) {
                relationshipCounter++;
            }
        } catch (Exception e) {
            logger.error("Error with node: {}", n, e);
        }
    }
            System.out.println("Number of Relationships: " + relationshipCounter);
            System.out.println("Number of Nodes: " + nodeCounter);
Run Code Online (Sandbox Code Playgroud)

Web 控制台并不总是正确的原因是它检查文件的最高值,并且 Neo4j 对节点使用删除标记,因此可能存在一系列“已删除”节点,这些节点会增加已删除的节点总数。可用的。最终,neo4j 将压缩并删除这些节点,但它们不会实时执行。

文件大小可能撒谎的原因与上述相同。唯一正确的方法是遍历所有节点和关系来检查“isActive”标记。