Подтвердите свои транзакции
Вы используете JanusGraph прямо сейчас , встроенную в приложение в виде библиотеки , которая дает вам доступ к полному API JanusGraph. Это означает, что вам нужно самостоятельно управлять транзакциями , что также включает необходимость фиксировать ваши транзакции, чтобы сохранить ваши изменения в графике.
Вы можете просто сделать это, вызвав:
g.tx().commit();
после того, как вы итерировали свой обход с модификациями (addV()
обход в вашем случае).
Без фиксации изменения доступны только локально в вашей транзакции. При перезапуске Docker контейнера (ов) все данные будут потеряны, поскольку вы их еще не зафиксировали.
Рекомендуемый подход: подключение через удаленное соединение
Если у вас нет Это хорошая причина для встраивания JanusGraph в виде библиотеки в ваше приложение JVM, затем рекомендуется развернуть его независимо как JanusGraph Server, на который вы можете отправлять свои обходы для выполнения. Это дает преимущество в том, что вы можете масштабировать JanusGraph независимо от вашего приложения, а также в том, что вы можете использовать его не на языках JVM.
JanusGraph Server также прозрачно управляет транзакциями для вас, выполняя каждый обход в своей собственной транзакции. Если прохождение успешно, то результаты фиксируются и автоматически откатываются при возникновении исключения.
Документы JanusGraph содержат раздел о , как подключиться к серверу JanusGraph с Java но важной частью является этот код для создания источника обхода графа g
, подключенного к вашему серверу (-ам) JanusGraph:
Graph graph = EmptyGraph.instance();
GraphTraversalSource g = graph.traversal().withRemote("conf/remote-graph.properties");
Конечно же, вы можете запустить JanusGraph Server также как контейнер Docker:
docker run --rm janusgraph/janusgraph:latest
Дополнительную информацию об изображении JanusGraph Docker и о том, как его можно настроить для подключения к бэкэнду Cassandra, можно найти здесь .
Часть ниже не имеет прямого отношения к этому вопросу, учитывая комментарии к моей первой версии ответа. Я все еще оставляю это здесь на тот случай, если у других возникнут аналогичные проблемы, в которых это может быть причиной.
Постоянное хранилище с Docker Контейнеры
JanusGraph сохраняет данные в вашем бэкэнд хранения, который Кассандра в вашем случае. Это означает, что вы должны убедиться, что Кассандра сохраняет данные. Если вы запускаете Cassandra в контейнере Docker, вам нужно смонтировать том, где Cassandra хранит данные, чтобы сохранить их после перезапуска контейнера. В противном случае данные будут потеряны, как только вы остановите контейнер Cassandra.
Для этого вы можете запустить контейнер Cassandra, например, так:
docker run -v /my/own/datadir:/var/lib/cassandra -d cassandra
, где /my/own/datadir
- это каталог вашей хост-системы, где вы хотите хранить данные Cassandra. Это объясняется в документах официальной Кассандры Docker image под Предостережениями > Где хранить данные .