Tinkerpop3 подключается к удаленному серверу TitanDB

Я пытаюсь получить объект Graph, используя Tinkerpop3 в Java в качестве клиента от уже запущенного сервера TitanDB (я не хочу создавать сервер).

Другими словами, я пытаюсь реализовать такую ​​функцию: public Graph receiveGraph(String serverIp, String graphName);

Я пытался сделать это, как здесь: AWS Lambda + Tinkerpop / Gremlin + TitanDB на EC2 + AWS DynamoDB в облаке

но, как я понимаю, TitanFactory.open() запускает сервер, и я не хочу этого делать - я просто хочу подключиться к существующему серверу.

Документация, а также большинство материалов в Интернете используют графики в памяти для примеров, и я не могу найти один, который показывает, как:

  • создать новый график и сохранить его на удаленном сервере

  • получить существующий график с удаленного сервера

  • обновить такой удаленный график, чтобы после добавления / удаления ребер фиксировать изменения

  • удалить весь график

Я не хочу делать вышеупомянутые вещи через язык Gremlin (строки), но через API Java (TinkerpopBlueprins). Этот парень приближается к тому, что мне нужно: добавить вершины в TitanDB Graph в Java, однако его метод уже принимает Graph в качестве аргумента.

Я видел во многих местах в Интернете, что GraphFactory.open() получает путь к файлу свойств, однако я не видел пример содержимого такого файла, особенно с данными, относящимися к TitanDB, поэтому я бы предпочел использовать объект конфигурации.

Graph graph = GraphFactory.open (новая BaseConfiguration())

говорит, что нет свойства gremlin.graph.

Конфигурация конфигурации = новая BaseConfiguration (); configuration.setProperty ("gremlin.graph", "titan");

Graph graph = GraphFactory.open (конфигурация);

говорит, что GraphFactory не может найти [титан] - Убедитесь, что банка находится в пути к классам

Есть ли статически типизированный конструктор с перечислениями и константами вместо Map, который скажет мне, какие свойства я должен предоставить и каков их тип? Есть ли какой-нибудь проект с открытым исходным кодом, который использует Tinkerpop3 для подключения в качестве клиента к удаленному серверу TitanDB, который я мог бы использовать в качестве примера?

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

1 ответ

Решение

Вот пример программы-драйвера Titan, которая подключается к работающему серверу Titan. https://github.com/pluradj/titan-tp3-driver-example Как вы заметили, Gremlin будет передаваться в виде строки на удаленный сервер Titan.

Если вы не хотите делать это, потому что вы хотите использовать Java API напрямую, вы должны использовать TitanFactory.open() сделать прямую связь с вашим графиком. TitanFactory.open() создает экземпляр TitanGraph, с которым вы можете выполнять вызовы API своего графа. Он не запускает сервер Titan. Под крышками он создает клиентские соединения с внутренним хранилищем и индексом.

Вы можете обратиться к этому примеру для программы Titan Java без сервера Titan https://github.com/pluradj/titan-tp3-java-example

Вы можете настроить это, используя файл свойств (здесь приведен пример конфигурации с использованием Cassandra и Elasticsearch) или создав Configuration Объект через код (в основном устанавливаются те же пары ключ-значение, что и в файле свойств).

  • Если граф не существует до вашего первоначального подключения, Titan создаст пространство ключей графа в Cassandra и проиндексирует в Elasticsearch.

  • Запишите storage.hostname а также index.search.hostname так как это ваши кластеры Cassandra и Elasticsearch соответственно. По сути, это ваш "сервер графов". Вам не нужен отдельный работающий сервер Titan.

  • У Titan нет API для удаления графика из внутреннего хранилища. Чтобы удалить весь график, вам необходимо подключиться к Cassandra через драйвер клиента Java и выполнить API для удаления пространства ключей. Точно так же вам нужно будет подключиться к Elasticsearch через его API индексов и удалить индекс.

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