使用大约有一百万个节点和四百万个关系的图需要多少内存



我计划通过Docker运行Memgraph平台。我可以看到空Memgraph的内存占用。我需要导入(我有CSV格式的数据(大约一百万个节点和四百万个关系。

我需要多少内存来存储和处理这么多数据?

Memgraph在其文档中实际上提供了一个公式,您可以通过该公式来估计内存使用情况(尽管它们使用顶点表示节点,使用边表示关系,可能是因为它们的源代码(:

StorageRAMUsage=NumberOfNodes×260B+NumberOfRelationships×180B

在您的情况下:

StorageRAM使用率=4 000 000 x 260B+1 000 000 x 180B

StorageRAM使用率=1 040 000 000B+180 000 000B=1 220 000 000B=~1 191 406KB=~1 1163MB=1,14GB

所以我想你用1 GB的RAM不会很好,但2 GB应该可以。。。这只是一个粗略的估计,因为如果你有节点和关系的属性,以及索引,事情可能会变得有点复杂。

当涉及到一个简单的布尔值时,每个属性至少为2B,但如果该属性是一个大字符串列表(每个大字符串至少占用10B(,则可以快速增长。

对于属性上的每个索引,您将需要比节点或关系标签上的索引更多的内存,因为还需要考虑属性的大小。

此外,每个节点和关系对象都有一个指向Delta对象的指针,该对象存储某个节点或关系上的所有更改,因此更改越多,Delta就越多,所需内存也就越多。

因此,除了节点和关系的数量之外,还有更多的事情需要考虑,但上述公式准确地预测了我导入和查询数据集所需的内存,尽管我觉得需要指出的是,数据集没有很多复杂的属性。下面是公式:

StorageRAMUsage=NumberOfNodes×260B+NumberOfRelationships×180B

我使用粗略估计,您可以在1kB中存储4个节点,在1kB中存储6个关系。您的节点大约需要250 MB,关系大约需要670 MB。因此,有了1GB的RAM来存储数据,你就应该做得很好。

最新更新