Что такое Azure Cosmos DB для Apache Gremlin?

Область применения: Гремлин

Azure Cosmos DB — это полностью управляемая база данных NoSQL и реляционная база данных для современной разработки приложений.

Azure Cosmos DB для Apache Gremlin — это служба базы данных графов, которая может использоваться для хранения массивных графов с миллиардами вершин и ребрами. Вы можете запрашивать графы с задержкой в миллисекунды и легко развивать структуру графов. API для Gremlin построен на основе Apache TinkerPop, платформы вычислений графа, которая использует язык запросов Gremlin.

Внимание

Обработчик графа Azure Cosmos DB соответствует спецификации Apache TinkerPop. Но есть некоторые различия в особенностях реализации Azure Cosmos DB. Некоторые функции, поддерживаемые Apache TinkerPop, недоступны в Azure Cosmos DB. Дополнительные сведения о неподдерживаемых функциях см. в статье Поддержка графов на языке Gremlin в Azure Cosmos DB и совместимость с функциями TinkerPop.

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

Совет

Хотите попробовать API для Gremlin без обязательств? Создайте учетную запись Azure Cosmos DB с помощью бесплатной версии Azure Cosmos DB .

Преимущества API для Gremlin

API для Gremlin добавил преимущества создания в Azure Cosmos DB:

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

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

  • Быстрые запросы и обходы с наиболее широко принятым стандартом запросов графа: храните разнородные вершины и края и запрашивайте их с помощью знакомого синтаксиса Gremlin. Gremlin — это императивный, функциональный язык запросов, который предоставляет комфортный интерфейс для реализации общих алгоритмов графов. API для Gremlin включает расширенные запросы и обходы в режиме реального времени без необходимости указывать указания схемы, вторичные индексы или представления. Дополнительные сведения см. в графах запросов с помощью Gremlin.

  • Полностью управляемая база данных графа: Azure Cosmos DB устраняет необходимость управления ресурсами базы данных и компьютера. Большинство существующих платформ баз данных графов связаны с ограничениями их инфраструктуры и часто требуют высокой степени обслуживания для обеспечения их работы. Полностью управляемая служба Cosmos DB избавляет от необходимости управлять виртуальными машинами, обновлять программное обеспечение среды выполнения, управлять сегментированием или репликацией или заниматься сложными обновлениями на уровне данных. Каждый граф автоматически сохраняется и защищается от региональных сбоев. Это управление позволяет разработчикам сосредоточиться на предоставлении ценности приложения вместо работы и управления базами данных графов.

  • Автоматическое индексирование. По умолчанию API для Gremlin автоматически индексирует все свойства в узлах (также называемых вершинами) и ребрами в графе и не ожидает или не требует никакой схемы или создания вторичных индексов. Дополнительные сведения см. в статье об индексировании в Azure Cosmos DB.

  • Совместимость с Apache TinkerPop: API для Gremlin поддерживает стандарт Apache TinkerPop с открытым исходным кодом. Стандарт Apache TinkerPop имеет достаточно экосистему приложений и библиотек, которые можно легко интегрировать с API.

  • Уровни согласованности с возможностью настройки: Azure Cosmos DB предоставляет пять четко определенных уровней согласованности, чтобы обеспечить правильный компромисс между согласованностью и производительностью приложения. Для запросов и операций чтения служба Azure Cosmos DB предлагает пять отдельных уровней согласованности — сильный, с ограниченным устареванием, сеансовый, с согласованностью префиксов и согласованный в конечном счете. Эти разделенные, четко определенные уровни согласованности позволяют принимать обоснованные компромиссы между показателями согласованности, доступности и задержки. Дополнительные сведения см. в статье об уровне согласованности данных в Azure Cosmos DB.

Распространенные сценарии API для Gremlin

Ниже приведены некоторые полезные примеры использования поддержки графа базы данных Azure Cosmos DB.

  • Социальные сети или клиент 365: объединение данных о клиентах и их взаимодействии с другими людьми, вы можете разрабатывать персонализированные интерфейсы, прогнозировать поведение клиентов или связывать людей с другими людьми с аналогичными интересами. Базу данных Azure Cosmos DB можно использовать для управления социальными сетями и отслеживания данных о клиенте и его предпочтениях.

  • Подсистемы рекомендаций: этот сценарий часто используется в розничной отрасли. Объединяя сведения о продукции, пользователях и операциях пользователей, например приобретении, поиске и оценке товара, вы можете создать пользовательские рекомендации. База данных Azure Cosmos DB с минимальной задержкой, гибким масштабированием и встроенной поддержкой графа представляет собой идеальный вариант моделирования этих взаимосвязей.

  • Геопространственный: многие приложения в телекоммуникациях, логистике и планировании путешествий должны найти расположение в пределах области или найти самый короткий или оптимальный маршрут между двумя расположениями. База данных Azure Cosmos DB поможет легко справиться с этими задачами.

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

Основные сведения о базах данных графов

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

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

Объекты графа свойства

Граф — это структура, состоящая из вершин и ребер. Оба объекта могут иметь произвольное число пар ключ-значение в качестве свойств.

  • Вершины или узлы: вершины указывают дискретные сущности, такие как человек, место или событие.

  • Edges/relationships: Edges обозначает связи между вершинами. Например, человек может знать другого человека, участвовать в событии или недавно находиться в месте.

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

  • Метка — это имя или идентификатор вершины либо ребра. Можно группировать несколько вершин или ребер таким образом, чтобы все вершины или ребра в группе были снабжены определенной меткой. Например, граф может иметь несколько вершин с меткой "person".

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

Пример графовой базы данных

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

Пример графа свойств с именами, устройствами и интересами.

Этот граф имеет следующие типы вершин . Эти типы также называются метками в Gremlin:

  • Люди: граф имеет три человека; Робин, Томас и Бен.

  • Интересы: их интересы, в этом примере, включают игру футбола.

  • Устройства: устройства, используемые пользователями.

  • Операционные системы: операционные системы, на которые работают устройства.

  • Место: место[s], к которой обращаются устройства.

Мы представим взаимосвязи между этими сущностями, используя следующие типы ребер:

  • Знает: представляет знакомство. Например, "Томас знает Робин".

  • Интересно: представляет интересы людей в нашем графе. Например, "Бен заинтересован в футболе".

  • Выполняется: представляет, какую ОС запускает устройство. Например, "Ноутбук запускает ОС Windows".

  • Используется: представляет, какое устройство использует пользователь. Например, "Robin использует телефон Motorola с серийным номером 77".

  • Расположение: представляет расположение, из которого обращаются устройства.

Консоль Gremlin — это интерактивный терминал от Apache TinkerPop, используемый для взаимодействия с данными графа. Дополнительные сведения см . в кратком руководстве по консоли Gremlin. Вы также можете выполнить эти операции с помощью драйверов Gremlin на платформе по вашему усмотрению — Java, Node.js, Python или .NET. В следующих примерах показано, как обращаться к данным графа с помощью консоли Gremlin.

Сначала рассмотрим создание, чтение, обновление и удаление (CRUD). Следующая инструкция Gremlin вставляет вершину Томаса в граф с несколькими свойствами:

g.addV('person').
  property('id', 'thomas.1').
  property('firstName', 'Thomas').
  property('lastName', 'Andersen').
  property('age', 44)

Совет

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

Далее, следующая инструкция Gremlin вставляет известный край между Томасом и Робином.

g.V('thomas.1').
  addE('knows').
  to(g.V('robin.1'))

Следующий запрос возвращает вершины человека в порядке убывания их первых имен:

g.V().
  hasLabel('person').
  order().
  by('firstName', decr)

Если часть графа подсвечивается, необходимо ответить на вопросы типа: "Какие операционные системы используют друзья Томаса?" Вы можете выполнить эту операцию обхода Gremlin, чтобы получить сведения из графа:

g.V('thomas.1').
  out('knows').
  out('uses').
  out('runsos').
  group().
  by('name').
  by(count())

Следующие шаги