Neo4j — это графовая система управления базами данных с открытым исходным кодом, реализованная на языке Java и ориентированная на хранение, моделирование и быстрый доступ к связанным данным. Система использует структуру графа, где данные представлены в виде вершин (узлов) и рёбер (связей) с поддержкой свойств для обоих типов объектов. Neo4j предназначена для приложений, в которых важны явные и многозвенные связи между сущностями, например для рекомендационных систем, обнаружения мошенничества, управления сетями и управления знаниями.
В качестве основного языка запросов Neo4j применяет Cypher — декларативный язык, разработанный для удобного описания паттернов в графовых структурах и извлечения связанных данных. Система реализует транзакционную модель с согласованностью, долговечностью и изоляцией операций, обеспечивая ACID-свойства. Neo4j поддерживает как встроенное (embedded) размещение, так и клиент-серверную архитектуру с сетевыми интерфейсами и драйверами для популярных языков программирования, а также инструменты для визуализации и администрирования графов.
- Модель данных: ноды и рёбра с настраиваемыми свойствами и метками, гибкая схема без жесткой структуры.
- Язык запросов: Cypher — декларативный язык для сопоставления шаблонов графа и выполнения сложных графовых запросов.
- Транзакции и согласованность: поддержка ACID-транзакций, контроль параллелизма и механизмов восстановления.
- Производительность для графовых операций: оптимизированные алгоритмы обхода графа, индексирование и кэширование для эффективного выполнения запросов с множественными степенями связи.
- Интеграция и экосистема: драйверы для Java, JavaScript, Python и других языков, REST/HTTP и бинарные протоколы для взаимодействия клиентов с сервером.
- Инструменты разработки и администрирования: консольные и графические утилиты для выполнения запросов, мониторинга и визуализации графовых данных.
- Расширяемость: возможности написания собственных плагинов и процедур, интеграция с внешними системами аналитики и потоковой обработки.
- Безопасность: механизмы аутентификации, авторизации и разграничения доступа на уровне сущностей и операций.
- Развёртывание: поддержка одиночных серверов и кластерных конфигураций для обеспечения отказоустойчивости и масштабирования чтения/записи.
- Применение: классические сценарии включают построение рекомендаций, анализ социальных сетей, управление зависимостями и обнаружение аномалий в связанных данных.