4

我已经为修补图运行了一个 gremlin 服务器会话。

gremlin.graph=org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph
gremlin.tinkergraph.vertexIdManager=LONG
gremlin.tinkergraph.graphLocation=data/db.kryo
gremlin.tinkergraph.graphFormat=gryo

在会话期间,我创建了许多顶点和边。目前,当我达到 180k 顶点和 350k 边时,服务器表现不佳。例如,它无法执行简单的查询:> g.V(999).values('name')

此外,当我关闭服务器时,它并没有成功地将内容写入graphLocation=data/db.kryo,如上所定义。所以我丢失了到目前为止创建的 180k 顶点和 350k 边的所有信息。

我想知道 TinkerGraph 和 gremlin 服务器的容量:

  • 它可以处理多少个图的边、顶点和大小?
  • 有什么办法可以避免在关闭服务器并将内容写入文件时丢失数据?
  • 我应该考虑使用非内存图吗?例如,neo4j。
4

1 回答 1

4

它可以处理多少个图的边、顶点和大小?

TinkerGraph 仅受您提供给它的内存的限制。您可以通过增加-XmxJVM 设置来控制该内存。如果您的图表托管在 Gremlin Server 中并且您没有更改其-Xmx设置,那么您开始在那里看到一些性能问题也就不足为奇了,因为 Gremlin Server 在默认情况下具有相当低的初始值512m-此处显示。

有什么办法可以避免在关闭服务器并将内容写入文件时丢失数据?

数据丢失可能与您遇到的内存问题有关。很难说。值得注意的是,TinkerGraph 在关闭时执行的刷新到磁盘可能会遇到问题,图越大,这意味着,图越大,将整个内容写入磁盘所需的时间越长,某些事情发生的机会就越大在写入期间出错(即电源故障)。

我应该考虑使用非内存图吗?例如,neo4j。

这取决于你的情况。如果您有一次加载一个不经常更改的图表并且只是进行分析,那么 TinkerGraph 可能是与任何其他启用了 TinkerPop 的图表相比的最佳解决方案。另一方面,如果您有一个图形不断变化的事务工作负载(例如在某种应用程序的后端),那么您可能需要一个可以在每个事务结束时刷新到磁盘的图形,例如 Neo4j, JanusGraph 等

无论您选择哪种图表,请务必为-XmxGremlin Server 分配适当数量的 ,以便它可以正常工作。

于 2018-06-17T10:25:27.503 回答