1

考虑一下我的图表中将包含以下内容:

100 Million nodes, More than 1 Billion connections/relationships

Node properties: around 10 properties, mix of int, doubles, strings, HashMaps etc.

Relationship properties: around 10 double values and 2-3 string (with avg 50 chars) values

现在,假设我想通过在每个节点上查询一次邻居来更新所有节点和关系属性值。即说,

step1: search a node, say X, with given Id,
step2: get it's neighbours,
step3: update node properties of X and all relationship properties between X and it's neighbors.

对所有节点重复这 3 个步骤一次。给定以下系统配置,一次更新所有节点需要多少时间(大约时间对我来说是可以的,可能以秒/分钟/小时为单位):

Two dual core processors, 3.0 GHz each, 4*4 GB memory, 250 GB Hard disk space.

上述数据大约需要多少存储空间?

请通过提供任何近似的样本性能(时间和存储)分析来帮助我。任何示例性能分析都将帮助我可视化我的需求。谢谢。

4

1 回答 1

4

节点/关系的大小考虑非常容易。每个节点为 9 个字节,每个关系为 33 个字节。

9B x 100M = 900 Million Bytes =~ 858.3 Megabytes for nodes
33B x 1B = 33 Billion bytes =~ 30.7 Gigabytes for relationships

至于计算,很难衡量。Neo4j 缓存与磁盘上的内容不是一对一的,因此您的存储空间可能约为 31Gb,但您需要更多的存储空间才能将其存储在缓存中。Neo4j 将信息存储在磁盘上的方式对于这种类型的遍历是有效的,因为它们将节点的所有关系和属性存储在链表中,因此通过迭代器访问它们比搜索一种类型的关系更有效。

很难给你一个估计,但我想说,因为你正在经历重复的关系,什么可以放在 RAM 和磁盘上,等等。考虑到你的系统和大小,我的猜测是几个小时(<6Hrs.)要求。

于 2013-02-26T03:07:41.517 回答