当属性添加到节点时,由于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) 个答案