Tinkerpop3 генератор пользовательских краев - PullRequest
0 голосов
/ 15 ноября 2018

Я использую TinkerGraph для интеграционных тестов (расширенных модульных тестов) в Java.В этой реализации Edge ids генерируется как последовательность целых чисел.Я хочу изменить это, чтобы они генерировались как случайные UUID.Причина этого заключается в том, чтобы моя тестовая установка работала ближе к моей базе данных рабочих графиков.Могу ли я сделать это в Tinkerpop3, и если да, то как?

Я обнаружил, что в Tinkerpop / blueprints (https://github.com/tinkerpop/blueprints/wiki/id-implementation) существует IdGraph.IdFactory, который, по-видимому, обеспечит то, что мне нужно. Однако какЯ так понимаю, что недоступно для Tinkerpop3.

1 Ответ

0 голосов
/ 28 ноября 2018

Это выглядит возможным, но потребует некоторой работы. Vertex и Edge Ids в TinkerGraph определяются с использованием IDManagers, что делается здесь .

Вы можете видеть, что это решается через значение конфигурации, которое в конечном итоге использует отражение для построения IDManager.

Так что вам нужно будет сделать следующее:

  1. Создайте свой собственный IDManager, реализовав интерфейс , в качестве руководства вы можете использовать менеджер по умолчанию . Например:

    public enum DefaultIdManager implements IdManager {
        ...
        ANY {
            @Override
            public Long getNextId(final TinkerGraph graph) {
                return unique random number
            }
        }
        ...
    }
    
  2. Затем вам нужно будет создать конфигурацию с указанным вашим новым менеджером и создать тинкерграф, используя этот менеджер:

    BaseConfiguration config = new BaseConfiguration();
    config.addProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, "your.package.structure.YourIdManager.ANY");
    TinkerGraph.open(config);
    

Мне бы хотелось узнать, есть ли более простой способ, но я думаю, что это сработает.

Примечание стороны:

Может быть проще проверить, обеспечивает ли ваша БД производственного графа слой в памяти. Я знаю, что это делают несколько графических БД, и лучше использовать их вместо TinkerGraph. TinkerGraph на самом деле предназначен только для того, чтобы обшарить, я верю.

...