Подключение к AWS Neptune с помощью Gremlin GraphFactory

Примеры в документации AWS покажите, как подключиться к AWS Neptune с помощью Gremlin следующим образом:

Cluster.Builder builder = Cluster.build();
builder.addContactPoint("your-neptune-endpoint");
builder.port(8182);
builder.enableSsl(true);
builder.keyCertChainFile("SFSRootCAG2.pem");

Cluster cluster = builder.create();

GraphTraversalSource g = EmptyGraph.instance().traversal().withRemote(DriverRemoteConnection.using(cluster));

Однако мой текущий код для подключения к общему графу Гремлина выглядит так:

Configuration conf = new PropertiesConfiguration(...);
...    //Set configuration
Graph graph = GraphFactory.open(conf);

Кто-нибудь знает, как использовать этот второй подход с GraphFactory для подключения к Neptune? Мне нигде не удалось найти никаких примеров.


person James Baker    schedule 09.01.2019    source источник


Ответы (1)


Нептун не предоставляет экземпляр Graph, поскольку Gremlin выполняется удаленно, а не локально. GraphFactory действительно только для ситуаций, когда у вас есть Graph экземпляр, который вы хотите создать. Раньше был RemoteGraph, который позволял это (хотя до сих пор используется в наборе тестов TinkerPop), но от этого подхода давно отказались и больше не рекомендуется.

Первоначально представленный вами метод подключения к удаленным поставщикам Gremlin, таким как Neptune, является рекомендуемым способом установки GraphTraversalSource. Однако стоит отметить, что начиная с версии 3.3.5 предпочтительный метод избавляется от EmptyGraph и позволяет создавать экземпляры GraphTraversalSource анонимно следующим образом:

import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal;

GraphTraversalSource g = traversal().withRemote('conf/remote-graph.properties');

Есть и другие перегрузки для withRemote(), которые тоже должны быть вам знакомы.

person stephen mallette    schedule 09.01.2019
comment
Одна из причин, по которой мы использовали Graph, заключается в том, что мы хотели читать файлы GraphML (например, graph.io(IoCore.graphml()).reader().batchSize(batchSize).create().readGraph(inputStream, graph);). Возможно ли это с GraphTraversalSource? - person James Baker; 09.01.2019
comment
это по состоянию на 3.4.0, но это только что официально выпущено сегодня, и я почти уверен, что Нептун еще не принял синтаксис. подробнее о новом шаге g.io() можно узнать здесь: tinkerpop.apache. org / docs / 3.4.0 / reference / # io-step Если вам нужно прочитать файл GraphML для Нептуна, я думаю, что я бы предложил прочитать его в TinkerGraph, а затем скопировать эти данные в Нептун с помощью сценария. - person stephen mallette; 09.01.2019