Знакомство с графовой базой данных Neo4j
Mar 15, 2019 · 6 min read
Содержание
История происхождения графов
Среди жителей Кёнигсберга (нынешний Калиниград) была распространена такая загадка: как пройти по всем городским мостам через реку, не проходя ни по одному из них дважды. Многие пытались решить эту задачу как теоретически, так и практически, во время прогулок. Впрочем, доказать или опровергнуть возможность существования такого маршрута никто не мог.
Решил задачку Леонард Эйлер, сформулировав ряд правил и доказав, что пройти по мостам, не повторяясь, невозможно.
Так и зародилась теория графов.
Что такое граф?
Граф — абстрактный математический объект, представляющий собой множество вершин (точек) и набор рёбер (линий ), то есть соединений между парами вершин.
Ориентированный граф
Ориентиров а нный граф — это граф, ребро которого имеет заданное направление между вершинами.
Петля
Если вершина графа соединена ребром сама с собой, то такое ребро называется петлей.
Классификация графов
Связанный граф
Если из любой вершины есть путь до любой другой — такой граф называется связанным.
В данном примере есть путь от вершины А до вершины D, хоть он и пролегает через другие вершины.
Сильно связанный граф
Граф называется сильно связанным, если любая его вершина соединена с любой другой ребром. Если связи ориентированные — то граф называется ориентированно связанным.
Взвешенный граф
Если к каждому ребру в соответствие поставлено некоторое число (вес ребра) — такой граф называется взвешенным.
Мультиграф
Граф, в котором разрешается присутствие параллельных ребер, то есть ребер, имеющих те же самые конечные вершины. Параллельные ребра выделены красным.
Где используются графы
Графы используются в геоинформационных системах (ГИС), логистике, социальных сетях, магазинах и других сферах жизни.
Схема метро — взвешенный граф, на ребрах которого указано время перехода между станциями, или прогона состава.
По весам ребер можно посчитать время в пути, так же и выбрать оптимальный путь с помощью какого-либо алгоритма. Алгоритмов поиска кратчайшего пути в графе много, самый известный — алгоритм Дейкстры, вы наверняка о нем слышали.
Карту города тоже можно представить в виде графа.
Данный граф применим в системах навигации для поиска оптимального маршрута. Перекрестки — вершины графа, а дороги — ребра.
Молекулярный граф — связный неориентированный граф, соответсвует формуле химического соединения таким образом, что вершины графа — атомы молекулы, а ребра — химические связи между этими атомами.
Наиболее частный пример графов в разработке — граф социальной сети, в котором отображены дружеские отношения между людьми, их вкусовые предпочтения и прочее.
Даже 3D-объект можно представить в виде графа:
Каждая вершина хранит координаты x, y, z.
Граф — довольно абстрактная вещь, поэтому ее можно применить практически во всех сферах жизни.
Графовые базы
Первая графовая СУБД Neo4j создана в 2007 году, сейчас их уже десятки, наиболее популярные:
Neo4j
Графовая СУБД с открытым исходным кодом, реализована на Java компанией Neo Technology.
Не уступает по производительности реляционным базам данных благодаря собственному формату хранения данных.
Приложение может взаимодействовать с БД по одному из протоколов:
Продолжим знакомство с Neo4j на примере стандартной БД “Movie”
Пользователь может просматривать БД с помощью Neo4j Browser
Вершины графа в Neo4j имеют свой тип, в БД Movie у нас 2 типа вершин:
* Person (name — имя актера, born — год рождения)
* Movie (title — наименование фильма, released — год выхода)
Если проводить аналогию с реляционными базами, то Person и Movie — это таблицы.
Для работы с БД используется язык запросов Cypher.
Cypher
Cypher — декларативный язык запросов в виде графа, позволяющий получить выразительный и эффективный запрос данных. Язык представлен интуитивно понятным и простым в освоении.
Для начала найдем актера с именем Том Хэнкс
MATCH — аналог WHERE, в круглых скобках мы описываем свойства вершины (условие поиска), а RETURN — аналог SELECT, в нем мы описываем, что вернуть.
Теперь поищем фильмы, в которых снимался Том Хэнкс.
Запрос усложнился, в MATCH мы описали вершины обоих типов, и отношение между ними (ребро) в квадратных скобках.
Теперь посмотрим, кто снимался с Томом на одной площадке, и в каком фильме:
Текст запроса приближен к текстовому отображению графа:
Где и когда использовать графовые СУБД
Графовые базы уже нашли применение в:
Если в вашем приложении планируется много сущностей и связей многие-ко-многим, то это один из признаков, что предпочтительней выбрать графовую СУБД (утверждение Martin Kleppmann’а в книге “Designing Data Intensive Applications”).
А если у вас уже есть приложение с множеством связей, и обход этих связей занимает много времени и ресурсов — стоит присмотреться в сторону графов, т.к. обход связей в них практически ничего не стоит.
Выводы
Графовые базы не является таблеткой от всех проблем, их следует использовать для решения задач, которые решаются только графами.
Например, площадка medium использует Neo4j для хранения отношений между различными сущностями (Стек, который позволил Medium обеспечить чтение на 2.6 тысячелетия), а данные хранит в NoSQL БД dynamoDB.
Если вас заинтересовали графовые базы, то на официальном сайте Neo4j можно скачать БЕСПЛАТНО книгу с осьминогом, в ней больше информации про внутреннее устройство Neo4j и Cypher.
Neo4j — Краткое руководство
Neo4j является ведущей в мире графической базой данных с открытым исходным кодом, которая разработана с использованием технологии Java. Он легко масштабируется и не содержит схем (NoSQL).
Что такое база данных графиков?
Граф представляет собой графическое представление набора объектов, где некоторые пары объектов связаны ссылками. Он состоит из двух элементов — узлов (вершин) и отношений (ребер).
База данных графиков — это база данных, используемая для моделирования данных в форме графиков. Здесь узлы графа изображают сущности, в то время как отношения изображают ассоциацию этих узлов.
Популярные базы данных графиков
Neo4j — это популярная графическая база данных. Другими базами данных Graph являются Oracle NoSQL Database, OrientDB, HypherGraphDB, GraphBase, InfiniteGraph и AllegroGraph.
Почему граф базы данных?
В настоящее время большая часть данных существует в форме отношений между различными объектами, и чаще всего отношения между данными являются более ценными, чем сами данные.
Реляционные базы данных хранят высокоструктурированные данные, в которых есть несколько записей, в которых хранятся данные одного и того же типа, поэтому они могут использоваться для хранения структурированных данных и не хранят связи между данными.
В отличие от других баз данных, графовые базы данных хранят отношения и соединения как первоклассные объекты.
Модель данных для графовых баз данных проще по сравнению с другими базами данных, и их можно использовать с системами OLTP. Они предоставляют такие функции, как целостность транзакций и эксплуатационная доступность.
СУБД против графической базы данных
Ниже приведена таблица, в которой сравниваются реляционные базы данных и базы данных Graph.
Sr.No | RDBMS | База данных графиков |
---|---|---|
1 | таблицы | диаграммы |
2 | Ряды | Вершины |
3 | Столбцы и данные | Свойства и его значения |
4 | Ограничения | Отношения |
5 | присоединяется | пересечение |
Преимущества Neo4j
Ниже приведены преимущества Neo4j.
Гибкая модель данных — Neo4j предоставляет гибкую простую и вместе с тем мощную модель данных, которую можно легко изменять в зависимости от приложений и отраслей.
Анализ в реальном времени — Neo4j предоставляет результаты на основе данных в реальном времени.
Высокая доступность — Neo4j отлично доступен для крупных корпоративных приложений реального времени с транзакционными гарантиями.
Связанные и полуструктурированные данные. Используя Neo4j, вы можете легко представлять связанные и полуструктурированные данные.
Простой поиск — Используя Neo4j, вы можете не только представлять, но и легко извлекать (перемещаться / перемещаться) связанные данные быстрее по сравнению с другими базами данных.
Язык запросов Cypher — Neo4j предоставляет декларативный язык запросов для визуального представления графика с использованием синтаксиса ascii-art. Команды этого языка в удобочитаемом формате и очень просты в освоении.
Нет объединений — используя Neo4j, он НЕ требует сложных объединений для извлечения связанных / связанных данных, так как очень легко получить сведения о соседнем узле или взаимосвязи без объединений или индексов.
Гибкая модель данных — Neo4j предоставляет гибкую простую и вместе с тем мощную модель данных, которую можно легко изменять в зависимости от приложений и отраслей.
Анализ в реальном времени — Neo4j предоставляет результаты на основе данных в реальном времени.
Высокая доступность — Neo4j отлично доступен для крупных корпоративных приложений реального времени с транзакционными гарантиями.
Связанные и полуструктурированные данные. Используя Neo4j, вы можете легко представлять связанные и полуструктурированные данные.
Простой поиск — Используя Neo4j, вы можете не только представлять, но и легко извлекать (перемещаться / перемещаться) связанные данные быстрее по сравнению с другими базами данных.
Язык запросов Cypher — Neo4j предоставляет декларативный язык запросов для визуального представления графика с использованием синтаксиса ascii-art. Команды этого языка в удобочитаемом формате и очень просты в освоении.
Нет объединений — используя Neo4j, он НЕ требует сложных объединений для извлечения связанных / связанных данных, так как очень легко получить сведения о соседнем узле или взаимосвязи без объединений или индексов.
Особенности Neo4j
Ниже приведены заметные особенности Neo4j —
Модель данных (гибкая схема) — Neo4j следует модели данных, называемой моделью графа собственных свойств. Здесь граф содержит узлы (сущности), и эти узлы связаны друг с другом (изображены отношениями). Узлы и отношения хранят данные в парах ключ-значение, известных как свойства.
В Neo4j нет необходимости следовать фиксированной схеме. Вы можете добавить или удалить свойства согласно требованию. Это также обеспечивает ограничения схемы.
Свойства ACID — Neo4j поддерживает полные правила ACID (атомарность, согласованность, изоляция и долговечность).
Масштабируемость и надежность. Вы можете масштабировать базу данных, увеличивая количество операций чтения / записи и объем, не влияя на скорость обработки запросов и целостность данных. Neo4j также обеспечивает поддержку репликации для обеспечения безопасности и надежности данных.
Cypher Query Language — Neo4j предоставляет мощный декларативный язык запросов, известный как Cypher. Он использует ASCII-арт для изображения графиков. Cypher прост в освоении и может быть использован для создания и извлечения отношений между данными без использования сложных запросов, таких как Joins.
Драйверы — Neo4j может работать с —
REST API для работы с такими языками программирования, как Java, Spring, Scala и т. Д.
Java Script для работы с пользовательскими интерфейсами MVC, такими как Node JS.
Он поддерживает два вида Java API: Cypher API и Native Java API для разработки приложений Java. В дополнение к этому вы также можете работать с другими базами данных, такими как MongoDB, Cassandra и т. Д.
Индексирование — Neo4j поддерживает Индексы с помощью Apache Lucence.
Модель данных (гибкая схема) — Neo4j следует модели данных, называемой моделью графа собственных свойств. Здесь граф содержит узлы (сущности), и эти узлы связаны друг с другом (изображены отношениями). Узлы и отношения хранят данные в парах ключ-значение, известных как свойства.
В Neo4j нет необходимости следовать фиксированной схеме. Вы можете добавить или удалить свойства согласно требованию. Это также обеспечивает ограничения схемы.
Свойства ACID — Neo4j поддерживает полные правила ACID (атомарность, согласованность, изоляция и долговечность).
Масштабируемость и надежность. Вы можете масштабировать базу данных, увеличивая количество операций чтения / записи и объем, не влияя на скорость обработки запросов и целостность данных. Neo4j также обеспечивает поддержку репликации для обеспечения безопасности и надежности данных.
Cypher Query Language — Neo4j предоставляет мощный декларативный язык запросов, известный как Cypher. Он использует ASCII-арт для изображения графиков. Cypher прост в освоении и может быть использован для создания и извлечения отношений между данными без использования сложных запросов, таких как Joins.
Драйверы — Neo4j может работать с —
REST API для работы с такими языками программирования, как Java, Spring, Scala и т. Д.
Java Script для работы с пользовательскими интерфейсами MVC, такими как Node JS.
Он поддерживает два вида Java API: Cypher API и Native Java API для разработки приложений Java. В дополнение к этому вы также можете работать с другими базами данных, такими как MongoDB, Cassandra и т. Д.
Индексирование — Neo4j поддерживает Индексы с помощью Apache Lucence.
Neo4j — модель данных
Модель данных Neo4j Property Graph
Neo4j Graph Database использует модель графа свойств для хранения и управления своими данными.
Ниже приведены ключевые особенности модели графа свойств —
Модель представляет данные в узлах, отношениях и свойствах
Свойства являются парами ключ-значение
Узлы представлены с помощью круга, а отношения представлены с помощью клавиш со стрелками
Отношения имеют направления: однонаправленные и двунаправленные
Каждое отношение содержит «Начальный узел» или «От узла» и «До узла» или «Конечный узел»
И Узлы и Отношения содержат свойства
Отношения связывает узлы
Модель представляет данные в узлах, отношениях и свойствах
Свойства являются парами ключ-значение
Узлы представлены с помощью круга, а отношения представлены с помощью клавиш со стрелками
Отношения имеют направления: однонаправленные и двунаправленные
Каждое отношение содержит «Начальный узел» или «От узла» и «До узла» или «Конечный узел»
И Узлы и Отношения содержат свойства
Отношения связывает узлы
В модели данных графа свойств отношения должны быть направленными. Если мы попытаемся создать отношения без направления, то будет выдано сообщение об ошибке.
В Neo4j отношения также должны быть направленными. Если мы попытаемся создать отношения без направления, Neo4j выдаст сообщение об ошибке, в котором говорится, что «отношения должны быть направленными».
Neo4j Graph Database хранит все свои данные в узлах и отношениях. Нам не нужна ни дополнительная база данных RRBMS, ни база данных SQL для хранения данных базы данных Neo4j. Он хранит свои данные в виде графиков в своем родном формате.
Neo4j использует Native GPE (Graph Processing Engine) для работы с форматом хранения Native Graph.
Основными строительными блоками модели данных Graph DB являются —
Ниже приведен простой пример графа свойств.
Здесь мы представили узлы, используя круги. Отношения представлены стрелками. Отношения являются направленными. Мы можем представить данные узла в терминах свойств (пары ключ-значение). В этом примере мы представили свойство Id каждого узла в круге узла.
Neo4j — настройка среды
В этой главе мы обсудим, как установить Neo4j в вашу систему, используя exe-файл.
Настройка сервера базы данных Neo4j с помощью exe-файла Windows
Следуйте инструкциям ниже, чтобы загрузить Neo4j в вашу систему.
Шаг 2 — Как показано на скриншоте выше, на этой странице справа вверху есть кнопка «Загрузить». Нажмите на это.
Шаг 3 — Это перенаправит вас на страницу загрузок, где вы можете скачать версию для сообщества и корпоративную версию Neo4j. Загрузите версию программного обеспечения для сообщества, нажав соответствующую кнопку.
Шаг 4 — Вы перейдете на страницу, где вы можете скачать версию программного обеспечения Neo4j для сообщества, совместимую с различными операционными системами. Загрузите файл, соответствующий желаемой операционной системе.
Это позволит загрузить файл с именем neo4j-community_windows-x64_3_1_1.exe в вашу систему, как показано на следующем снимке экрана.
Шаг 5 — Дважды щелкните exe-файл, чтобы установить Neo4j Server.
Шаг 6 — Примите лицензионное соглашение и продолжите установку. После завершения процесса вы можете заметить, что Neo4j установлен в вашей системе.
Запуск сервера
Шаг 1 — Щелкните меню запуска Windows и запустите сервер Neo4j, щелкнув ярлык меню «Пуск» для Neo4j.
Шаг 2 — Нажав на ярлык, вы получите окно для Neo4j Community Edition. По умолчанию он выбирает c: \ Users \ [имя пользователя] \ Documents \ Neo4j \ default.graphdb. Если вы хотите, вы можете изменить свой путь к другому каталогу.
Шаг 3 — Нажмите кнопку «Пуск», чтобы запустить сервер Neo4j.
После запуска сервера вы можете заметить, что каталог базы данных заполнен, как показано на следующем снимке экрана.
Работа с Neo4j
Как обсуждалось в предыдущих главах, neo4j предоставляет встроенное приложение для работы с Neo4j. Вы можете получить доступ к Neo4j, используя URL-адрес http: // localhost: 7474 /
Neo4j — Строительные блоки
Neo4j Graph Database имеет следующие строительные блоки —
Узел является фундаментальной единицей Графа. Он содержит свойства с парами ключ-значение, как показано на следующем рисунке.
Здесь Node Name = «Employee», и он содержит набор свойств в виде пар ключ-значение.
свойства
Свойство — это пара ключ-значение для описания узлов и отношений графа.
Где Key — это String, а Value может быть представлено с использованием любых типов данных Neo4j.
Отношения
Отношения являются еще одним важным строительным блоком графической базы данных. Он соединяет два узла, как показано на следующем рисунке.
Здесь Emp и Dept — два разных узла. «WORKS_FOR» — это отношение между узлами Emp и Dept.
Как это означает, стрелка от Emp до Dept, это отношение описывает —
Каждое отношение содержит один начальный узел и один конечный узел.
Здесь «Emp» является начальным узлом, а «Dept» является конечным узлом.
Поскольку эта метка стрелки отношения представляет отношение между узлом «Emp» и узлом «Dept», это отношение известно как «Входящие отношения» к узлу «Dept» и «Исходящие отношения» к узлу «Emp».
Как и узлы, отношения также могут содержать свойства в виде пар ключ-значение.
Здесь отношение «WORKS_FOR» имеет одно свойство как пара ключ-значение.
Он представляет собой идентификатор этих отношений.
Этикетки
Метка связывает общее имя с набором узлов или отношений. Узел или отношение могут содержать одну или несколько меток. Мы можем создавать новые метки для существующих узлов или отношений. Мы можем удалить существующие метки из существующих узлов или связей.
Из предыдущей диаграммы мы можем наблюдать, что есть два узла.
Левый боковой узел имеет метку: «Emp», а правый боковой узел имеет метку: «Dept».
Связь между этими двумя узлами также имеет метку: «WORKS_FOR».
Примечание. Neo4j хранит данные в свойствах узлов или отношений.
Neo4j Data Browser
После установки Neo4j мы можем получить доступ к Neo4j Data Browser, используя следующий URL
Neo4j Data Browser используется для выполнения команд CQL и просмотра выходных данных.
Здесь нам нужно выполнить все команды CQL по подсказке доллара: «$»
Введите команды после символа доллара и нажмите кнопку «Выполнить» для запуска команд.
Он взаимодействует с сервером базы данных Neo4j, извлекает и отображает результаты прямо под подсказкой доллара.
Используйте кнопку «VI View» для просмотра результатов в формате диаграмм. Приведенная выше диаграмма показывает результаты в формате «UI View».
Используйте кнопку «Вид сетки», чтобы просмотреть результаты в режиме сетки. Следующая диаграмма показывает те же результаты в формате «Grid View».
Когда мы используем «Вид сетки» для просмотра результатов нашего запроса, мы можем экспортировать их в файл в двух разных форматах.
Нажмите кнопку «Экспорт CSV», чтобы экспортировать результаты в формате файла CSV.
Нажмите кнопку «Экспорт JSON», чтобы экспортировать результаты в формате файла JSON.
Однако, если мы используем «UI View» для просмотра результатов нашего запроса, мы можем экспортировать их в файл только в одном формате: JSON
Neo4j CQL — Введение
CQL означает Cypher Query Language. Подобно тому, как Oracle Database имеет язык запросов SQL, Neo4j имеет CQL в качестве языка запросов.
Neo4j CQL
Как Oracle SQL
Neo4j CQL имеет команды для выполнения операций с базой данных.
Neo4j CQL поддерживает множество предложений, таких как WHERE, ORDER BY и т. Д., Для простого написания очень сложных запросов.
Neo4j CQL поддерживает некоторые функции, такие как String, Aggregation. В дополнение к ним, он также поддерживает некоторые функции отношений.
Neo4j CQL имеет команды для выполнения операций с базой данных.
Neo4j CQL поддерживает множество предложений, таких как WHERE, ORDER BY и т. Д., Для простого написания очень сложных запросов.
Neo4j CQL поддерживает некоторые функции, такие как String, Aggregation. В дополнение к ним, он также поддерживает некоторые функции отношений.
Neo4j CQL Статьи
Ниже приводятся пункты чтения Neo4j.
Sr.No | Читать статьи | использование |
---|---|---|
1 | МАТЧ | Это предложение используется для поиска данных с указанным шаблоном. |
2 | ДОПОЛНИТЕЛЬНЫЙ МАТЧ | Это то же самое, что и совпадение, единственное отличие состоит в том, что он может использовать нули в случае отсутствия частей шаблона. |
3 | ГДЕ | Этот идентификатор предложения используется для добавления содержимого в запросы CQL. |
4 | НАЧНИТЕ | Этот пункт используется для поиска отправных точек по устаревшим индексам. |
5 | LOAD CSV | Этот пункт используется для импорта данных из файлов CSV. |
Ниже приводятся пункты записи Neo4j C ypher Query L anguage —
Ниже приведены общие положения Neo4j C ypher Query L anguage —
Neo4j CQL Функции
Ниже приведены часто используемые функции Neo4j CQL —
Sr.No | Функции CQL | использование |
---|---|---|
1 | строка | Они используются для работы со строковыми литералами. |
2 | агрегирование | Они используются для выполнения некоторых операций агрегирования результатов CQL Query. |
3 | отношения | Они используются для получения деталей отношений, таких как начальный узел, конечный узел и т. Д. |
Мы подробно обсудим все команды, предложения и предложения Neo4j CQL, их использование и примеры в следующих главах.
Neo4j CQL Типы данных
Эти типы данных похожи на язык Java. Они используются для определения свойств узла или отношения.
Neo4j CQL поддерживает следующие типы данных —
Sr.No | Тип данных CQL | использование |
---|---|---|
1 | логический | Используется для представления логических литералов: true, false. |
2 | байт | Он используется для представления 8-битных целых чисел. |
3 | короткая | Он используется для представления 16-битных целых чисел. |
4 | ИНТ | Он используется для представления 32-битных целых чисел. |
5 | долго | Он используется для представления 64-битных целых чисел. |
6 | поплавок | Он используется для представления 32-битных чисел с плавающей точкой. |
7 | двойной | Он используется для представления 64-битных чисел с плавающей точкой. |
8 | голец | Используется для представления 16-битных символов. |
9 | строка | Он используется для представления строк. |
Операторы CQL
Ниже приведен список операторов, поддерживаемых языком Neo4j Cypher Query.
Булевы операторы в Neo4j CQL
Neo4j поддерживает следующие логические операторы для использования в предложении Neo4j CQL WHERE для поддержки нескольких условий.
Sr.No | Булевы операторы | Описание |
---|---|---|
1 | А ТАКЖЕ | Это ключевое слово Neo4j CQL для поддержки операции AND. Это как оператор SQL AND. |
2 | ИЛИ ЖЕ | Это ключевое слово Neo4j CQL для поддержки операции OR. Это как оператор SQL AND. |
3 | НЕ | Это ключевое слово Neo4j CQL для поддержки операции НЕ. Это как оператор SQL AND. |
4 | XOR | Это ключевое слово Neo4j CQL для поддержки операции XOR. Это как оператор SQL AND. |
Операторы сравнения в Neo4j CQL
Neo4j поддерживает следующие операторы сравнения для использования в предложении Neo4j CQL WHERE для поддержки условий.
Sr.No | Булевы операторы | Описание |
---|---|---|
1 | знак равно | Это оператор Neo4j CQL «Equal To». |
2 | <> | Это оператор Neo4j CQL «Не равно». |
3 | Это оператор Neo4j CQL «Less Than». | |
4 | > | Это оператор Neo4j CQL «Greater Than». |
5 | Это оператор Neo4j CQL «Меньше или равно». | |
6 | > = | Это оператор Neo4j CQL «Больше или равно». |
Neo4j CQL — Создание узлов
Создание одного узла
Вы можете создать узел в Neo4j, просто указав имя узла, который должен быть создан, вместе с предложением CREATE.
Синтаксис
Ниже приведен синтаксис для создания узла с использованием языка запросов Cypher.
Примечание. Точка с запятой (;) является необязательной.
пример
Ниже приведен пример Cypher Query, который создает узел в Neo4j.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j, как показано на следующем снимке экрана.
Шаг 2 — Откройте браузер, скопируйте и вставьте следующий URL в адресную строку http: // localhost: 7474 /. Это даст вам встроенное браузерное приложение Neo4j с подсказкой в долларах, как показано на следующем снимке экрана.
Шаг 3 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание типа узла, выполните следующий запрос в подсказке доллара.
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Создание нескольких узлов
Предложение create в Neo4j CQL также используется для создания нескольких узлов одновременно. Для этого необходимо передать имена создаваемых узлов через запятую.
Синтаксис
Ниже приведен синтаксис для создания нескольких узлов с помощью предложения CREATE.
пример
Ниже приведен пример Cypher Query, который создает несколько узлов в Neo4j.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание узла, введите и выполните следующий запрос в подсказке доллара.
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Создание узла с меткой
Метка в Neo4j используется для группировки (классификации) узлов с помощью меток. Вы можете создать метку для узла в Neo4j, используя предложение CREATE.
Синтаксис
Ниже приведен синтаксис для создания узла с меткой с использованием языка запросов Cypher.
пример
Ниже приведен пример Cypher Query, который создает узел с меткой.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание узла, введите и выполните следующий запрос в подсказке доллара.
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Создание узла с несколькими метками
Вы также можете создать несколько меток для одного узла. Вам необходимо указать метки для узла, разделив их двоеточием «:».
Синтаксис
Ниже приведен синтаксис для создания узла с несколькими метками.
пример
Ниже приведен пример Cypher Query, который создает узел с несколькими метками в Neo4j.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание узла, введите и выполните следующий запрос в подсказке доллара.
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Создать узел со свойствами
Свойства — это пары ключ-значение, с помощью которых узел хранит данные. Вы можете создать узел со свойствами, используя предложение CREATE. Вам необходимо указать эти свойства через запятую в цветочных скобках «<>».
Синтаксис
Ниже приведен синтаксис для создания узла со свойствами.
пример
Ниже приведен пример Cypher Query, который создает узел со свойствами.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание узла, введите и выполните следующий запрос в подсказке доллара.
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Возврат созданного узла
В этой главе мы использовали запрос MATCH (n) RETURN n для просмотра созданных узлов. Этот запрос возвращает все существующие узлы в базе данных.
Вместо этого мы можем использовать предложение RETURN с CREATE для просмотра вновь созданного узла.
Синтаксис
Ниже приведен синтаксис для возврата узла в Neo4j.
пример
Ниже приведен пример Cypher Query, который создает узел со свойствами и возвращает его.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j CQL — Создание отношений
В Noe4j отношение — это элемент, с помощью которого мы соединяем два узла графа. Эти отношения имеют направление, тип и шаблоны данных. Эта глава учит вас, как —
Создание отношений
Мы можем создать отношения, используя предложение CREATE. Мы зададим отношение в квадратных скобках «[]» в зависимости от направления отношения, которое оно помещает между дефисом «-» и стрелкой «→», как показано в следующем синтаксисе.
Синтаксис
Ниже приведен синтаксис для создания отношений с использованием предложения CREATE.
пример
Прежде всего, создайте два узла Ind и Dhawan в базе данных, как показано ниже.
Теперь создайте связь с именем BATSMAN_OF между этими двумя узлами как —
Наконец, верните оба узла, чтобы увидеть созданные отношения.
Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Создание связи между существующими узлами
Синтаксис
Ниже приведен синтаксис для создания отношений с использованием предложения MATCH.
пример
Ниже приведен пример Cypher Query, который создает отношение с помощью предложения match.
Чтобы выполнить вышеуказанный запрос, выполните следующие шаги.
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Создание отношений с меткой и свойствами
Вы можете создать связь с меткой и свойствами, используя предложение CREATE.
Синтаксис
Ниже приведен синтаксис для создания связи с меткой и свойствами с помощью предложения CREATE.
пример
Ниже приведен пример Cypher Query, который создает связь с меткой и свойствами.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Создание полного пути
В Neo4j путь формируется с использованием непрерывных отношений. Путь может быть создан с помощью предложения create.
Синтаксис
Ниже приведен синтаксис для создания пути в Neo4j с использованием предложения CREATE.
пример
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j — объединить команду
Команда MERGE является комбинацией команды CREATE и команды MATCH.
Команда Neo4j CQL MERGE ищет заданный шаблон в графе. Если он существует, он возвращает результаты.
Если он НЕ существует в графе, то он создает новый узел / отношение и возвращает результаты.
В этой главе вы узнаете, как:
Синтаксис
Ниже приведен синтаксис команды MERGE.
Прежде чем перейти к примерам в этом разделе, создайте два узла в базе данных с метками Dhawan и Ind. Создайте отношение типа «BATSMAN_OF» от Dhawan до Ind, как показано ниже.
Слияние узла с меткой
Вы можете объединить узел в базе данных на основе метки, используя предложение MERGE. Если вы попытаетесь объединить узел на основе метки, то Neo4j проверяет, существует ли какой-либо узел с данной меткой. Если нет, текущий узел будет создан.
Синтаксис
Ниже приведен синтаксис для объединения узла на основе метки.
Пример 1
Ниже приведен пример Cypher Query, который объединяет узел в Neo4j (на основе метки). Когда вы выполняете этот запрос, Neo4j проверяет, есть ли какой-либо узел с проигрывателем меток. Если нет, он создает узел с именем «Jadeja» и возвращает его.
Если существует какой-либо узел с данной меткой, Neo4j возвращает их все.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Поскольку вы уже создали узел с именем «Dhawan» с меткой «player» в базе данных, Neo4j возвращает его, как показано на следующем снимке экрана.
Пример 2
Теперь попробуйте объединить узел с именем «CT2013» с меткой «Tournament». Поскольку нет узлов с этой меткой, Neo4j создает узел с заданным именем и возвращает его.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Как уже говорилось, поскольку нет узла с данным ярлыком (Турнир). Neo4j создает и возвращает указанный узел, как показано на следующем снимке экрана.
Слияние узла со свойствами
Вы также можете объединить узел с набором свойств. Если вы это сделаете, Neo4j выполнит поиск равного соответствия для указанного узла, включая свойства. Если он не находит, он создает.
Синтаксис
Ниже приведен синтаксис для объединения узла с использованием свойств.
пример
Ниже приведен пример Cypher Query для объединения узла с использованием свойств. Этот запрос пытается объединить узел с именем «jadeja», используя свойства и метку. Поскольку нет такого узла с точной меткой и свойствами, Neo4j создает его.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Как уже говорилось, поскольку нет узлов с указанными меткой и свойствами, он создает один, как показано на следующем снимке экрана.
OnCreate и OnMatch
Всякий раз, когда мы выполняем запрос на слияние, узел либо совпадает, либо создается. Используя on create и on match, вы можете установить свойства для указания того, создан ли узел или соответствует.
Синтаксис
пример
Ниже приведен пример Cypher Query, который демонстрирует использование предложений OnCreate и OnMatch в Neo4j. Если указанный узел уже существует в базе данных, то узел будет сопоставлен, и в узле будет создано свойство с парой ключ-значение isFound = «true».
Если указанный узел не существует в базе данных, то узел будет создан, и в нем будет создано свойство с парой ключ-значение isCreated = «true».
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Как уже говорилось, поскольку нет узла с указанными деталями, Neo4j создал его вместе со свойством isFound, как показано на следующем снимке экрана.
Объединить отношения
Как и узлы, вы также можете объединить отношения, используя предложение MERGE.
пример
Ниже приведен пример Cypher Query, который объединяет отношения с помощью предложения MATCH в Neo4j. Этот запрос пытается объединить отношение с именем WINNERS_OF между узлами «ind» (метка: страна и название: Индия) и ICC13 (метка: турнир и имя: ICC Champions Trophy 2013).
Поскольку такого отношения не существует, Neo4j создает его.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Поскольку указанное отношение не существует в базе данных, Neo4j создает его, как показано на следующем снимке экрана.
Таким же образом, вы можете объединить несколько отношений и ненаправленных отношений тоже.
Neo4j — Установить пункт
Используя предложение Set, вы можете добавлять новые свойства в существующий узел или отношение, а также добавлять или обновлять существующие значения свойств.
В этой главе мы собираемся обсудить, как
Установка свойства
Используя предложение SET, вы можете создать новое свойство в узле.
Синтаксис
Ниже приведен синтаксис для установки свойства.
пример
Прежде чем приступить к примеру, сначала создайте узел с именем Dhawan, как показано ниже.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете видеть, что свойство с парой ключ-значение Highestscore / 187 создается в узле с именем «Dhawan».
Удаление собственности
Синтаксис
Ниже приведен синтаксис удаления свойства из узла с помощью предложения SET.
пример
Прежде чем приступить к примеру, сначала создайте узел «jadeja», как показано ниже.
Ниже приведен пример Cypher Query, который удаляет свойство с именем POB из этого узла с помощью предложения SET, как показано ниже.
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.