Массовая вставка или обновление свойства вершины с использованием чертежей -OrientDB

Я использую OrientDB 2.1.4 и blueprints-core-2.6.0.

У меня есть требование обновить значения в существующей вершине или создать новую вершину, если она отсутствует. (ожидается 30 тысяч вершин каждые 45 секунд)

Мой класс вершин: Device(Name, Type, ActiveSessionCount) - "Имя" для каждого устройства является уникальной сущностью.

Необходимо обновить ActiveSessionCount на устройстве, если устройство существует, иначе создайте новую вершину устройства.

if (graph.getVertices(keyName, key).iterator().hasNext()) {
    vertex = (OrientVertex) graph.getVertices(keyName, key).iterator().next();
} else {
    vertex = graph.addVertex(className, attributeName, key);
}

Я пытаюсь проверить, существует ли вершина, если вершина уже существует, я выбрал объект Vertex для дальнейшего обновления, иначе создал новый объект Vertex.

Хотя, это работает, выполнение 30k записей занимает пару минут, а мне нужно добиться того же за 45 секунд.

1 ответ

Попробуйте с UPSERT.

UPSERT обновляет запись, если она уже существует, или вставляет новую запись, если она не существует, все в одном выражении.

g.command(new OCommandSQL("update Device set Name='Device 3',Type='Type 3',ActiveSessionCount=3  upsert where Name='Device 3'' "));

С Уважением,

Микела

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