Когда связи важнее строк: задачи для графовых баз, различия Neo4j и TigerGraph и критерии, по которым стоит оценивать пилот.
Большинство корпоративных данных хранится в таблицах, и это правильно. Продажи, остатки, платежи и справочники удобно описываются строками, колонками и ключами. Проблема начинается тогда, когда ответ зависит не столько от свойств отдельного объекта, сколько от цепочки связей между объектами.
Кто фактически контролирует группу контрагентов? Через какие компании и контакты распространяется риск? Какие товары покупают вместе не напрямую, а через похожие маршруты? Почему один отказ поставщика затрагивает несколько производственных площадок? На такие вопросы можно отвечать SQL-запросами. Но по мере роста числа переходов запросы усложняются, а модель становится труднее обсуждать с бизнесом.
Графовая база хранит узлы, связи и их свойства как основные элементы модели. В Neo4j это property graph: узлами могут быть компании, люди, договоры и товары, а связями — владение, работа, поставка или участие в сделке. В реляционной модели связь обычно восстанавливается через внешние ключи и промежуточные таблицы; в графовой она доступна для обхода напрямую.
Граф нужен не из-за моды, а из-за вопроса
Переход на граф оправдан, если аналитическая задача регулярно использует несколько типов связей и глубину больше одного шага. Типичные классы задач таковы:
- поиск связанных контрагентов и бенефициаров;
- выявление мошеннических колец и нетипичных цепочек операций;
- рекомендации товаров, контента или следующего действия;
- анализ зависимостей в цепочке поставок;
- управление знаниями и происхождением данных;
- поиск маршрутов и распространения влияния;
- разрешение сущностей, когда записи из разных систем относятся к одному объекту.
Если задача сводится к сумме продаж по регионам или отчету о дебиторской задолженности, граф почти наверняка будет лишним. Хорошая реляционная модель, витрина и BI-инструмент решат ее дешевле. Графовая база не заменяет хранилище по умолчанию; чаще она становится специализированным слоем для связанных данных.
Как выглядит запрос
Cypher, язык запросов Neo4j, описывает шаблон связей. Например, выражение вида \`(Компания)-[:ПОСТАВЛЯЕТ]->(Завод)\` читается почти как схема на доске. Текущая документация Neo4j называет Cypher декларативным и совместимым с GQL. Международный стандарт ISO/IEC 39075:2024 определяет синтаксис и семантику языка GQL для property graphs и создает основу переносимости между реализациями.
Стандарт не делает продукты одинаковыми. У них различаются архитектура, операционные возможности, языки, алгоритмы и лицензирование. Но появление GQL снижает риск того, что вся предметная модель навсегда останется привязанной к одному синтаксису.
Neo4j: сильная сторона — модель и экосистема
Neo4j — нативная графовая база с ACID-транзакциями, языком Cypher, средствами кластеризации и библиотекой графовых алгоритмов. Ее удобно рассматривать, когда команде важны выразительная модель, понятные запросы и широкий набор материалов и интеграций.
В пилоте Neo4j обычно быстро показывает ценность на задачах поиска путей, соседей, сообществ и центральных узлов. Бизнес-пользователь может увидеть, как сущности связаны, а аналитик — объяснить, по какому пути система пришла к результату. Это особенно полезно в расследованиях и работе со знаниями.
Но визуально убедительный граф еще не является рабочей системой. Нужно проверить качество идентификаторов, дубли, направление и время действия связей. Если две карточки клиента ошибочно склеены, граф уверенно покажет несуществующую сеть.
TigerGraph: акцент на масштабный обход и вычисления
TigerGraph позиционирует GSQL как язык исследования и анализа крупных графов. В версии документации 4.2 запрос GSQL описан как последовательность операций извлечения и вычисления, выполняемых как единая операция. Язык поддерживает обходы, аккумуляторы и процедурную логику; платформа также документирует OpenCypher и средства профилирования запросов.
Такой подход интересен для задач, где алгоритм проходит большой граф, накапливает значения и выполняет несколько шагов вычислений. Но он предъявляет требования к навыкам команды. GSQL ближе к отдельной программной среде, чем к привычному аналитическому SQL. До выбора продукта стоит оценить не только тест производительности, но и стоимость разработки, сопровождения и найма специалистов.
Сравнивать нужно не бренды, а контур решения
Вопрос «Neo4j или TigerGraph» слишком ранний, если не описаны данные и запросы. Мы начинаем с шести параметров.
- Размер графа. Число узлов и связей, темп прироста, объем свойств.
- Форма запросов. Глубина обхода, фильтры, агрегаты, алгоритмы, требования к объяснению.
- Режим работы. Транзакционная проверка в момент операции, пакетная аналитика или исследовательский поиск.
- Скорость обновления. Нужна ли реакция на событие за секунды или достаточно ночной загрузки.
- Интеграции. Источники, потребители, средства оркестрации, BI и машинного обучения.
- Эксплуатация. Доступность, резервное копирование, контроль доступа, наблюдаемость и стоимость лицензии.
После этого формируют несколько репрезентативных запросов. Бенчмарк на искусственном графе мало говорит о реальной задаче, если в нем другая плотность, распределение степеней и доля обновлений.
Главная работа начинается до загрузки
Граф усиливает как полезные связи, так и ошибки исходных данных. В B2B-системах одна организация может фигурировать под несколькими названиями, филиалами и идентификаторами. Контакт меняет работодателя, договор имеет период действия, а группа компаний — сложную структуру контроля.
Поэтому предметная модель должна отвечать на вопросы: что считается одной сущностью, какие связи подтверждены, откуда они получены, когда действуют и насколько им можно доверять. Для каждой связи полезно хранить источник, дату обновления и уровень уверенности. Тогда аналитик сможет отличить официальное владение от предположительной аффилированности.
Без этой работы граф превращается в эффектную визуализацию ошибок. В реляционной базе дубликат портит строку отчета; в графе он может изменить маршруты, центральность и результат алгоритма.
Как провести пилот за четыре шага
Первый шаг — выбрать один вопрос с измеримым результатом. Например, сократить время проверки связности контрагентов с двух часов до пятнадцати минут или найти больше подтвержденных зависимостей в цепочке поставок при том же числе ложных сигналов.
Второй — собрать ограниченный набор данных. Не нужно переносить все хранилище. Достаточно сущностей и связей, необходимых для трех–пяти целевых запросов. Обязательно выделяют контрольную выборку с известными результатами.
Третий — реализовать одинаковую логику в текущем стеке и в графе. Сравнивают не только скорость выполнения, но и время разработки, читаемость, объяснимость и трудоемкость обновления.
Четвертый — проверить эксплуатацию. Как выполняется загрузка, кто видит чувствительные связи, можно ли воспроизвести результат, как отслеживается изменение схемы и что происходит при сбое.
Экономика должна учитывать полную стоимость
Лицензия — лишь часть расходов. В расчет входят очистка и разрешение сущностей, разработка загрузок, обучение команды, мониторинг, резервирование, безопасность и поддержка модели. Если граф решает одну редкую задачу, иногда выгоднее построить периодическую графовую витрину в аналитическом контуре, а не внедрять новую операционную базу.
Есть и обратная ситуация. Когда множество продуктов снова и снова восстанавливают одни и те же связи через сложные join, единый графовый слой может снизить дублирование и дать общую семантику. Решение появляется из карты запросов, а не из сравнительной таблицы функций.
Когда лучше отказаться
Не стоит выбирать графовую базу, если команда не может назвать целевые многосвязные запросы, исходные идентификаторы ненадежны, а обновление связей не имеет владельца. Не нужен граф и тогда, когда задача хорошо решается одной витриной или поисковым индексом.
В Tess Technology мы рассматриваем граф как инструмент для определенного класса решений. Он полезен, когда связи являются объектом анализа, их глубина меняется, а ответ должен сохранять путь доказательства. Для остальных задач таблицы остаются понятным и экономичным выбором.
До промышленного внедрения стоит провести проверку безопасности. Граф часто собирает сведения, которые по отдельности доступны разным подразделениям, а вместе раскрывают чувствительную структуру отношений. Ролевой доступ на уровне базы может оказаться недостаточным: нужно определить, кто вправе видеть конкретные типы узлов, свойства и пути. Для расследований важны журнал запросов и воспроизводимость результата.
Нужен и план обновления модели. Новая связь или тип сущности меняют смысл запросов и алгоритмов. Версионируйте схему, тестовые запросы и контрольные результаты так же, как код. Тогда добавление нового источника не превратит вчерашнюю метрику риска в несопоставимый показатель с прежним названием.
Пилот завершается решением по архитектуре. Граф может стать основной операционной базой, аналитической копией или временной витриной для пакетного расчета. Эти варианты различаются по требованиям к доступности и обновлению. Не называйте эксперимент внедрением, пока не выбран режим эксплуатации, не назначен владелец и не рассчитана стоимость поддержки на год.
Полезно заранее определить и критерий выхода. Если граф не превосходит текущий способ по качеству или совокупным трудозатратам, данные и запросы возвращаются в существующий контур. Это не провал: пилот подтвердил, что новая технология пока не нужна. Гораздо дороже поддерживать отдельную платформу ради демонстрации, которой пользуются несколько раз в квартал.
Источники
- Neo4j: соответствие Cypher стандарту GQL
- TigerGraph: GSQL Language Reference 4.2
- ISO/IEC 39075:2024 — Information technology — Database languages — GQL.



