Как использовать Neo4j в data engineering проекте: практический пример с Kafka, ClickHouse и Airflow


KonstLof 17 минут назад Объяснить с Как использовать Neo4j в data engineering проекте: практический пример с Kafka, ClickHouse и Airflow Средний 12 мин 289 Data Engineering * Big Data * Визуализация данных * Транспорт...
Will Anthropic have the best AI model at the end of October 2026?
Вот важная новость с фронта ИИ: KonstLof 17 минут назад Объяснить с Как использовать Neo4j в data engineering проекте: практический пример с Kafka, ClickHouse и Airflow Средний 12 мин 289 Data Engineering * Big Data * Визуализация данных * Транспорт Кейс Из песочницы ЦельКогда говорят о Neo4j, чаще всего вспоминают social networks, fraud detection, recommendation systems или knowledge graphs. Но графовая база может быть полезна и внутри обычного data engineering проекта, где уже есть Kafka, аналитическая база типа ClickHouse, DBT, Airflow и BI. Мне было интересно проверить именно этот сценарий:Как встроить Neo4j в современный data stack так, чтобы он не дублировал data warehouse, а решал те задачи, для которых графовая модель действительно удобнее SQL?
В качестве данных я использовал AIS — поток сообщений о движении судов, Но основная тема этой статьи не AIS. Основная тема — место Neo4j в data engineering архитектуре. Исходная архитектураПроект строился вокруг довольно привычного набора компонентов:Data sources ↓ Kafka ↓ ClickHouse ↓ dbt ↓ Airflow ↓ MetabaseClickHouse хранит историю AIS‑событий.
DBT строит аналитические модели. Airflow управляет ежедневными pipeline. Metabase показывает результаты.
На этом этапе возникает естественный вопрос: Зачем здесь еще Neo4j? Ответ заключается в том, что часть данных имеет не только временную, но и сетевую структуру. Например:Vessel ↓ VISITED ↓ Port ↓ CONNECTED_TO ↓ PortА дальше появляются вопросы:какие порты наиболее важны в сети;какие группы портов связаны между собой;какие суда посещали связанные порты;как устроена структура движения между портами;можно ли выделить сообщества внутри сети.
Это уже не просто агрегация по таблице. Архитектура представлена на рисунке ниже. Главное архитектурное решение: Neo4j не заменяет ClickHouseПервое, что я хотел избежать, — попытки использовать Neo4j как универсальную БД.
В проекте обязанности разделены. ClickHouse отвечает за:raw events historical data time series aggregations daily features historical snapshotsNeo4j отвечает за:entities relationships current graph state paths graph topology graph algorithmsТо есть Neo4j не хранит всю историю AIS‑позиций. Полная история остается в raw‑слое ClickHouse — таблице raw.
ais_positions А Neo4j хранит то, что действительно имеет смысл представлять как граф. В текущей архитектуре Neo4j используется как слой текущего графового состояния, а рассчитанные исторические graph snapshots сохраняются обратно в ClickHouse. Для меня это стало главным принципом дизайна:Графовая база данных должна дополнять аналитическую базу данных, а не пытаться ее заменить.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.