Раздел 39 · Neo4j и графовые базы

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

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В прошлом уроке мы запустили Neo4j и поговорили с ним через cypher-shell. Таблицы в консоли точные, но граф в них приходится представлять в уме. У Neo4j есть веб-консоль, которая рисует результат кружками и стрелками. Сегодня открываем её, разбираемся с видами результата и командами с двоеточием.

Открываем Browser

Пока контейнер из прошлого урока работает, открой в браузере адрес http://localhost:7474. Это Neo4j Browser, он идёт в комплекте с сервером и в Community, и в Enterprise.

Browser попросит подключиться:

  • адрес neo4j://localhost:7687, это тот же порт Bolt, что у cypher-shell;
  • пользователь neo4j;
  • пароль из NEO4J_AUTH, в нашем примере secret-password.

Browser работает в твоём браузере и сам ходит к серверу по Bolt. Поэтому порт 7687 должен быть открыт так же, как 7474.

Из чего состоит экран

Представь блокнот с отрывными листами. Сверху поле, куда ты пишешь запрос. Каждый выполненный запрос отрывается в отдельный лист и ложится в стопку ниже, свежий сверху.

  • Редактор вверху. Запрос выполняется кнопкой со стрелкой или сочетанием Ctrl+Enter (Cmd+Enter на Mac). Точка с запятой в конце здесь не обязательна, в отличие от cypher-shell.
  • Лента результатов под ним. Каждый ответ это отдельный фрейм с запросом и результатом. Запрос во фрейме можно поправить и выполнить ещё раз.
  • Боковая панель слева. Там сведения о базе (какие есть метки, типы связей и ключи свойств), сохранённые запросы Saved Cypher, история, встроенная шпаргалка по Cypher, параметры и настройки.

Ящик со сведениями о базе особенно удобен в начале: щёлкни по метке Person, и Browser сам выполнит запрос, который покажет несколько узлов с этой меткой.

Четыре вида результата

У фрейма слева есть переключатель вида:

  1. Graph. Узлы кружками, связи стрелками. Подпись на кружке Browser выбирает сам из свойств узла, обычно это name или title. Щелчок по узлу показывает его свойства, двойной щелчок раскрывает соседей.
  2. Table. Тот же результат таблицей, как в консоли. Его можно скачать в CSV или JSON.
  3. RAW. Ответ сервера как есть, в виде данных. Полезен, когда хочется увидеть точные типы значений.
  4. Plan. План выполнения, если запрос начинался с EXPLAIN или PROFILE. О планах поговорим в уроке про индексы.

Вид Graph доступен, только если в ответе есть узлы, связи или пути. Запрос, который возвращает одни числа и строки, Browser покажет только таблицей и в RAW.

Команды с двоеточием

Строки, которые начинаются с двоеточия, это не Cypher, а команды самого клиента. Их понимают и Browser, и cypher-shell, но набор у них разный. В Browser часто нужны:

  • :help список команд;
  • :clear очистить ленту фреймов;
  • :history история выполненных запросов;
  • :param name => 'Аня' задать параметр, а :params показать все параметры;
  • :sysinfo сведения о сервере: размер хранилища, транзакции, базы.

У cypher-shell свой список. Песочница уроков повторяет его, вот как он выглядит:

:help

Available commands:
  :access-mode View or set access mode
  :begin       Open a transaction
  :commit      Commit the currently open transaction
  :connect     Connects to a database
  :disconnect  Disconnects from database
  :exit        Exit the logger
  :help        Show this help message
  :history     Statement history
  :impersonate Impersonate user
  :param       Set the value of a query parameter
  :rollback    Rollback the currently open transaction
  :source      Executes Cypher statements from a file
  :sysinfo     Neo4j system information
  :use         Set the active database

For help on a specific command type:
    :help command

Keyboard shortcuts:
    Up and down arrows to access statement history.
    Tab for autocompletion of commands, hit twice to select suggestion from list using arrow keys.

For help on cypher please visit:
    https://neo4j.com/docs/cypher-manual/current/

:clear в cypher-shell нет: консоль очищается средствами терминала. Если набрать её, клиент ответит, что такой команды не знает.

Browser или консоль

Browser удобен, когда исследуешь данные: видно форму графа, циклы и висячие узлы, можно раскрывать соседей мышкой. Консоль удобна для повторяемой работы: скрипт загрузки данных, миграция схемы, проверка в CI. В песочнице уроков ты получаешь и то и другое: текст в точности как в cypher-shell и картинку под ним, похожую на вид Graph.

Попробуй сам

Запрос возвращает пути «участник живёт в городе». Под ответом картинка: три города и их жители, а Илья и Яна в неё не попадут, потому что город у них не указан.

Замени RETURN p на RETURN count(p) AS paths и посмотри, что стало с картинкой. Если у тебя запущен Docker, выполни тот же запрос в Browser и переключи вид с Graph на Table и RAW.

Проверь себя

Задание

Дальше

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

домашка

Домашка