У меня есть большой граф (1 068 029 узлов и 2 602 897 отношений), и я работаю с ним через python API и делаю запросы к графу в потоке моей программы.
У меня есть следующие запросы:
Первый запрос
MATCH
(start_node)--(o:observed_data)--(i:indicator)--(m:malware)--(end_node:attack_pattern)
WHERE start_node.id in [id_list]
RETURN start_node.id, end_node.name
Второй запрос
MATCH
(start_node)--(o1:observed_data)--(h:MD5)--(o2:observed_data)--(i:indicator)--(m:malware)--(end_node:attack_pattern)
WHERE start_node.id in [id_list]
RETURN start_node.id, end_node.name
Когда я пытаюсь выполнить предварительный запрос с id_list размером 75000, он проходит нормально и возвращает желаемый результат, но когда я пытаюсь выполнить второй запрос - график застревает, даже когда я уменьшаю id_list до 20000.
id_list даже больше 75000, но я разбил его на куски, чтобы получить ответ графика время быстрее, но если я разделю его на слишком много частей, я увеличу количество запросов к графику и увеличу время выполнения программы.
Мой вопрос - есть ли какая-то функция библиотеки (APO C или что-то в этом роде), который выполняет то же действие, но за меньшее время? Или, может быть, у вас есть другое решение, которое решает эту проблему без уменьшения id_list до 50 000?