Где создать граф знаний и попробовать графовые алгоритмы для решения бизнес-задач: смотрим варианты запуска графовой СУБД на примере Neo4j.
4 варианта запуска Neo4j
Neo4j является ярким представителем нереляционных СУБД и относится к категории графовых баз. Она поддерживает специализированные алгоритмы работы с графами, включая поиск путей, выявление сообществ, анализ связей и т.д. Эти графовые алгоритмы сгруппированы в специализированные библиотеки. В частности, библиотека Graph Data Science, о которой мы писали здесь, проецирует исходный граф в память и работает с ним, позволяя использовать множество готовых методов вместо разработки своего кода на внутреннем языке запросов Cypher. Также есть библиотека APOC с более чем 450 стандартных процедур, предоставляющих функциональные возможности для утилит, преобразований, обновления графов и пр.
Однако, эти библиотеки поддерживаются не во всех вариантах Neo4j. Чтобы поработать с этой графовой СУБД, можно воспользоваться одной из следующих альтернатив:
- Открытая песочница-консоль по адресу https://console.neo4j.org/, которая поддерживает не все функции Cypher и не включает методы вышеупомянутых библиотек Graph Data Science и APOC. Это отличный вариант для первого знакомства с графовыми СУБД на примере небольших pet-проектов.
- Развертывание на локальном компьютере. С этим вариантом Data Scientist имеет намного больше возможностей: можно установить дополнительные библиотеки, драйверы, интеграции с внешними системами и другие полезные инструменты. Дистрибутивы доступны для скачивания на официальном сайте продукта. Корпоративная версия Neo4j Enterprise Edition включает библиотеки APOC, Bloom, Graph Data Science. Также есть версия сообщества (Community addition) для распределенного использования и локальная (Desktop).
- Облачный сервис AuraDB. Если не хочется самостоятельно разворачивать Neo4j, можно воспользоваться облачным сервисом, который называется AuraDB. Тарифная политика включает вариант бесплатного использования. Также есть планы для коммерческих запусков, которые обеспечивают не только повышенную надежность аналитических приложений, но и включают специализированные графовые библиотеки.
- Еще один облачный сервис AuraDS — полностью управляемый механизм графовой аналитики и машинного обучения. Помимо возможностей AuraDB, этот вариант включает множество вариантов использования графовой аналитики больших данных, включая преднастроенные механизмы рекомендаций, обнаружение аномалий и мошенничества, оптимизация маршрутов, анализ клиентов и пр. В отличие от AuraDB, этот сервис не предоставляет вариантов бесплатного использования. Например, облачный инстанс на 100 узлов и 1000 связей с неуказанными в явном виде библиотеками, потребляющий 8 ГБ памяти, 2 ЦП и 16 ГБ для хранения данных, будет стоить $1 в час.
Чтобы резюмировать сходства и отличия этих альтернатив, сравним их по основным функциональным возможностям и удобству использования.
Критерий |
Альтернатива |
|||
Консоль |
AuraDB |
AuraDS |
Локальная установка |
|
Описание |
Простая веб-консоль |
Бессерверная облачная СУБД |
Бессерверная облачная СУБД с ML и множеством алгоритмов |
Развертывание дистрибутива на своем локальном компьютере или собственном сервере |
URL-адрес |
||||
Возможности |
Только запросы Cypher, но и то не все функции |
Cypher-запросы (почти все функции) с возможностью использования методов библиотек GDS и APOC в платных тарифах |
Множество встроенных алгоритмов графовой аналитики и машинного обучения, включая методы библиотек GDS и APOC |
Можно настроить под себя, установив нужные библиотеки, драйверы и коннекторы |
Визуализация |
Граф, таблицы вывода |
Граф, таблицы вывода |
Граф, таблицы вывода |
Граф, таблицы вывода |
Стоимость |
Бесплатно |
Есть бесплатный тариф с минимальным набором функций, коммерческие тарифы с большим набором возможностей |
Только коммерческое использование, стоимость зависит от потребляемых мощностей в час |
Бесплатно |
Достоинства |
Бесплатно, без регистрации. Наглядная визуализация результатов Cypher-запросов в таблицах |
Сохраняет граф и запросы, позволяет импортировать данные из файла. Поддерживает почти все Cypher-функции, отлично визуализирует |
Мощная поддержка графовых алгоритмов и функций ML |
Можно полностью настроить под свои задачи |
Недостатки |
Неудобная визуализация графа, нет поддержки функций работы с файлами, графовые алгоритмов, геоданных |
Необходима регистрация и создание своего облачного инстанса. Бесплатный тариф не поддерживает специфические графовые алгоритмы |
Нет бесплатного тарифа. |
Придется затратить время и силы на установку и настройку |
Варианты использования |
Знакомство с Neo4j, быстрое тестирование гипотез |
Подходит для создания полноценных аналитических приложений на графах в Neo4j |
Надежные и сложные аналитические приложения с графовой аналитикой и ML |
Знакомство с Neo4j, разработка аналитических приложений |
Графовые алгоритмы. Бизнес-приложения
Код курса
GRAF
Ближайшая дата курса
по запросу
Продолжительность
24 ак.часов
Стоимость обучения
54 000 руб.
Сравнение веб-консоли Neo4j с AuraDB
Если сравнивать AuraDB с веб-консолью, они очень похожи. Однако, веб-консоль https://console.neo4j.org/ имеет намного меньше возможностей. По сути, это просто средство визуализации графа и запросов к ним. Результаты представляются в табличном виде. Например, я модифицировала скрипт из прошлой статьи и создала простой граф с локациями магазинов и складов, расстояния между которыми можно пройти пешком или на машине за разное время. Cypher-запрос для этого выглядит так:
CREATE (A:Store { name: "A" }) CREATE (B:Shop { name: "B" }) CREATE (C:Store { name: "C" }) CREATE (D:Store { name: "D" }) CREATE (E:Shop { name: "E" }) CREATE (F:Store { name: "F" }) CREATE (G:Store { name: "G" }) CREATE (H:Shop { name: "H" }) CREATE (I:Shop { name: "I" }) CREATE (A)-[:distance { km: 5 }]->(B), (B)-[:distance { km: 10 }]->(C), (C)-[:distance { km: 12 }]->(I), (A)-[:distance { km: 35 }]->(D), (D)-[:distance { km: 18 }]->(E), (D)-[:distance { km: 7 }]->(B), (E)-[:distance { km: 10 }]->(I), (A)-[:distance { km: 5 }]->(F), (F)-[:distance { km: 3 }]->(G), (F)-[:distance { km: 6 }]->(E), (G)-[:distance { km: 20 }]->(H), (H)-[:distance { km: 30 }]->(I), (A)-[:On_Foot { time: 60 }]->(B), (B)-[:On_Foot { time: 120 }]->(C), (C)-[:On_Foot { time: 170 }]->(I), (C)-[:By_Car { time: 70 }]->(I), (A)-[:By_Car { time: 35 }]->(D), (D)-[:On_Foot { time: 120 }]->(E), (D)-[:On_Foot { time: 90 }]->(B), (D)-[:By_Car { time: 25 }]->(B), (D)-[:By_Car { time: 35 }]->(E), (E)-[:By_Car { time: 15 }]->(I), (A)-[:By_Car { time: 2 }]->(F), (F)-[:On_Foot { time: 60 }]->(G), (F)-[:On_Foot { time: 70 }]->(E), (F)-[:By_Car { time: 10 }]->(E), (G)-[:By_Car { time: 30 }]->(H), (G)-[:On_Foot { time: 240 }]->(H), (H)-[:By_Car { time: 40 }]->(I)
Для вычисления кратчайшего пути пришлось написать Cypher-запрос, т.к. консоль не поддерживает методы библиотеки Graph Data Science:
MATCH (from:Store { name:"A" }), (to:Shop { name: "I"}) , path = (from)-[*]->(to) RETURN distinct nodes(path) AS shortestPath, length(path), min(reduce(km = 0, r in relationships(path) | km+r.km)) AS totalDistance, min(reduce(time = 0, r in relationships(path) | time+r.time)) AS totalTime ORDER BY length(path), totalTime, totalDistance
Результаты работы в консоли выглядят так:
Графовые алгоритмы. Бизнес-приложения
Код курса
GRAF
Ближайшая дата курса
по запросу
Продолжительность
24 ак.часов
Стоимость обучения
54 000 руб.
Аналогичные запросы в AuraDB смотрятся более понятно:
Визуальное отображение узлов и связей в AuraDB позволяет сэкономить время на ручное описание некоторых запросов: достаточно кликнуть по интересующим меткам узла или свойствам связи: среда построит запрос и результаты его выполнения автоматически. В заключение отмечу, пожалуй, самое важное с точки зрения практического использования, пользовательский инстанс AuraDB представляет собой полноценную базу данных, которая хранит созданные исследователем графы и Cypher-запросы, а веб-консоль – нет. Как подключиться к Neo4j, развернутой в AuraDB, чтобы создать граф знаний и опрашивать его с помощью Python-скрипта, читайте в нашей новой статье.
Графовые алгоритмы. Бизнес-приложения
Код курса
GRAF
Ближайшая дата курса
по запросу
Продолжительность
24 ак.часов
Стоимость обучения
54 000 руб.
Освойте лучшие практики применения графовых алгоритмов и инструментальные средства работы с ними в реальных проектах аналитики больших данных на специализированных курсах нашего лицензированного учебного центра обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники
- https://console.neo4j.org/
- https://neo4j.com/download/
- https://neo4j.com/cloud/platform/aura-graph-database/
- https://neo4j.com/cloud/platform/aura-graph-data-science/
- https://github.com/AnnaVichugova/DataBases/blob/main/Graph_Neo4j
- https://github.com/AnnaVichugova/DataBases/blob/main/Neo4j_shortest_path