Поделиться через


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

Замечание

Эта функция сейчас доступна в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения на уровне обслуживания и не рекомендуется для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий Microsoft Azure.

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

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

Основные различия

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

Запросы связей: соединения и обходы

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

Запросы к базе данных Graph: Связи хранятся в виде ребер, позволяя прямой обход от одного узла к другому. Графовые запросы могут эффективно перемещаться по нескольким прыжкам и сложным шаблонам. Языки запросов Graph, такие как GQL, упрощают экспресс-обходы и сопоставления шаблонов.

Example:

GQL:

MATCH (p:Person)-[:friendsWith]->(friend)-[:purchased]->(o:Order)
WHERE p.name = 'Alice';
RETURN o

SQL (эквивалентно):

SELECT o.*
FROM Person AS p
JOIN Friends_With AS fw ON p.id = fw.person_id
JOIN Person AS friend ON fw.friend_id = friend.id
JOIN Purchased AS pur ON friend.id = pur.person_id
JOIN "Order" AS o ON pur.order_id = o.id
WHERE p.name = 'Alice';

Замечание

GQL — это стандартизированный язык запросов ISO для баз данных графов, предназначенный для эффективного запроса и обработки структурированных графом данных. Та же международная рабочая группа, которая контролирует SQL, разрабатывает ее.

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

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

Рекомендации по масштабированию

  • Реляционные базы данных: Как правило, вертикально масштабируется (большие компьютеры) и может горизонтально масштабироваться с помощью сегментирования и репликации. Сегментация высокосвязанных схем является сложной и может привести к дополнительным затратам на сетевое взаимодействие.
  • Базы данных Graph: Вертикальное и горизонтальное масштабирование. Распределённые графовые базы данных разделяют графы между компьютерами, стремясь сохранить связанные узлы вместе для эффективного обхода.

Когда следует использовать каждый

Используйте базу данных Graph, если:

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

Используйте реляционную базу данных, если:

  • Данные в основном табличные или соответствуют четко определенной структуре.
  • Запросы включают интенсивные агрегации или операции с большими наборами данных.
  • У вас есть инструменты или знания, согласованные с SQL.

Гибридные подходы

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