раздел 39
Neo4j и графовые базы
Графовые базы с нуля: когда таблицы перестают справляться со связями и какие задачи рождены для графа. Модель property graph, Neo4j и язык Cypher, где запрос рисует кусок графа. Создание данных через CREATE и MERGE, чтение через MATCH, обходы и пути переменной длины, агрегации, изменение и удаление, индексы и ограничения. Дальше моделирование, рекомендации и кратчайшие пути, алгоритмы на графах, сравнение с SQL, импорт CSV, драйверы, транзакции, кластеры и честный разговор о том, когда граф не нужен.
Не получилось изменить список. Попробуй ещё раз.
Раздел открыт для всех. Войди, чтобы отмечать пройденные уроки, вести заметки и решать задачи в редакторе. войти
Уроки раздела
- Когда таблицы перестают справляться
- Задачи, рождённые для графа
- Граф как модель данных: property graph
- Что такое Neo4j и как его поставить
- Neo4j Browser: первая графовая консоль
- Модель данных Neo4j: метки, типы, направление
- Паттерны Cypher: запрос как рисунок графа
- CREATE: создаём узлы и связи
- MERGE: идемпотентность и «создать, если нет»
- MATCH и RETURN: находим и возвращаем
- WHERE: фильтрация совпадений
- OPTIONAL MATCH и работа с отсутствием
- Многошаговые обходы по связям
- Пути переменной длины: *1..3
- Агрегации: count, collect и неявная группировка
- SET и REMOVE: меняем свойства и метки
- DELETE и DETACH DELETE: удаляем безопасно
- Индексы и ограничения
- Проектирование графовой схемы
- Типовые задачи: рекомендации, путь, сообщества
- Алгоритмы на графах: обзор Graph Data Science
- Cypher против SQL: те же задачи, разный путь
- Импорт данных через LOAD CSV
- Работа из приложения: драйверы Python и JS
- Транзакции и ACID в Neo4j
- Масштабирование, кластеры и применения
- Другие графовые БД и когда граф не нужен
Понятия курса
Понятия разобраны внутри уроков. Нажми на понятие, чтобы открыть урок, где оно объясняется.
Зачем нужна графовая база данных
- Граф как модель данных: property graphУзлы, связи, метки, типы и свойства; чем property graph отличается от RDF и от таблицы со ссылками.урок 3 · Граф как модель данных: property graphопираются: урок 4
- Задачи, рождённые для графаРекомендации, маршруты, мошеннические кольца, зависимости и графы знаний: где связи важнее записей.урок 2 · Задачи, рождённые для графаопираются: урок 3
- Когда таблицы перестают справлятьсяДрузья друзей через JOIN, цена каждого лишнего шага по связям и мысль, что связь бывает данными первого класса.урок 1 · Когда таблицы перестают справлятьсяопираются: урок 2
Знакомство с Neo4j и Cypher
- Модель данных Neo4j: метки, типы, направлениеНесколько меток у узла, один тип у связи, направление при записи и чтении, labels() и type().урок 6 · Модель данных Neo4j: метки, типы, направлениеопираются: урок 7
- Что такое Neo4j и как его поставитьCommunity и Enterprise, Aura, запуск в Docker, порты 7474 и 7687, cypher-shell и первая команда.урок 4 · Что такое Neo4j и как его поставитьопираются: урок 5
- Neo4j Browser: первая графовая консольОкно запросов, вид графа и таблицы, команды с двоеточием, cypher-shell как текстовая консоль.урок 5 · Neo4j Browser: первая графовая консольопираются: урок 6
Cypher: паттерны и создание данных
- Паттерны Cypher: запрос как рисунок графаУзлы в круглых скобках, связи стрелками, переменные, метки и свойства внутри паттерна.урок 7 · Паттерны Cypher: запрос как рисунок графаопираются: урок 8
- CREATE: создаём узлы и связиCREATE узла, связи и целого пути, свойства разных типов, счётчики изменений и дубли от повторного запуска.урок 8 · CREATE: создаём узлы и связиопираются: урок 9
- MERGE: идемпотентность и «создать, если нет»MERGE по ключу, ON CREATE SET и ON MATCH SET, MERGE связи между найденными узлами, ловушка длинного паттерна.урок 9 · MERGE: идемпотентность и «создать, если нет»опираются: урок 10
Чтение данных: MATCH, WHERE, RETURN
- MATCH и RETURN: находим и возвращаемMATCH по метке и свойствам, RETURN узлов и свойств, псевдонимы, DISTINCT, ORDER BY, SKIP и LIMIT.урок 10 · MATCH и RETURN: находим и возвращаемопираются: урок 11
- OPTIONAL MATCH и работа с отсутствиемOPTIONAL MATCH как левое соединение, null в результатах, coalesce, отсутствующие свойства.урок 12 · OPTIONAL MATCH и работа с отсутствиемопираются: урок 13
- WHERE: фильтрация совпаденийСравнения и логика, IN, STARTS WITH и CONTAINS, регулярки, IS NULL, условия на паттерн и EXISTS.урок 11 · WHERE: фильтрация совпаденийопираются: урок 12
Обходы, пути и агрегации
- Агрегации: count, collect и неявная группировкаcount, collect, sum, avg, min и max, группировка по неагрегатным колонкам, WITH как HAVING, UNWIND.урок 15 · Агрегации: count, collect и неявная группировкаопираются: урок 16
- Многошаговые обходы по связямДрузья друзей, цепочки разных типов, циклы и уникальность связей внутри одного MATCH.урок 13 · Многошаговые обходы по связямопираются: урок 14
- Пути переменной длины: *1..3Синтаксис *min..max, именованные пути, length() и nodes(), почему путь без верхней границы опасен.урок 14 · Пути переменной длины: *1..3опираются: урок 15
Изменение данных, индексы и ограничения
- Индексы и ограниченияRANGE и TEXT индексы, ограничение уникальности, SHOW INDEXES, что доступно только в Enterprise, план с индексом.урок 18 · Индексы и ограниченияопираются: урок 19
- DELETE и DETACH DELETE: удаляем безопасноУдаление связи и узла, ошибка про оставшиеся связи, DETACH DELETE и привычка проверять MATCH до удаления.урок 17 · DELETE и DETACH DELETE: удаляем безопасноопираются: урок 18
- SET и REMOVE: меняем свойства и меткиSET свойства и метки, += и =, null как удаление, REMOVE свойства и метки, счётчики изменений.урок 16 · SET и REMOVE: меняем свойства и меткиопираются: урок 17
Моделирование, типовые задачи и алгоритмы
- Алгоритмы на графах: обзор Graph Data ScienceПлагин GDS, проекция графа в память, PageRank, Louvain, WCC и степень узла на чистом Cypher.урок 21 · Алгоритмы на графах: обзор Graph Data Scienceопираются: урок 22
- Проектирование графовой схемыЧто делать узлом, что связью, что свойством; глаголы в связях, перенос свойства в узел запросом.урок 19 · Проектирование графовой схемыопираются: урок 20
- Типовые задачи: рекомендации, путь, сообществаРекомендации по друзьям, кратчайший путь shortestPath и SHORTEST, общие знакомые и связные компоненты на чистом Cypher.урок 20 · Типовые задачи: рекомендации, путь, сообществаопираются: урок 21
- Cypher против SQL: те же задачи, разный путьОдни и те же вопросы к таблицам и к графу: фильтр, соединение, группировка, рекурсия и путь.урок 22 · Cypher против SQL: те же задачи, разный путьопираются: урок 23
Интеграция, эксплуатация и границы
- Другие графовые БД и когда граф не нуженMemgraph, JanusGraph, Neptune, рекурсивные CTE в PostgreSQL; признаки задачи, где граф лишний.урок 27 · Другие графовые БД и когда граф не нужен
- Импорт данных через LOAD CSVLOAD CSV WITH HEADERS, всё приходит строками, MERGE узлов и связей из файлов, пустые поля, большие файлы.урок 23 · Импорт данных через LOAD CSVопираются: урок 24
- Масштабирование, кластеры и примененияОдин сервер Community, кластер Enterprise с primary и secondary, Aura, почему граф трудно шардировать.урок 26 · Масштабирование, кластеры и примененияопираются: урок 27
- Работа из приложения: драйверы Python и JSBolt и neo4j://, драйвер, сессия и execute_query, параметры вместо склейки строк, типы значений.урок 24 · Работа из приложения: драйверы Python и JSопираются: урок 25
- Транзакции и ACID в Neo4jАвтотранзакция на запрос, :begin, :commit и :rollback, ошибка внутри транзакции, блокировки при записи.урок 25 · Транзакции и ACID в Neo4jопираются: урок 26