【问题标题】:Handling big data sets (neo4j, mongo db, hadoop)处理大数据集(neo4j、mongo db、hadoop)
【发布时间】:2015-12-30 05:39:54
【问题描述】:

我正在寻找处理数据的最佳做法。所以,这就是我到目前为止得到的:1.000.000 个“A”类型的节点。每个“A”节点可以连接1-1000个“B”类型节点和1-10个“C”类型节点。

我编写了一个 RESTful 服务(Java、Jersey)来将数据导入 neo4j 图表。在导入节点“A”(只有节点,有 id,没有更多数据)之后,我注意到 neo4j db 已经增长到 ~2.4GB。

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

【问题讨论】:

  • 在我看来,100 万个节点/几 GB 不足以保证使用 Hadoop。

标签: mongodb hadoop neo4j


【解决方案1】:

你在插入过程中删除了很多节点吗?通常一个节点在磁盘上占用 9 个字节,所以你的 1M 节点应该只占用 9M 字节。您必须启用 id 重用才能积极回收内存。

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

一般来说,如果它们不是大型 blob 字段,则将其他字段放入 neo4j 中是没有问题的。

你是如何创建数据库的?

【讨论】:

  • 嘿!不,我没有删除节点。我“只是”插入具有“id”、“name”和“code”属性的节点。 ID 是自动生成的字符串(长度 = 32)。当我插入节点时,名称是计数器(节点 975.648 -> name =“name975648”)。并且代码与名称相同(code975648)。回家后我会发布数据目录的内容详细信息;)
  • 名称+代码的用例是什么。仅使用不带前缀的长值使用更少的空间。你用的是什么版本的 Neo4j?您还可以查看(docs.neo4j.org/annotated/#short-stringsdocs.neo4j.org/chunked/snapshot/configuration-caches.html 了解磁盘使用情况)
  • 好的,谢谢!我忘记了一个事实。我正在索引节点。 :D 只是看看文件大小。 neostore.propertystore.db 约为 1.4 GB。和安静的指数有着同样的大小。总之,它导致〜2.8GB。我想,我需要索引来定位节点?
  • 我使用的是 neo4j 1.5。在实际应用程序中,名称和代码是不同的字符串(长度为 30 - 150)。这只是一个测试,因为我以前从未使用过 neo4j。我计划将文档存储在数据库(节点 A)中。每个文档都可以有字段(节点 B)和值。每个字段都可以有自己的版本控制(节点 C)。将这种数据存储到 neo4j 中是个好主意还是我应该看看 hadoop/HBase?
  • 这是一个合理的模型,所以我会选择 Neo4j。将您的 string_block_size 调整为适合您的常见用例(字符串大小)的大小是明智的。
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 2023-04-02
  • 2023-01-01
相关资源
最近更新 更多