Консоль Gremlin продолжает возвращать ошибку «Соединение с сервером больше не активно» - PullRequest
0 голосов
/ 25 марта 2020

Я пытался выполнить запрос Gremlin, добавив свойство в вершину через консоль Gremlin.

g.V().hasLabel("user").has("status", "valid").property(single, "type", "valid")

Я постоянно получаю эту ошибку: org.apache.tinkerpop.gremlin.jsr223.console.RemoteException: Connection to server is no longer active

Это ошибка возникает после выполнения запроса в течение одной или двух минут.

Я пробовал несколько простых запросов, таких как g.V().limit(10), и он работает нормально. Поскольку число затронутых вершин превышает 4 миллиона, я не уверен, что оно дает сбой из-за проблемы тайм-аута.

Я также попытался разбить его на небольшие партии: g.V().hasLabel("user").has("status", "valid").hasNot("type").limit(200000).property(single, "type", "valid") Это удалось в течение первых нескольких партий и начало сбой. еще раз.

Есть ли рекомендации по обновлению миллионов вершин?

1 Ответ

2 голосов
/ 25 марта 2020

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

Емкость оборудования, на котором работает Gremlin Server, с точки зрения количество процессоров и, что наиболее важно, память, также будет учитываться при настройке значения времени ожидания запроса.

Чтобы сделать это в Gremlin, если у вас был способ легко идентифицировать различные диапазоны вершин, может разделить это на несколько потоков, каждый из которых выполняет обновления. Если пример, который вы показываете, отражает ваши фактические потребности, то это, скорее всего, невозможно в этом случае.

Аналогично, некоторые графические базы данных предоставляют возможность массовой загрузки, которая часто является хорошим способом выполнения больших пакетных обновлений, но, вероятно, нет Опция здесь, так как вам нужно выполнить условное обновление, основанное на анализе текущего присутствия (или отсутствия) свойства.

Без дополнительной информации о вашей модели данных и оборудовании и т. д. c. лучший ответ, вероятно, состоит в том, чтобы сделать две вещи:

  1. Использовать меньшие ограничения. Возможно, сначала попробуйте 5K или даже просто 1K и продолжайте работать до тех пор, пока не найдете надежную точку.
  2. Увеличьте настройки времени ожидания запроса.

Возможно, вам придется поэкспериментировать, чтобы найти приятное место для вашей среды, поскольку возможности оборудования определенно будут играть роль в подобных ситуациях, а также в том, как вы пишете свой запрос.

...