#graph #graph-databases #breadth-first-search
#График #графические базы данных #поиск по ширине
Вопрос:
Я знаю о Neo4j, RedisGraph, DGraph, ArangoDB.
Но я не хочу такого тяжелого клиент-серверного приложения. Мне просто нужно загрузить 4 миллиона узлов и 10 миллионов связей и запросить кратчайший путь между 2 узлами. График невзвешенный и не ориентированный.
Я написал код Go, который может выполнять работу в памяти в течение 2 секунд на моем ноутбуке с помощью алгоритма BFS. Но мне не нужно заново изобретать колесо. На самом деле я не могу сделать это за несколько миллисекунд, как, например, Neo4j.
Есть ли для этого проект с открытым исходным кодом?
Комментарии:
1. Вам нужно постоянно хранить график? Возможность обновлять его с течением времени? Или это чисто случайный «одноразовый» расчет, когда достаточно перезагружать график каждый раз?
2. фактически база данных исправлена. Мне не нужно обновлять узлы или ребра. Так что это должно быть постоянным. Или я мог бы загрузить ее в память при запуске.
Ответ №1:
Если все, что вы делаете, это вычисляете двунаправленный кратчайший путь, вам может не понадобиться полная графовая база данных для этого. Я бы предложил взглянуть на существующие библиотеки графов, которые могут быстро загружать ваш график в память и которые имеют встроенные функции для кратчайшего пути. Примерами являются такие вещи, как:
Графическая база данных обеспечит вам постоянство, но потребует компромисса в поддержании базы данных и, возможно, необходимости научиться использовать язык запросов, поддерживаемый этой графической базой данных. Графические базы данных отлично подходят для постоянного обновления графика или выполнения дополнительных пользовательских запросов / поиска путей.