2011-11-14 133 views
4

我在寻找处理数据的最佳实践。所以,这就是我迄今为止所获得的:1.000.000个类型为“A”的节点。每个“A”节点可连接到1-1000个“B”型节点和1-10个“C”型节点。处理大数据集(neo4j,mongo db,hadoop)

我已经编写了一个RESTful服务(Java,Jersey)来将数据导入到neo4j图中。在导入节点“A”(只有节点,带有ID,没有其他数据)后,我注意到neo4j db已经增长到〜2.4GB。

在neo4j中存储附加字段(名称,描述,...)是一个好主意吗?或者我应该设置一个mongoDB/hadoop来使用键/值组合来访问数据?

+1

在我看来,100万个节点/几GB不足以保证进入Hadoop。 –

回答

2

在插入过程中是否删除了很多节点?通常一个节点需要9个字节的磁盘,所以你的1M节点只需要9M字节。您必须启用标识符重用才能积极回收内存。

您能否列出您的数据目录的内容与文件大小?

一般来说,将其他字段放在neo4j中是不成问题的,如果它们不是大的blob字段的话。

你是如何创建数据库的?

+0

嘿!不,我不是删除节点。我只是“插入”具有“id”,“name”和“code”属性的节点。该ID是一个自动生成的字符串(长度= 32)。当我插入节点时,名称是计数器(节点975.648 - > name =“name975648”)。代码与名称相同(代码975648)。当我回到家时,我会发布数据目录的内容细节;) – Alebon

+0

名称+代码的用途是什么。仅使用长前缀而不使用前缀就会占用更少的空间。你使用的是什么版本的Neo4j?您也可以查看(http://docs.neo4j.org/annotated/#short-strings和http://docs.neo4j.org/chunked/snapshot/configuration-caches.html以了解磁盘使用情况) –

+0

好的, 谢谢!我忘记了一个事实。我正在索引节点。 :D只看了一下文件大小。 neostore.propertystore.db约为1.4 GB。该指数的大小相同。所有在一起它导致〜2.8GB。我想,我需要索引来定位节点? – Alebon