Понимание поведения объединения Гремлин в параллельной среде - PullRequest
0 голосов
/ 21 февраля 2019

Следующий запрос добавляет ребро между двумя вершинами, только если он не существует.

g.V('ea36e68a-70c5-4d38-a038-f5145ed4ced7').as('v').
  V('e3516889-7df0-4cc9-b240-2aa0dba75280').
  coalesce(__.inE('follows').where(outV().as('v')), addE('follows').from('v'))

Мой вопрос: что произойдет, если этот запрос должен был выполняться в условиях высокой степени параллелизма?Будет ли возможность считывания одних и тех же «существующих» критериев и создания нескольких ребер?Я новичок в графических базах данных, и похоже, что нет никаких ограничений уникальности, которые мы могли бы применять, как в SQL.Моя цель - убедиться, что некоторые ребра могут быть созданы только один раз (например, follows или likes).Как мне подойти к этой проблеме?

1 Ответ

0 голосов
/ 22 февраля 2019

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

...