Главная страница

4. базы данных nosql


Скачать 1.03 Mb.
Название4. базы данных nosql
Дата13.12.2021
Размер1.03 Mb.
Формат файлаpdf
Имя файлаilovepdf_merged (2).pdf
ТипДокументы
#301515
страница4 из 4
1   2   3   4
Рис. 4.14. Пример графовой БД
Графовые базы данных специально предназначены для хранения такой ин- формации, но в более крупном масштабе, чем можно показать на диаrрамме. Они идеально подходят для хранения любых данных, связанных со сложными отно- шениями, например, социальных сетей, товарных предпочтений или правил при- ема на работу.
Фундаментальная модель данных графовых баз очень простая: узлы – это сущности, соединенные ребрами (связями). Узлы имеют свойства. Ребра могут иметь свойства и направление.
Организация графа позволяет один раз записать данные, а затем интерпре- тировать их разными способами в соответствии со связями.
Как только построен граф узлов и ребер, база данных позволит послать к ней запрос. В этом проявляется важное различие между графовыми и реляционными базами данных.
Несмотря на то что реляционные базы данных могут реализовывать связи с помощью внешних ключей, операции соединения требуют навигации, которая может оказаться затратной. Следовательно, в моделях данных с большим коли- чеством связей производительность упадет.

В графических базах данных обход узлов требует очень небольших затрат.
В основном это объясняется тем, что графовые базы данных переносят большую часть работы, связанной с навигацией по связям с момента запроса на момент вставки. Это естественно оправдывает себя в ситуациях, когда производитель- ность запроса важнее скорости вставки. Большую часть времени вы ищете дан- ные, перемещаясь по ребрам сети с запросами вроде таких:
 «найти людей с именем Анна»;
 «найти книгу в категории «Базы данных»
 «найти автора(ов) книги «Управление данными»»;
 «найти, чем интересуется Иван» и т.д.
Однако для организации поиска необходима отправная точка, поэтому неко- торые узлы могут быть индексированы атрибутом, например, идентификатором.
Таким образом, можно начать с поиска идентификатора (например, найти людей с именами Анна и Барбара), а затем начать перемещение по ребрам.
Как следует из рассмотренных свойств, графовые базы предназначены для задач, в которых большую часть времени выполняется поиск – происходит пере- мещение по связям.
Акцент на связях сильно отличает графовые базы данных от агрегатно- ори- ентированных. Это отличие проявляется в том, что, во-первых, графовые базы данных чаще работают на одном сервере, а не распределены по кластерам, а во- вторых, в графовых БД реализован механизм транзакций, обеспечивающий со- гласованность данных.
Единственное, что связывает их с агрегатно-ориентированными базами дан- ных – это отрицание реляционной модели.
Отношения (связи) между узлами создаются в двух направлениях. Рассмот- рим графовую БД, изображенную на рис. 4.15. Например, узел Анна работает в
OAO «Аналитика», а узел Екатерина нет.

Иван
Анна
OAO «Аналитика»
Максим
Работает веб-программистом с февраля 2019 г.
Друг с 2015 г.
Коллега с 2019 г.
Работает
Java- программистом с января 2019 г.
Работает разработчиком приложений с марта
2019 г.
Рис. 4.14. Графовая БД
Направленность отношения позволяет проектировать сложные предметно- ориентированные модели. Известные входящие и исходящие отношения можно обходить в обоих направлениях.
Отношения являются полноправными элементами графовых баз данных.
Собственно, ценность графовых баз данных в основном обусловлена отношени- ями. Отношения имеют не только тип, начальный и конечный узел, но и свои собственные свойства. Используя эти свойства, в отношение можно внести ин- формацию, например, такую: когда узлы стали «друзьями», каково расстояние между узлами и что между ними общего. Эти свойства отношений можно исполь- зовать при создании запроса к графу.
Так как мощь графовых баз данных в основном обеспечивается отношени- ями и их свойствами, требуется серьезная аналитическая и конструкторская ра- бота по моделированию отношений между объектами предметной области. До- бавление новых типов узлов в графовую БД выполняется просто. Изменение су- ществующих узлов и связей между ними эквивалентно осуществлению миграции данных, потому что эти изменения необходимо вносить в каждом узле и в каждом отношении между существующими данными.
Графовые БД поддерживают транзакции. Прежде чем изменить какой-ни- будь узел или добавить какое-то отношение к существующим узлам, необходимо начать транзакцию, в которую упаковываются операции изменения. Исключение составляет только операция чтения. Чтение можно выполнять без создания тран- закций.

Ниже приведен код транзакции, которая применяется к БД, граф которой приведен на рис. 4.14, и создает в ней узел и задает его свойства. Здесь транзакция начата функцией success и закончена функцией finish:
Transaction.success = database.beginTx(); try {
Node друг = GraphDB.createNode(); друг.setProperty("name", “Илья");
Максим.createRelationshipTo(Илья, друг);
Иван.createRelationshipTo(Илья, друг); transaction.success();
} finally { transaction.finish();
На рис. 4.15 приведен граф БД после выполнения транзакции на добавление нового узла и его свойств.
Друг
Иван
Анна
OAO «Аналитика»
Максим
Работает веб-программистом с февраля 2019 г.
Друг с 2015 г.
Коллега с 2019 г.
Работает
Java- программистом с января 2019 г.
Работает разработчиком приложений с марта
2019 г.
Илья
Друг
Рис. 4.15. Графовая БД после добавления нового узла
Рассмотрим возможности запросов, которые применяются в графовых БД.
Поскольку свойства узла индексируются и свойства отношений также ин- дексируются, то узел или ребро можно найти по значению индекса. Индексы уз- лов задаются либо в момент их добавления в базу данных, либо при их последу- ющем обходе.
Если ищем узел Анна в БД на рис. 4.15, то можем запросить индекс для свой- ства name, имеющего значение Анна. Имея этот узел, можем выяснить все его отношения, в том числе входящие и исходящие.

При запросе свойств связей можно применять фильтры направлений.
Настоящая мощь графовых БД проявляется в ситуациях, когда необходимо обойти граф на любой глубине и указать начальную точку обхода. Это особенно полезно при попытках найти узлы, связанные с начальной точкой, на более чем одном уровне глубины.
Одно из преимуществ графовых БД – это разнообразие возможностей по- иска путей между двумя узлами: можно определить, есть ли несколько путей, найти все пути или кратчайший путь. Эта функциональная возможность исполь- зуется в социальных сетях для демонстрации отношений между двумя узлами.
Соответствие терминологии, принятой в реляционной модели БД и графо- вой модели БД приведено в табл. 4.5.
Табл. 4.5. Соответствие терминов
Реляционная модель БД Столбчатая БД
Атрибут
Узел
Строка
Подграф
Идентификатор строки Индекс узла
Таблица
Граф
Рассмотрим примеры, где БД типа «граф» подходят лучше всего:
Связанные данные.
Графовые данные можно развернуть и очень эффективно использовать в со- циальных сетях. Вообще любая предметная область с богатыми взаимными свя- зями подходит для описания с помощью графа. Если в одной и той же базе дан- ных существуют отношения между сущностями из разных предметных областей
(например, социальные, географические и коммерческие связи), можно повысить их информативность, предусмотрев возможность обхода графа с пересечением границ предметных областей.
Маршрутизация, диспетчеризация и геолокационные сервисы.
Каждое место назначения или адрес можно представить в виде узла, а все узлы, в которые необходимо выполнить доставку, можно моделировать с помо- щью графа. Отношения между узлами могут иметь отношение, описывающее
расстояние. Это позволяет обеспечить эффективную доставку товаров. Свойства расстояния и адреса можно использовать в графах, описывающих предпочтения пользователей, так что приложение может выдавать рекомендации о хороших ре- сторанах или местах для развлечений, расположенных поблизости. Можно также создать узлы для понравившихся точек, например, ресторана, и уведомить поль- зователей, что они находятся поблизости, используя геолокационную службу.
Справочные базы данных.
После того как в системе созданы узлы и отношения, их можно использовать для выдачи рекомендаций типа «ваши друзья также купили этот товар» или «при заказе этого товара обычно также заказывают следующие товары». У таких спра- вочных баз данных есть один интересный побочный эффект – при увеличении объема баз данных количество узлов и отношений, доступных для выдачи реко- мендаций, быстро увеличивается.
В некоторых ситуациях графовые базы данных могут оказаться неприемле- мыми:
 при необходимости обновлять все или часть сущностей, например, при выработке аналитического решения, в котором свойства всех сущностей могут быть изменены. Изменение свойства во всех узлах является сложной труднореа- лизуемой операцией;
 при выполнении глобальных операций над графом, то есть тех, что за- трагивают весь граф.
Изучение особенностей баз данных типа «граф» позволяет сделать следую- щие выводы:
1. Графовая модель БД – это информационные объекты и отношения между ними, представленные в виде графа.
2. Графовая модель БД не является агрегатно-ориентированной.
3. Единицей хранения в графовых БД является узел (объект) с приписан- ными ему свойствами
4. Основная операция, выполняемая в графовых БД – поиск информации.
5. Для реализации поиска в графовых БД необходимо выполнить индекса- цию узлов и отношений между ними.
6. Изменения в структуре графовой модели БД выполняются с помощью транзакций.
7. Возможность поиска путей между двумя узлами.
1   2   3   4


написать администратору сайта