Графовые базы данных: хранение связанных данных

Андрей Волков

Андрей Волков

Системное, сетевое администрирование +DBA. И немного программист!))  Профиль автора.

Графовые базы данных: что это и для чего используетсяГрафовые базы данных — белые вороны в стае баз данных NoSQL. Причиной раз­работки большинства баз данных NoSQL стала необходимость работать на кластерах, которая привела к агрегатно-ориентированным моделям больших записей с простыми связями. Графовые базы данных появились как решение другой проблемы и поэтому имеют противоположную модель — маленькие записи со сложными связями, как по­казано на рис. 1.

В таком контексте этот граф — не диаграмма, а структура данных с узлами, соеди­ненными ребрами.

Модель графовых баз данных

Рис. 1.  Пример графовой структуры

На рис. 1 показана веб-информация с очень маленькими узлами и многочислен­ными связями между ними. Работая с этой структурой, мы можем задавать вопросы вроде “найти книгу в категории “Базы данных”, написанную кем-то, чей друг мне нра­вится”.

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

Фундаментальная модель данных графовых баз очень простая: узлы, соединенные ребрами (которые называют также дугами). Помимо этой существенной характеристики, существует много вариаций в моделях данных — в частности, в том, какие механизмы используются для хранения узлов и ребер. Например, база FlockDB, представляет собой простую совокупность узлов и ребер без какого-либо механизма для дополнительных атрибутов, Neo4J позволяет присоединять Java-объекты в качестве свойств узлов и ребер в неструктурированном виде; a Infinite Graph хранит Java-объекты, являющиеся экземплярами под­классов таких встроенных типов, как узлы и ребра.

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

В графических базах данных обход узлов требует очень небольших затрат. В основ­ном это объясняется тем, что графовые базы данных переносят большую часть работы, связанной с навигацией по связям, с момента запроса на момент вставки. Это есте­ственно оправдывает себя в ситуациях, когда производительность запроса важнее ско­рости вставки.

Большую часть времени вы ищете данные, перемещаясь по ребрам сети с запро­сами вроде “назовите мне всех, кто любит Анну и Барбару”. Однако вам необходима
отправная точка, поэтому некоторые узлы могут быть индексированы атрибутом, на­пример идентификатором. Таким образом, вы можете начать с поиска идентификатора (например, найти людей с именами Анна и Барбара), а затем начать перемещение по ребрам. Как видим, графовые базы предназначены для ситуаций, в которых большую часть времени вы перемещаетесь по связям.

Акцент на связях резко отличает графовые базы данных от агрегатно­ориентированных. Это отличие имеет несколько последствий; такие базы данных чаще работают на одном сервере, а не распределены по кластерам. Транзакции ACID долж­ны охватывать несколько узлов и ребер, чтобы обеспечивать согласованность данных. Единственное, что связывает их с агрегатно-ориентированными базами данных, — от­рицание реляционной модели и повышенное внимание специалистов, объясняемое интересом к технологии NoSQL.

 

Вас заинтересует / Intresting for you:

Отношения в базе данных и  тех...
Отношения в базе данных и тех... 1017 просмотров Андрей Волков Wed, 14 Nov 2018, 09:14:11
Неструктурированные базы данны...
Неструктурированные базы данны... 1982 просмотров Андрей Волков Wed, 14 Nov 2018, 10:57:25
Обзор Couchbase: умная и эффек...
Обзор Couchbase: умная и эффек... 2673 просмотров Андрей Волков Tue, 01 Oct 2019, 15:34:03
Материализованные представлени...
Материализованные представлени... 759 просмотров Андрей Волков Wed, 14 Nov 2018, 11:20:02
Войдите чтобы комментировать

apv аватар
apv ответил в теме #9439 25 сен 2019 14:03

Irina Glebova пишет: А какая графовая база является сейчас лидером рынка по функциональности? по быстродействию?

Явных лидеров нет, все сильно зависит от специфики конкретной задачи.
anders7777, ждем еще публикаций!
Irina Glebova аватар
Irina Glebova ответил в теме #9436 25 сен 2019 06:52
А какая графовая база является сейчас лидером рынка по функциональности? по быстродействию?
OraDevel аватар
OraDevel ответил в теме #9415 11 авг 2019 15:14
Доступно объяснили базовые понятия. Лайк!