首页 > 解决方案 > 高性能邻居导航

问题描述

我已经使用 neo4j 一段时间了,遇到了性能问题。

我有一种情况,我(基本上)在图形数据库中对元胞自动机进行建模。它不像 GoL 那样简单,需要大量数据,这就是我选择图形数据库的原因。但类似于元胞自动机,节点连接到它们的邻居,并根据邻居的状态计算它们的状态。

因此,我想要一个这样的系统:

TriggerNode --> CalculatesValue --> TriggersEventToNeighbours
ListeningNeighbour --> CalculatesValue --> TriggersEventToTheirNeighbours
ListeningNeighbour --> CalculatesValue --> TriggersEventToTheirNeighbours
ListeningNeighbour --> CalculatesValue --> TriggersEventToTheirNeighbours
...

然而,在 Neo4j 中,使用各种驱动程序,我可以看到我的编程环境和数据库之间通过套接字协议会产生大量的通信开销。

我正在寻找消除这种开销。

是否有一个 Neo4j 驱动程序在运行时没有性能开销node-->relationship-->node?如果没有,是否还有另一个可以以这种方式使用的图形数据库?

标签: neo4jgraph-databases

解决方案


根据组成自动机的连接节点“集群”的大小,您可能需要考虑 InfiniteGraph。

客户端库中的 InfiniteGraph 内核缓存应用程序当前正在使用的数据库数据页。这可能包括数百万个在客户端缓存的节点和边缘。缓存使用最近最少使用的策略来刷新数据库页面,写入已更新的页面。事务提交后,剩余的更新页面被写入,数据库反映所有更改。

从本质上讲,InfiniteGraph 变成了一个内存中的图形数据库,它通过一个大规模可扩展和完全分布式的磁盘后备存储来调整每个用户的使用模式。


推荐阅读