Не слишком сложно: я хочу подсчитать края каждого документа и сохранить номер в документе. Я придумал два запроса, которые работают; к сожалению, поскольку у меня есть миллионы ребер, они довольно медленные. Есть ли более быстрый способ обновления документов с сохранением их количества ребер? (Только подсчет в определенный момент времени)Быстрое добавление края к документу в ArangoDB
AQL запросы, которые являются функциональными, но медленно:
FOR doc IN Documents
LET inEdgesCount = LENGTH(GRAPH_NEIGHBORS('edgeGraph', doc,{direction: 'inbound', maxDepth:1})
LET outEdgesCount = LENGTH(GRAPH_NEIGHBORS('edgeGraph', doc,{direction: 'outbound', maxDepth:1})
UPDATE doc WITH {inEdgesCount: inEdgesCount, outEdgesCount: outEdgesCount} In Documents
или:
FOR e IN Edges
COLLECT docId = e._to WITH COUNT INTO counter
UPDATE SPLIT(docId,'/')[1] WITH {inEdgeCount: counter}
(а затем повторить для исходящих ребер)
Как в стороне, есть ли способ просмотреть скорость запроса (например, для выполнения в секунду) или процентное значение п? Я пытался судить о скорости, используя LIMITed-запросы для начала, но требуемое время, похоже, не масштабируется линейно.
Я в конечном итоге «решение» это, освобождая некоторое пространство и перемещение базы данных к моему SSD. – ropeladder