NetworkX против GraphDB: они служат аналогичным целям? Когда использовать один или другой и когда использовать их вместе? - PullRequest
1 голос
/ 24 марта 2019

Я пытаюсь понять, должен ли я использовать GraphDB для моего проекта.Я картирую компьютерную сеть и использую NetworkX.Отношения - это физическая или логическая смежность (L2 и L3).В текущем воплощении моя программа сканирует сеть и выводит информацию о смежности в Postgress RDB.Оттуда я использую Python для построения своих графиков с использованием NetworkX.

Я пытаюсь понять, должен ли я изменить свой подход и есть ли какая-то польза от сохранения информации в GaphDB.В Postgress есть AgensGraph, который, кажется, построен поверх Postgress как наложение или дополнение GraphDB.Я еще не знаю, облегчит ли моя установка это сверху.Я едва пережил миграцию с SQLite на Postgress :-) и на SQLAlchemy, так что теперь, даже через 3 месяца, я пересматриваю вещи пока могу (миграция не завершена)

Я мог бы выбрать смесь, ноЯ не уверен, имеет ли смысл использовать GraphDB.Из того, что я понимаю, они имеют преимущества, заключающиеся в том, что им не нужна схема (что очень помогает новичку в БД, таким как я)

Мне также интересно, перекрывают ли NetworkX (Python librayr) и GraphDB какие-либо пути.Насколько я понимаю, эти вещи могут быть полезны для анализа топологии графа, в то время как GraphDB в основном используется для запроса данных, хранящихся в БД.Они перекрываются в любом случае?Можно ли их использовать вместе?

1 Ответ

2 голосов
/ 27 марта 2019

TLDR: Используйте Neo4j или OrientDB для хранения данных и networkx для их обработки (если вам нужны сложные алгоритмы).Это будет лучшим решением.


Я настоятельно не рекомендую использовать GraphDB для ваших целей.GraphDB основан на RDF , который используется для семантической сети и общего хранения знаний.Он не должен использоваться с такими проблемами, как ваша.Есть много графических баз данных, которые подойдут вам намного лучше.Я могу порекомендовать Neo4j (самая популярная графическая база данных, как вы можете видеть; бесплатная, но не с открытым исходным кодом) или OrientDB (самая популярная графическая база данных с открытым исходным кодом).

Я использовал базу данных графиков, когда у меня возникла похожая проблема (но я использовал HP UCMDB , то есть корпоративное программное обеспечение, которое не является бесплатным).Это было НАМНОГО лучше, чем средние реляционные БД.Таким образом, идея использования базы данных графа хороша, и она естественно подходит для такого рода проблем.

Я не уверен, что вам действительно нужно networkx для анализа графа (вы можете использовать языки запросов графа к нему),но если вы хотите, вы можете загрузить данные из вашей БД в networkx с помощью GraphML или некоторыми другими методами (OrientDB аналогичен), чтобы обработать их, используя networkx.

.Небольшой вопрос-ответ в конце:

Насколько я понимаю, NetworkX может сыграть важную роль в анализе топологии графа

Абсолютно верно.

, тогда как GraphDB в основном используется для запроса данных, хранящихся в БД.

Это - база данных.И, да, он в основном используется для запроса данных.

В любом случае они перекрываются?

Они оба о графиках.Конечно, они перекрываются:)

Могут ли они использоваться вместе?

Да, могут.Нет, они не должны использоваться вместе для вашей проблемы.

...