Есть ли у neo4j хранимые процедуры? Как анализировать полученную выборку?
Есть запрос, при выполнении которого мы получаем список наборов вершин (этот список может быть очень большим — миллион, миллиард ...)
Эту выборку необходимо проанализировать.
В этой выборке нужно в цикле, с каждым набором вершин, проводить определенные вычисления, и записывать их в определенные переменные (которые могут создаваться динамически, в процессе цикла). Вообщем, могут выполняться в цикле обычные "программистские" операции.
Результатом будет набор этих самых вычисленных переменных.
Как такое можно реализовать на neo4j? Есть ли у neo4j хранимые функции, позволяющие это сделать?
Вероятно, операции анализа лучше делать в другой системе? Если да, то в какой?
PS. Выборка создается из не очень большого набора данных (несколько миллионов вершин), на в результате запроса может получиться очень много данных, поэтому здесь могут помочь еще и советы из bigdata
Да, это видел, но насколько я понимаю, под процедурой здесь понимается просто оболочка над запросом (плюс/минус), а мне нужны ветвления if-else, циклы for, создание переменных, массивы.
Есть ли это в neo4j? Т.е., например, в postgresql или mysql это все можно делать в процедурах/функциях
Сергей Горностаев, подскажите, есть ли возможность в этих хранимых процедурах обрабатывать запрос по мере нахождения наборов?
Т.е. цикл по запросу, чтобы мы не получали сразу всю выборку запроса (она очень большая может быть, и выходит, съедает много памяти) и потом ее обрабатывали, а постепенно обрабатывали найденные строки (т.е. единовременно в памяти будет содержаться только одна строка выборки).
Результат процедуры будет гораздо меньше объема первоначальной выборки
В документации по процедурам не нашел подобного.
Вот пример: https://neo4j.com/docs/java-reference/current/exte...
Т.е. указанным в примере способом, как я понимаю, мы можем получить только сразу всю выборку и затем ее обрабатывать, а это занимает очень много памяти
koliane, мне не доводилось их использовать, но результаты запроса возвращаются в виде итератора, лениво читающего курсор, на сколько я понимаю. Соответственно, всё разом в память не загружается.