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 индексов и удалить индекс.