Вы находитесь на странице: 1из 3

12 слайды

Neo4j — это NoSQL графовая СУБД с открытым исходным кодом, реализованная


на Java компанией Neo Technology.

NoSQL это подхо д к реализации масштабируемого хранилища


(базы) информации с гибкой моделью данных, отличающийся от
классических реляционных СУБД. В нереляционных базах проблемы
масштабируемости (scalability) и доступности (availability), важные
для Big Data, решаются за счёт атомарности (atomicity) и
согласованности данных (consistency) графовое хранилище, ключ-
значение (Key-value), документно-ориентированное хранилище,
колоночное хранилище.

По состоянию на 2021 год считается самой распространённой графовой СУБД.


Neo4j использует собственный формат хранения данных, специально
разработанный для хранения информации в виде графов. В ней нет такого
понятия как таблицы со строго заданными полями, она оперирует гибкой
структурой в виде нод(узлов) и связей между ними.

34 слайды
Основатели Neo4j столкнулись с проблемами производительности реляционной
СУБД и приступили к созданию первого прототипа Neo4j.

56 слайд

graph database, графовая база данных — база данных построенная на графах


— узлах и связях между ними
Cypher — язык для написания запросов к базе данных Neo4j (примерно, как
SQL в MYSQL MATCH  аналог WHERE, в круглых скобках мы описываем
свойства вершины (условие поиска), а RETURN — аналог SELECT, в нем мы
описываем, что вернуть
node, нода — объект в базе данных, узел графа. Количество узлов
ограниченно 2 в степени 35  34 биллиона
node label, метка ноды — используется как условный «тип ноды». Например,
ноды типа movie могут быть связанны с нодами типа actor. Метки нод —
регистрозависимые, причем *Cypher не выдает ошибок, если набрать не в
том регистре название.
relation, связь — связь между двумя нодами, ребро графа. Количество
связей ограниченно 2 в степени 35  34 биллиона
relation identirfier, тип связи — в Neo4j у связей. Максимальное количество
типов связей 32767
properties, свойства ноды — набор данных, которые можно назначить ноде.
Например, если нода — это товар, то в свойствах ноды можно хранить id
товара из базы MySQL
node ID, ID нода — уникальный идентификатор ноды. По умолчанию, при
просмотрах результата отображается именно этот ID

7 слайд
Графовые базы данных, в первую очередь, предназначены для решения тех
задач, где данные тесно связаны между собой в отношениях, которые могут
углубляться в несколько уровней. Например, в реляционных базах данных нам
легко выполнить запрос: «Дайте мне список всех актеров, которые были в
фильме с Кевином Бэконом».
Но предположим, что мы хотим получить имена всех актеров, которые были в
кино с кем-то, кто был в кино с Кевином Бэконом. И тут у нас появляется ещё
один JOIN. С каждой новой связью мы должны добавлять JOIN, а запрос будет
становится все более сложным, трудоёмким, все менее производительным.
8 слайд
Глубокие связи особенно актуальны в различных социальных проектах, когда нам
нужно получать друзей друзей, в задачах поиска маршрутов и т.п. Графовые базы
данных призваны решить эти проблемы, когда наши данные могут быть удаленны
друг от друга на два и более отношений. Они решаются очень элегантно, когда
мы моделируем данные как «вершины графов», а связи как «ребра графа» между
этими узлами. Мы можем делать обход графа с помощью давно известных и
эффективных алгоритмов.

9 слайд

Преимущества:

Графы понятны на интуитивном уровне и являются частью школьной


программы, поэтому их можно использовать при обсуждении задач с
клиентом;
Простой язык запросов и наглядный результат, поэтому может
использоваться аналитиками;
Гибкая структура данных, проще вносить изменения в случае изменения
требований;
Возможность создания приближенных к реальной жизни моделей, без
низкоуровневых деталей.

10 слайд
Графовые базы уже нашли применение в:

Социальных сетях
Системах рекомендаций (с этим товаром часто покупают…)
Обработка пользовательских данных, корреляция данных из разных
источников (информационный след в сети)

11 слайд
Поэтому если у вас уже есть приложение с множеством связей, и обход этих
связей занимает много времени и ресурсов — стоит присмотреться в сторону
графов, т.к. обход связей в них практически ничего не стоит.

12 слайд
Возможность использования в Java EE  да, такая возможность есть.
Как заявляно на официальном сайте, Neo4j предлагает богатый набор
возможностей для Java разработчиков. Будучи графовой базой данных, Neo4j не
обслуживает данные реляционным способом, тем не менее, благодаря JDBC
драйверу, проекты, использующие классический стандарт JDBC в реляционной
парадигме, могут взаимодействовать с Neo4j. Автономный сервер Neo4j можно
установить на любой машине, а затем получить к нему доступ через его
двоичный «Bolt» протокол через официальный драйвер или любые драйверы с
поддержкой bolt.

В итоге можно сказать, что Neo4j — это эффективное и удачное решение для
задач для взаимосвязанных сущностей.
Однако Neo4j не является решением всех возможных проблем, поэтому данную
графовую БД, как и в целом графовые БД, следует использовать для решения
задач, которые решаются только графами.

Вам также может понравиться