gremlin 服务器中 TinkerGraph 的容量是多少?

What is the capacity of TinkerGraph in gremlin server?

我有 运行 一个用于修补程序图的 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 服务器的容量:

How many edges, vertex, and size of a graph can it handle?

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

Is there any way to avoid the loss of data while closing server and writing content to a file?

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

Should I consider using a not in-memory graph? For instance, neo4j.

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

无论您选择哪种图表,请务必为 Gremlin 服务器分配适当数量的 -Xmx,以便它能够正常工作。