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, mBrowser нарисует Тома Хэнкса в центре и фильмы вокруг — это и есть сила графовой визуализации: вы буквально видите подграф, который вернул запрос. Узлы можно перетаскивать мышью, кликом по узлу — раскрыть его соседей, а цветами 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 — стандартная песочница для первых шагов.