有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当属性添加到节点时,由于Lucene日志,java Neo4j数据库爆炸

我在Neo4j上遇到了一个问题,其中目录图。由于许多大型lucene,db/index/的大小急剧增加。日志正在生成vXXX文件。这种情况发生在一个根本不使用索引的计算中,而只是简单地向网络中的某些节点添加数值属性

在运行UbuntuLinux(14.04.1和14.04.2)的两台不同的64位计算机上,版本2.1.3、2.1.7和2.2.0的问题是可以重现的

我的数据库:

  • 16'636'351个节点,具有4个属性:id(字符串)、名称(字符串)、国家代码(字符串)和类型(字符串)
  • 14'724'489加权链接

这将生成一个图表。数据库目录为11GB。目录图。db/index/大2.4GB

我使用嵌入Java中的Neo4j,并始终按如下方式进行实例化:

        String i1 = "id";
        String i2 = "name";
        String i3 = "country";
        String i4 = "type";
        String myIndeables = i1 + "," + i2 + "," + i3 + "," + i4;
        GraphDatabaseService gdbs = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder(cfg.dbPath).
                setConfig(GraphDatabaseSettings.node_keys_indexable, myIndeables).
                setConfig(GraphDatabaseSettings.node_auto_indexing, "true").
                setConfig(GraphDatabaseSettings.relationshipstore_mapped_memory_size, "12G").
                ...
                newGraphDatabase();

这种方法还用于创建(即导入)原始11GB数据库

到目前为止还不错

现在我对数据库进行计算。忽略细节,一种算法为网络中最大连接组件(6'118'740个节点)中的所有节点计算一种中心度度量

问题:
只需将这些新计算的数字作为属性添加到6'118'740个节点(总共16'636'351个节点)中,数据库就会爆炸到249 GB,并显示243 GB的图形。db/index/directory(由于lucene.log.vXXX文件的原因)

然而,如果我在没有索引的情况下实例化如下

        gdbs = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder(cfg.dbPath).
                setConfig(GraphDatabaseSettings.relationshipstore_mapped_memory_size, "12G").
                ...
                newGraphDatabase();

。。。结果是数据库大小为6.9GB(回想一下,原来是11GB!),其中现在只有2.2GB用于图形。db/index/

这里发生了什么


PS
其他信息:

  • Java版本:Java(TM)SE运行时环境(build 1.7.0_76-b13)和OpenJDK运行时环境(IcedTea 2.5.4)(7u75-2.5.4-1~trusty1)
  • jar文件是从Eclipse导出的
  • 从11GB的数据库到249GB的版本,日志没有给出任何线索

共 (0) 个答案