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

Что такое граф?

Термин «граф» пришел из области математики. Граф содержит набор узлов и ребер.

Узлы

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

Ребра

Ребра обозначают связи между узлами. Например, ребра могут описывать взаимосвязи типа «предок‑потомок», действия или права владения. Они могут представлять собой отношения как «один ко многим», так и «многие ко многим». Ребро всегда имеет начальный и конечный узел, тип и направление.

Свойства

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

Пример графа

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

Пример графа социальной сети

Каковы варианты использования графовых баз данных?

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

Выявление мошенничества

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

Сервисы рекомендаций

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

Оптимизация маршрутов

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

  • Кратчайший маршрут из точки А в точку Б на карте с учетом различных путей.
  • Подбор подходящего сотрудника для конкретной рабочей смены на основе анализа различных возможностей, местоположения и навыков.
  • Подбор оптимального оборудования для работы с учетом таких параметров, как стоимость и срок службы оборудования.

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

Обнаружение закономерностей

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

Управление знаниями

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

В чем преимущества графовых баз данных?

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

Гибкость

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

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

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

Эффективность

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

Как работают графовая аналитика и графовые базы данных?

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

Языки графовых запросов

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

  • Количество переходов между узлами
  • Самый длинный путь / кратчайший путь / оптимальные пути
  • Значение узлов

Apache TinkerPop Gremlin, SPARQL и openCypher – популярные языки графовых запросов.

Графовые алгоритмы

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

Кластеризация

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

Разделение

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

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

В каких случаях графовые базы данных не подходят?

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

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

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

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

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

  • Бессерверность: мгновенно масштабируйте графовые рабочие нагрузки с точным приростом и экономьте до 90 % затрат на базы данных по сравнению с выделением ресурсов для обеспечения максимальной емкости.
  • Высокая доступность, в том числе Глобальная база данных Amazon Neptune для распределенных глобальных приложений, поддерживающих высокую производительность локального чтения.
  • Разделение хранения и вычислений: повысьте производительность чтения с использованием до 15 реплик чтения, работающих с одним и тем же базовым хранилищем, без необходимости выполнять запись на узлах реплик.
  • Высокая надежность и долговечность: отказоустойчивое и самовосстанавливающееся хранилище, восстановление на момент времени, непрерывное резервное копирование и многие другие функции. Amazon Neptune обеспечивает долговечность данных в трех зонах доступности в пределах одного региона за счет репликации новых записей шестью способами. При этом вы платите только за одну копию.
  • Высокая степень защиты: стандартное шифрование при хранении, сетевая изоляция и расширенный аудит, а также возможности управления разрешениями на уровне ресурсов и точный доступ.
  • Широкий охват соответствия стандартам: FedRAMP (Moderate и High), SOC (1, 2 и 3), а также HIPAA.
  • Полная управляемость: при работе с базами данных больше не требуется заниматься такими административными задачами, как подготовка оборудования, установка исправлений ПО, установка и настройка самой базы данных, а также ее резервное копирование.

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

Введение в Amazon Neptune
Начало работы с бессерверным Amazon Neptune