easimonenko Evgeny Simonenko

Основы работы с Neo4j в браузере

25 Apr 2020 |  Tutorial  |  Neo4j   Graph Databases  

В статье рассматривается как начать работать с графовой СУБД Neo4j, используя Neo4j Browser. Это руководство может быть полезным как дополнение к книге Редмонда и Уилсона “Семь баз данных за семь недель”, так как рассматриваемый веб-интерфейс был полностью переработан, а также к книге “Графовые базы данных” (Робинсон, Вебер, Эифрем), так как в ней этот вопрос вообще не рассматривается. Статья рассчитана на приступающих к изучению Neo4j. Те, кто уже знаком с этой СУБД, могут смело её пропустить.

Neo4j Browser: home screen

Примечание. В статье не рассматривается как установить и настроить Neo4j. Если Вы хотите узнать, как это сделать, прочитайте пост Установка и запуск Neo4j. Рассматриваемые версии Neo4j 3.3.2 и 3.4.0, Neo4j Browser 3.1.4 и 3.1.12, соответственно.

Начало работы

Для начала убедимся, что Neo4j запущена (пример для Linux):

service --status-all | grep neo4j
 [ + ]  neo4j

Знак “плюс” означает, что СУБД уже запущена, “минус” – ещё нет.

Или с использованием systemctl:

systemctl status neo4j

Для запуска Neo4j выполните команду:

sudo service neo4j start

Или с использованием systemctl:

sudo systemctl start neo4j

После запуска перейдите по ссылке http://localhost:7474/browser/. Вы должны увидеть интерфейс Neo4j Browser представленный на изображении выше.

Сейчас нас будут интересовать два элементы интерфейса, изображённые ниже: редактор и учебник.

Neo4j Browser: play

Учебник

Neo4j предоставляет великолепный интерактивный учебник для начинающих. Очень рекомендую его пройти. Для этого просто щёлкните на Start Learning и сначала ознакомьтесь с основными понятиями Neo4j:

Neo4j Browser: graph fundamentals

Neo4j Browser: graph relationships

По достижению последнего шага щёлкните на Intro и ознакомьтесь с возможностями Neo4j Browser:

Neo4j Browser: next steps

Neo4j Browser: introduction

Редактор

В верхней части окна Neo4j Browser располагается строка так называемого редактора:

Neo4j Browser: editor

Начиная набор команд с двоеточия, увидим список всех доступных команд с кратким описанием:

Neo4j Browser: list of commands

Вызовем команду :help:

Neo4j Browser: help command

Neo4j Browser: help

Чтобы ознакомиться с примерами работы с графами можно выбрать :play movie graph или :play northwind graph.

Мы не будем здесь рассматривать эти примеры, а рассмотрим как создать свой граф с помощью языка Cypher.

Создаём граф

Для начала можно ознакомиться с языком Cypher, вызвав команду:

:play cypher

Neo4j Browser: play cypher

Итак, начнём. Создадим небольшой социальный граф. Перейдём в редактор и наберём первую команду на языке Cypher:

CREATE (u1:Person {name: "Evgeny", from: "Krasnodar"})

После выполнения команды Browser сообщит нам результат:

Neo4j Browser: create result

Добавим ещё один узел:

CREATE (u2:Person {name: "Dmitry", from: "Tula"})

Теперь запросим все узлы типа Person и извлечём значения свойства name:

MATCH (ee:Person) RETURN ee.name

Neo4j Browser: property match result

Примечание. Как и в SQL есть возможность упорядочить извлекаемые данные по какому-либо полю:

MATCH (ee:Person) RETURN ee.name ORDER BY ee.name

Далее, можем запросить все узлы данного типа:

MATCH (ee:Person) RETURN ee

Neo4j Browser: edges match result

Обратите внимание на появившуюся кнопку Graph. Щёлкним на ней и увидим наши узлы в графическом виде:

Neo4j Browser: graph match result

Примечание. В версии 3.4 по-умолчанию как-раз открывается графическое представление. Для получения табличного представления нужно щёлкнуть на кнопку с надписью “Table”. Хотя, бывает и наоборот.

Добавим связь между узлами:

MATCH (e:Person) WHERE e.name = "Evgeny"
MATCH (d:Person) WHERE d.name = "Dmitry"
CREATE (e)-[:KNOWS]->(d),
  (d)-[:KNOWS]->(e)

И вновь запросим наш граф:

Neo4j Browser: graph with relationships

С помощью Cypher можно также выполнять различные операции над графами, например, запрашивать смежные вершины, друзей друзей в социальном графе, удалять рёбра и вершины и многое другое, но это тема для отдельного разговора.

Также можно настраивать Neo4j Browser на различный стиль отображения узлов и связей в зависимости от заданных им меток.

Ссылки

Примечание

Этот пост был написан и выложен в мой репозиторий research-work 1 февраля 2018, затем обновлён там же 6 июня 2018, и, наконец, опубликован на Хабр 7 октября 2019. Редакция от 25 апреля 2020, опубликованная в этом блоге, имеет лишь косметические правки.

(c) Симоненко Евгений, 2018, 2019, 2020