Базы данных

Учебник Графовые базы данных (Neo4j) для начинающих

27 уроков · 8 разделов · бесплатно, без регистрации

Этот курс — глубокое погружение в графовые базы данных на примере Neo4j, самой популярной графовой СУБД. Вы поймёте, когда реляционная модель мучается со связями (рекомендации, друзья друзей, антифрод), как устроена модель property graph, и научитесь писать запросы на Cypher — языке, где запрос выглядит как нарисованный граф. Разберём создание и чтение данных, обходы и пути переменной длины, агрегации, индексы и ограничения, моделирование схемы, типовые задачи, алгоритмы Graph Data Science, импорт и работу из приложения, транзакции и масштабирование. Все примеры — на понятных доменах: соцсеть и фильмы. Отдельно честно обсудим, когда граф не нужен.

Курс «Графовые базы данных (Neo4j)» состоит из 8 разделов и 27 уроков: Зачем нужна графовая база данных, Знакомство с Neo4j и Cypher, Cypher: паттерны и создание данных, Чтение данных: MATCH, WHERE, RETURN, Обходы, пути и агрегации, Изменение данных, индексы и ограничения, Моделирование, типовые задачи и алгоритмы и Интеграция, эксплуатация и границы. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Зачем нужна графовая база данных

    1. Когда таблицы перестают справляться

      Реляционная модель отлично хранит данные, но мучается на глубоких связях. Разбираем, где JOIN-ы превращаются в кошмар.

    2. Задачи, рождённые для графа

      Рекомендации, антифрод, графы знаний, маршруты, IT-инфраструктура — обзор задач, где графовая модель естественна и побеждает.

    3. Граф как модель данных: property graph

      Property graph: узлы, связи, метки и свойства. Базовый словарь графовой модели, на котором строится весь Neo4j и язык Cypher.

  2. 2 Знакомство с Neo4j и Cypher

    1. Что такое Neo4j и как его поставить

      Neo4j — самая популярная графовая СУБД. Архитектура, редакции, установка через Neo4j Desktop, Docker и Aura, первый запуск.

    2. Neo4j Browser: ваша первая графовая консоль

      Neo4j Browser — веб-консоль для Cypher: панель запросов, граф-визуализация, команды :play и :help. Запускаем встроенную базу Movies.

    3. Модель данных Neo4j: метки, типы, направление

      Как Neo4j организует данные: метки узлов, типы связей, направленность рёбер, свойства и идентификаторы. Соглашения именования.

  3. 3 Cypher: паттерны и создание данных

    1. Паттерны Cypher: запрос как рисунок графа

      Главная идея Cypher: ASCII-паттерн (a)-[:REL]->(b) описывает форму графа. Узлы в круглых скобках, связи — в квадратных.

    2. CREATE: создаём узлы и связи

      Команда CREATE в Cypher: добавление узлов с метками и свойствами, создание связей между ними, возврат созданного.

    3. MERGE: идемпотентность и «создать, если нет»

      MERGE в Cypher: найти существующий паттерн или создать новый. ON CREATE / ON MATCH, идемпотентные загрузки и роль ограничений.

  4. 4 Чтение данных: MATCH, WHERE, RETURN

    1. MATCH и RETURN: находим и возвращаем

      MATCH находит паттерны в графе, RETURN формирует ответ. Возврат узлов, свойств, псевдонимы AS, сортировка ORDER BY и LIMIT.

    2. WHERE: фильтрация совпадений

      WHERE в Cypher: фильтры по свойствам, сравнения, IN, диапазоны, проверка существования связей через EXISTS и паттерны.

    3. OPTIONAL MATCH и работа с отсутствием

      OPTIONAL MATCH — графовый аналог LEFT JOIN: вернуть узел, даже если у него нет искомой связи. Обработка null и coalesce.

  5. 5 Обходы, пути и агрегации

    1. Многошаговые обходы по связям

      Переходы по рёбрам в Cypher: цепочки паттернов, обход в обе стороны, многошаговые маршруты «друзья друзей» и коллеги по фильмам.

    2. Пути переменной длины: *1..3

      Обход неизвестной глубины в Cypher: синтаксис *1..3, *, shortestPath. Поиск связей на N шагов, защита от взрыва обхода.

    3. Агрегации: count, collect и неявная группировка

      Агрегатные функции Cypher: count, collect, avg, sum. Неявная группировка без GROUP BY, сбор связанных узлов в список.

  6. 6 Изменение данных, индексы и ограничения

    1. SET и REMOVE: меняем свойства и метки

      Обновление в Cypher: SET для свойств и меток, += для слияния, REMOVE для удаления свойства или метки. Безопасные апдейты через MATCH.

    2. DELETE и DETACH DELETE: удаляем безопасно

      Удаление в Cypher: DELETE для узлов и связей, почему нельзя удалить узел со связями и зачем нужен DETACH DELETE. Очистка базы.

    3. Индексы и ограничения

      Производительность Neo4j: индексы по свойствам для быстрого старта обхода, ограничения уникальности и существования, роль для MERGE.

  7. 7 Моделирование, типовые задачи и алгоритмы

    1. Проектирование графовой схемы

      Как спроектировать граф: что делать узлом, что связью, что свойством. Направленность, свойства на рёбрах, моделирование под запросы.

    2. Типовые задачи: рекомендации, путь, сообщества

      Рабочие рецепты Cypher: рекомендации через общих соседей, кратчайший путь, друзья друзей, заготовка под обнаружение сообществ.

    3. Алгоритмы на графах: обзор Graph Data Science

      Библиотека Graph Data Science в Neo4j: PageRank, центральности, community detection, кратчайшие пути. Проекции графа и как их запускать.

    4. Cypher против SQL: те же задачи, разный путь

      Сравнение Cypher и SQL на одинаковых задачах: друзья друзей, рекомендации, иерархии. Почему граф проще для связей и где SQL уместнее.

  8. 8 Интеграция, эксплуатация и границы

    1. Импорт данных через LOAD CSV

      Загрузка данных в Neo4j: LOAD CSV с заголовками, создание узлов и связей из строк, идемпотентность через MERGE, батчи и параметры.

    2. Работа из приложения: драйверы Python и JS

      Драйверы Neo4j для Python и JavaScript: подключение по Bolt, параметризованные запросы, сессии и транзакции, защита от инъекций.

    3. Транзакции и ACID в Neo4j

      Neo4j — ACID-СУБД: атомарность, согласованность, изоляция и долговечность для графа. Явные транзакции, откат, блокировки и целостность.

    4. Масштабирование, кластеры и применения

      Как масштабируют Neo4j: кластеры с лидером и репликами, маршрутизация чтения/записи, шардирование. Где граф применяют на практике.

    5. Другие графовые БД и когда граф не нужен

      Обзор графовых БД помимо Neo4j (RDF/SPARQL, Gremlin, ArangoDB) и честный разбор задач, где графовая модель не оправдана.