Свои исследования в данной области в интересах наших клиентов мы начали проводить примерно с 2015-2016 годов. Нашими целями были определение long-листа систем графового анализа, оценка их по широкому набору критериев и выделение short-листа для дальнейших испытаний в типовых задачах, решаемых системами такого класса.
В области нашего интереса были следующие решения:
- Neo4j
- Titan
- JanusGraph (Развитие Titan)
- Orient DB
- Arango DB
- Datastax
- Infinite Graph
- SAS SocialNetwork Analysis
- GraphLab
- GraphBase
- HypergraphDB
- SNAP
- Apache Spark GraphX
- Stardog
- IBM System G
Претенденты оценивались по следующим критериям:
- Тип графа
- Поддержка языков запроса
- Реализованные методы
- PageRank
- Clique Search
- Shortest Path
- Shortest Path на подграфе
- Получение смежных вершин
- API
- Интеграция со сторонними инструментами визуализации
- Максимальный размер графа (Вершин х Ребер)
- Поиск по внешнему идентификатору
- Масштабируемость
- Хранимые пользовательские функции
- Атрибутика вершин и ребер
- Возможность создания сессионного графа
- Возможность сохранения локального графа в разрезе пользователя/Sandbox
- Поддержка направлений связей графа
- Поддержка ролевой модели
- Высокая доступность (HA) “из коробки”
- Встроенные инструменты визуализации
- Интерфейс администрирования
- Интерфейс пользователя-аналитика
- Вариативность версий, отличия, стоимость, поддержка
- Наличие прямой поддержки поставщика ПО в случае необходимости
- Зрелость, развитие продукта и наличие внятного roadmap’а
- Наличие community версии и ее ограничения относительно enterprise
- Стоимость лицензий или подписки в случае покупки
- Наличие и развитость сообщества
- Наличие поддержки/Партнера в РФ
- Известные проблемы, особенности, и ограничения
Не будем вдаваться в подробности детального взвешивания, но на тот момент некое представление о состоянии рынка систем графового анализа мы получили и решили продолжать наблюдение, не выделяя каких-либо фаворитов.
Сразу отметим, что сам по себе анализ окружения можно реализовать традиционными реляционными системами вроде Oracle или Postgres, которые поддерживают рекурсивные запросы. На небольших объемах данных, для проверки гипотезы о целесообразности применения графового анализа и определения потенциальной экономической выгоды, в случае, когда время отклика не является критическим, мы всем клиентам рекомендуем использовать именно РСУБД. Пробуем на небольшом сегменте, понимаем достигнем ли целевых показателей, и принимаем (или не принимаем) решение о старте целевого проекта, который часто требует значительных инвестиций на старте. В случаях, когда речь идет о сотнях миллионов вершин и связей и быстром времени отклика, когда необходимо делать онлайн-интеграции, достраивать геометрию графа в реальном времени, без специализированного движка не обойтись.
Спустя некоторое время с 2018 года один из крупнейших финансовых системообразующих банков обратился к нам с предложением разработать и внедрить у себя систему графового анализа, но предварительно провести предпроект, чтобы выбрать движок и проработать архитектуру. Ничего не оставалось, кроме как взвесить опять весь "зоопарк" систем, определить основных претендентов на “престол”, провести нагрузочные испытания, разработать и защитить целевую архитектуру и наконец выполнить само внедрение системы.
Критерии оценки мы не пересматривали, а освежили веса по состоянию каждого продукта на тот момент времени и проверили, не появилось ли чего-то нового на горизонте.
Общие выводы получились следующие:
Ни одна система не обладает достойным функционалом пользовательского графического интерфейса “из коробки”. Эту задачу нужно решать самостоятельно.
В части GUI-интерфейса администрирования встречаются вполне интересные и зрелые решения, закрывающие большинство требований.
Некоторые популярные системы имеют сильно урезанный функционал в так называемой бесплатной community edition, который, как правило, востребован со стороны заказчика.
Важным критерием является чисто субъективная история “удобства пользования”. Некоторые системы имеют свои аналитические языки запросов, которые более понятны неподготовленным пользователям и в особенности пользователям, ранее работавшим только с SQL.
Двухлетний интервал между исследованиями показал, что некоторые системы успели умереть, другие непонятно куда и как плывут и не имеют четкого roadmap или он “управляется” сообществом со всеми вытекающими минусами такого подхода.
По результатам взвешивания в наш short list попали следующие претенденты:
- Orient DB;
- Arango DB;
- JanusGraph.
Дальше нас ждали тесты производительности в типовых графовых алгоритмах и загрузки и подготовки данных (индексирование) к запросам. Для этих целей были подготовлены стенды с одинаковым набором данных.