В чем разница между графовой базой данных и реляционной базой данных?


В чем разница между графовой базой данных и реляционной базой данных?

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

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


Подробнее о реляционных базах данных »
Подробнее о графовых базах данных
 

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

Как графовые, так и реляционные базы данных хранят информацию и представляют взаимосвязи между данными. Однако в реляционной модели приоритет отдается объектам данных, в то время как в графовой модели – отношениям между объектами.

Модель реляционной базы данных

Реляционная база данных использует таблицы данных, которые упорядочивают информацию по строкам и столбцам. Столбцы содержат определенные атрибуты объекта данных, а строки представляют отдельные записи данных. 

Фиксированная схема реляционных баз данных требует заранее описывать связи между таблицами с помощью первичного и внешнего ключей. 

Пример

Рассмотрим приложение для социальных сетей с профилями клиентов, которые могут дружить друг с другом. Типичная модель требует двух таблиц для моделирования данных.
Таблица клиентов может выглядеть следующим образом:


Идентификатор

Название

География

C1

Алехандро

США

C2

Ана

США

C3

Кваку

США

C4

Пэт

США

Стол друзей может выглядеть следующим образом:


Идентификатор клиента

Идентификатор друга

C1

C2

C1

C3

C2

C4

C2

C1

C3

C1

C3

C4

Во время запроса, хотите ли вы ответить на такой вопрос: «Как зовут друзей Алехандро?». Движок базы данных сначала найдет строку в таблице клиентов для Алехандро.
 


Идентификатор

Название

География

C1

Алехандро

США

Затем движок создаст объединение всех строк в таблице друзей для Алехандро, используя его идентификатор
 


Идентификатор

Название

География

Идентификатор клиента

Идентификатор друга

C1

Алехандро

США

C1

C2

C1

Алехандро

США

C1

C3

Теперь для каждой строки движок создаст объединение в таблицу клиентов для каждого идентификатора друга
 


Идентификатор

Название

География

Идентификатор клиента

Идентификатор друга

Идентификатор

Название

География

C1

Алехандро

США

C1

C2

C2

Ана

США

C1

Алехандро

США

C1

C3

C3

Кваку

США

Наконец, движок возвращает имена его друзей.
 


Название

Ана

Кваку

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

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

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

Пример

Используя тот же пример данных социальной сети, что и выше, наша графовая база данных будет хранить сведения с применением 3 узлов, каждый из которых имеет 4 свойства и 2 ребра.

Теперь давайте посмотрим, как графовая база данных обрабатывает запрос «Как зовут друзей Алехандро?».

Сначала мы ищем узел «Клиент», представляющий Алехандро (выделено ниже).

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

В следующем шаге мы продолжаем перемещение к соседним узлам.

Наконец, движок возвращает имена его друзей.
 


Название

Ана

Кваку

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

Ключевые отличия: графовая и реляционная база данных

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

Отправка запросов

В графовых базах данных используются настраиваемые языки запросов, оптимизированные для быстрого поиска и извлечения связанных данных. Такие языки, как TinkerPop Gremlin, OpenCrypher и SPARQL, специально созданы для упрощения написания запросов, использующих сложные взаимосвязи данных, например, необходимые для таких операций, как рекурсивный доступ к данным, поиск путей и алгоритмы построения графов.

Напротив, реляционные базы данных используют SQL для извлечения данных и управления ими. С помощью SQL пользователи могут выполнять различные типы запросов, такие как SELECT, INSERT, UPDATE и DELETE, в таблицах. Реляционные базы данных превосходно обрабатывают структурированные данные с четко определенными связями между таблицами. Они особенно эффективны для выполнения сложной фильтрации, агрегирования и объединения нескольких таблиц.

Производительность

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

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

Удобство использования

Графовые базы данных ориентированы на отношения, что упрощает работу с ними при использовании подключенных данных. Эти базы данных отлично справляются с многоступенчатыми запросами, когда вы перемещаетесь по путям с несколькими взаимосвязями. Вы также можете использовать языки графовых запросов, такие как SPARQL, Gremlin или OpenCrypher, для выражения запросов, исследующих взаимосвязанные данные с помощью простого и специфичного для графов синтаксиса.

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

При этом реляционные базы данных являются развитыми и популярными в различных областях применения. Существует несколько инструментов и ресурсов, а также поддержка сообщества, к которым вы можете обратиться для оптимизации системы.

Когда использовать графовую базу данных, а когда –реляционную

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

Графовая база данных

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

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

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

Реляционная база данных

Реляционные базы данных предлагают структурированную схему с отличной поддержкой целостности данных. Реляционная база данных – лучший выбор в указанных ниже сценариях.

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

Краткое описание различий: реляционная база данных и графовая база данных

 
Реляционные базы данных

Графовые базы данных

Модель

Таблица со строками и столбцами.

Взаимосвязанные узлы с данными, представленными в виде узлов и ребер

Эксплуатация

Операции SQL, такие как создание, чтение, обновление и удаление (CRUD).

Операции включают CRUD и операции обхода графов

Производительность

При обходе взаимосвязей реляционные базы данных сталкиваются со сложными запросами, которые могут снизить производительность.

Графовая база данных отлично подходит для представления и запроса взаимосвязей между связанными данными.

Простота использования

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

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

Как AWS может помочь удовлетворить ваши требования к реляционным и графовым базам данных?

Amazon Web Services (AWS) предлагает решения как для реляционных, так и для графовых баз данных.

 

Реляционные базы данных

Amazon Relational Database Service (Amazon RDS) – это управляемый сервис, который упрощает настройку, использование и масштабирование реляционной базы данных в облаке. Он предоставляет экономически эффективные масштабируемые ресурсы и выполняет трудоемкие задачи по администрированию баз данных. Amazon RDS поддерживает несколько движков баз данных, например:

Amazon Aurora – это современный сервис реляционных баз данных, предлагающий производительность и высокую доступность при масштабировании, версии с полностью открытым исходным кодом, совместимые с MySQL и PostgreSQL. Aurora представляет собой полностью управляемый сервис, который автоматизирует самые времязатратные задачи администрирования, такие как распределение оборудования, настройка баз данных, применение исправлений и резервное копирование, гарантируя при этом безопасность, доступность и надежность на уровне коммерческих баз данных по цене на порядок меньше.

Графовые базы данных

Amazon Neptune – это специально разработанное высокопроизводительное ядро графовой базы данных. Сервис оптимизирован для хранения миллиардов связей и запроса графов с задержкой в миллисекунды.
Neptune поддерживает популярные графовые модели – граф свойств и фреймворк описания ресурсов W3C (RDF). Он также поддерживает языки запросов, такие как Gremlin и SPARQL, поэтому вы можете создавать запросы для навигации по наборам данных с высокой степенью связи.
Neptune предлагает несколько функций:

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

Приступайте к работе с графовыми и реляционными базами данных на AWS, создав аккаунт прямо сейчас.