Какова емкость TinkerGraph на сервере gremlin?

Я запустил сеанс сервера gremlin для графа мастеров.

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

Во время сеанса я создал много вершин и ребер. В тот момент, когда я достиг 180 тысяч вершин и 350 тысяч ребер, сервер показал низкую производительность. Он не мог выполнить простой запрос, например, :> g.V(999).values('name').

Более того, когда я закрыл сервер, он не смог успешно записать содержимое в graphLocation=data/db.kryo, как определено выше. Итак, я потерял всю информацию о созданных на данный момент 180k вершинах и 350k ребрах.

Мне интересно узнать о мощности сервера TinkerGraph и gremlin:

  • Сколько ребер, вершин и размеров графа он может обработать?
  • Есть ли способ избежать потери данных при закрытии сервера и записи содержимого в файл?
  • Стоит ли использовать график не в памяти? Например, neo4j.

person Đỗ Công Bằng    schedule 17.06.2018    source источник


Ответы (1)


Сколько ребер, вершин и размеров графа он может обработать?

TinkerGraph ограничен только памятью, которую вы ему даете. Вы можете управлять этой памятью, увеличив значение параметра -Xmx JVM. Если ваш график размещен на сервере Gremlin и вы не изменили его -Xmx настройку, то неудивительно, что вы начали замечать некоторые проблемы с производительностью, так как Gremlin Server по умолчанию имеет довольно низкое начальное значение 512m - показано здесь.

Есть ли способ избежать потери данных при закрытии сервера и записи содержимого в файл?

Потеря данных могла быть связана с проблемами с памятью, которые у вас были. Сложно сказать. Стоит отметить, что сброс на диск, который TinkerGraph выполняет при закрытии, может столкнуться с проблемами, чем больше становится график, а это означает, что чем больше становится график, тем больше времени потребуется для записи всего этого на диск, тем больше шансов, что что-то будет пошли не так во время этой записи (т. е. сбой питания).

Стоит ли рассматривать использование графика не в памяти? Например, neo4j.

Это зависит от вашей ситуации. Если вы один раз загружаете график, который не часто меняется, и просто проводите анализ, то TinkerGraph, вероятно, является лучшим решением по сравнению с любым другим графом с поддержкой TinkerPop. С другой стороны, если у вас есть транзакционная рабочая нагрузка, при которой график постоянно меняется (как в бэкэнде для какого-то приложения), вам, вероятно, понадобится граф, который может сбрасываться на диск в конце каждой транзакции, например Neo4j, JanusGraph и др.

Независимо от того, какой график вы выберете, обязательно выделите соответствующее количество -Xmx серверу Gremlin, чтобы он мог выполнять свою работу надлежащим образом.

person stephen mallette    schedule 17.06.2018