В прошлом уроке мы запустили 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 сам выполнит запрос, который покажет несколько узлов с этой меткой.
Четыре вида результата
У фрейма слева есть переключатель вида:
- Graph. Узлы кружками, связи стрелками. Подпись на кружке Browser выбирает сам из свойств узла, обычно это
nameилиtitle. Щелчок по узлу показывает его свойства, двойной щелчок раскрывает соседей. - Table. Тот же результат таблицей, как в консоли. Его можно скачать в CSV или JSON.
- RAW. Ответ сервера как есть, в виде данных. Полезен, когда хочется увидеть точные типы значений.
- 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 подробнее: сколько меток бывает у узла, почему у связи всегда один тип и что делать с направлением при чтении.
домашка