Можно ли открывать транзакции в OrientDB через сервер gremlin?

Посмотрев исходный код java библиотеки orientdb-gremlin, я заметил, что это всего лишь оболочка, которая получает команды gremlin и переводит их в SQL-запросы orientdb.

Я пытаюсь использовать gremlin с orientdb в javascript (NodeJs) и для этого я использую gremlin JS библиотека. Я могу нормально подключиться к серверу gremlin (я использую тот, который поставляется с OrientDB 3.0.14), но я пока не могу заставить транзакции работать по двум причинам: 1) gremlin Библиотека js не имеет метода tx() в объекте Graph. 2) Я подумал: "Я могу добавить его туда, но сначала посмотрим в консоли gremlin, поддерживает ли OrientDB открытие транзакции с сервера gremlin". Так что попытка с консоли gremlin тоже не работает (помните, что я не хочу использовать orientdb-gremlin плагин, как в javascript, я не смогу его использовать):

gremlin> :remote connect tinkerpop.server conf/remote-secure.yaml
gremlin> :> g.tx().open()
gremlin> :> g.tx().isOpen()

Эта последняя команда приводит к false, так что транзакция не открыта.

Есть ли способ охватить транзакцию OrientDB 3.0.14 через сервер gremlin?

1 ответ

Решение

Если предположить, orientdb-gremlin опоры g.tx() (действительно graph.tx() который называется g.tx() - то есть Graph экземпляр должен поддерживать его), тогда единственный способ использовать транзакцию из javascript - это если вы отправляете скрипты на основе строк в Gremlin Server и делаете это через сеанс. Я думаю, что это потенциально, почему вы не видите isOpen() вернуть true подключившись к серверу без сеанса, вы можете изменить это, выполнив:

:remote connect tinkerpop.server conf/remote.yaml session

что обсуждается здесь.

Отправка скриптов на основе строк не является рекомендуемым способом взаимодействия с Gremlin Server. Это гораздо лучший опыт разработки - просто "писать Gremlin" на своем родном языке программирования, а не встраивать Gremlin в строки. Я бы пересмотрел этот подход, если вы можете и постараться не полагаться на графические транзакции. Они делают ваш код гораздо менее переносимым.

Другие вопросы по тегам