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

Осваиваем рабочий инструмент: где писать запросы, как читать визуализацию и где взять учебные данные.

Neo4j Browser — встроенная веб-консоль (порт 7474), где вы пишете Cypher, видите результат и графом, и таблицей, и пользуетесь служебными командами вроде :play.

Что вы увидите при входе

Открыв http://localhost:7474 и залогинившись, вы попадаете в консоль. Сверху — строка для ввода Cypher (Enter — выполнить, Shift+Enter — перенос строки). Каждый запрос создаёт «кадр» (frame) с результатом, который можно показать как граф, как таблицу или как текст. Слева — панель с обзором базы: какие метки, типы связей и ключи свойств уже есть.

Кадры — удобная особенность Browser: каждый запрос остаётся на экране отдельной карточкой со своим результатом, и вы можете прокручивать историю, переоткрывать прошлые запросы, разворачивать их на весь экран. Для обучения это идеально: вы видите эволюцию своих попыток, а не только последний результат. У каждого кадра есть переключатель представления — иконки графа, таблицы, текста и плана выполнения, — так что один и тот же ответ можно рассмотреть с разных сторон, не переписывая запрос.

Служебные команды

Команды, начинающиеся с двоеточия, — это не Cypher, а инструкции самому Browser:

КомандаЧто делает
:play moviesзапускает встроенный учебный гайд с готовым датасетом фильмов
:helpсправка по Browser и Cypher
:clearочищает кадры с экрана
:schemaпоказывает индексы и ограничения

Загружаем учебную базу Movies

Внутри Neo4j есть знаменитый датасет про фильмы и актёров — на нём учатся все. Наберите :play movies и нажмите кнопку, которая вставит большой CREATE-запрос. После выполнения у вас появится граф из людей и фильмов, связанных типами :ACTED_IN, :DIRECTED и другими. Этот датасет хорош тем, что компактен (десятки узлов), но при этом богат связями: один человек может и сниматься, и режиссировать, и писать сценарий, так что на нём наглядно видны все возможности модели property graph, которые мы обсуждали в теории.

Прежде чем что-то спрашивать, полезно осмотреться. Несколько разведочных запросов помогают понять, что вообще лежит в базе:

MATCH (n) RETURN labels(n) AS метки, count(*) AS сколько
ORDER BY сколько DESC

Этот запрос показывает, узлов каких меток и сколько в базе. Аналогично, чтобы увидеть, какие типы связей встречаются, можно вернуть type(r) по всем рёбрам. Привычка начинать с такой «переписи населения» экономит массу времени: вы пишете запросы по реальной структуре, а не по угаданной.

Теперь первый осмысленный запрос — найдём всё, в чём снялся Том Хэнкс:

MATCH (p:Person {name:'Tom Hanks'})-[:ACTED_IN]->(m:Movie)
RETURN p, m

Browser нарисует Тома Хэнкса в центре и фильмы вокруг — это и есть сила графовой визуализации: вы буквально видите подграф, который вернул запрос. Узлы можно перетаскивать мышью, кликом по узлу — раскрыть его соседей, а цветами Browser автоматически кодирует метки. Этот наглядный отклик бесценен на старте: ошибку в паттерне (не та стрелка, не та метка) часто видно глазами быстрее, чем разбираешь её в голове.

Граф или таблица

Если в RETURN вы возвращаете узлы и связи (RETURN p, m), Browser покажет граф. Если возвращаете скалярные значения (RETURN p.name, m.title), он покажет таблицу. Это удобно: для исследования структуры — граф, для отчёта — таблица.

MATCH (p:Person {name:'Tom Hanks'})-[:ACTED_IN]->(m:Movie)
RETURN m.title AS film, m.released AS year
ORDER BY year

Как работает под капотом

Browser — это обычное браузерное приложение, которое подключается к серверу по Bolt (через WebSocket) на порт 7687, а сам по HTTP отдаётся с 7474. То есть визуализация в Browser использует ровно тот же канал, что и ваше будущее приложение на Python или JS. Граф рисуется библиотекой визуализации поверх данных, которые сервер вернул в ответ на Cypher.

Из этого следует одно практическое соображение: Browser отлично подходит для исследования и обучения, но он не предназначен показывать миллионы узлов разом. Визуализация ограничивает число рисуемых элементов (по умолчанию порядка сотен), потому что отрисовать гигантский подграф в браузере и невозможно, и бесполезно — он превратится в «волосяной шар». Поэтому исследовательские запросы почти всегда стоит ограничивать через LIMIT, а для боевой выгрузки больших объёмов использовать драйвер и таблицы, а не картинку.

Кнопка плана выполнения

Ещё один полезный режим кадра — показ плана запроса. Если перед запросом написать EXPLAIN, Browser нарисует, как планировщик собирается его исполнять, не запуская сам запрос; а PROFILE исполнит и покажет, сколько строк прошло через каждый шаг. На старте это может казаться лишним, но именно здесь рождается интуиция «почему мой запрос медленный»: чаще всего видно, что он начал с полного сканирования вместо точечного входа по индексу.

Частые ошибки

  • Думать, что :play — это Cypher. Команды с двоеточием понимает только Browser; в драйвере они не работают.
  • Ждать граф при возврате строк. Если в RETURN только свойства-скаляры, визуализации графа не будет — это нормально.
  • Грузить Movies дважды. Повторный CREATE создаст дубликаты узлов; чтобы переиграть, сначала очистите базу.

Итоги

  • Neo4j Browser — веб-консоль для Cypher с визуализацией графа и таблиц.
  • Команды :play movies, :help, :schema — это инструкции Browser, а не Cypher.
  • RETURN узлов/связей рисует граф; RETURN скаляров даёт таблицу.
  • Учебный датасет Movies — стандартная песочница для первых шагов.
Проверьте себя
1. Что делает команда :play movies в Neo4j Browser?
AУдаляет базу фильмов
BЗапускает встроенный учебный гайд с датасетом фильмов
CЭто валидный Cypher-запрос
DЭкспортирует граф в CSV
2. Когда Neo4j Browser покажет результат графом, а не таблицей?
AВсегда таблицей
BКогда RETURN возвращает узлы и связи, а не только скалярные свойства
CТолько при использовании WHERE
DКогда включён режим Enterprise
3. Сработает ли команда :help в драйвере приложения?
AДа, это стандартный Cypher
BНет, команды с двоеточием понимает только Browser
CТолько в Enterprise
DТолько через Docker