Gremlin: откатить запрос в случае возникновения исключения - PullRequest
2 голосов
/ 03 мая 2019

Я пытаюсь отправить пакетную операцию для создания нескольких вершин и ребер в одном запросе.

g.addV('os').property('name', 'linux').as('linux').
  addV('os').property('name', 'windows').as('windows').
  addV('os').property('name', 'mac').as('mac').
  addE('competitor').from('linux').to('UNEXISTING OS').      # fail here
  addE('competitor').from('linux').to('windows').
  addE('competitor').from('windows').to('mac').
  addE('competitor').from('linux').to('mac').
  iterate()

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

Спасибо!

1 Ответ

2 голосов
/ 03 мая 2019

Запрос не может быть выполнен в консоли Gremlin с использованием TinkerGraph, согласно документации TinkerPop , транзакции для встроенного объекта TinkerGraph не поддерживаются.

Но, так какКак отметил cygri, AWS Neptune предлагает поддержку транзакций ( см. здесь ), которые могут быть выполнены в форме исходного запроса от OP или путем разделения запросов точкой с запятой (;) или символом новой строки (\ n)

g.addV('os').property('name', 'linux').next();
g.addV('os').property('name', 'windows').next();
g.addE('competitor').from('1101').to('1102')
...