Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Гремлин
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. Дополнительные сведения о неподдерживаемых функциях см. в статье о совместимости с Apache 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 обозначает связи между вершинами. Например, человек может знать другого человека, участвовать в событии или недавно находиться в месте.
Свойства: свойства экспресс-информации (или метаданные) о вершинах и краях. В вершинах или ребрах может быть любое количество свойств, и их можно использовать для описания и фильтрации объектов в запросе. Свойства примера включают в себя вершину, у которой есть имя и возраст, или ребро, которое может иметь отметку времени и (или) вес.
Метка: метка — это имя или идентификатор вершины или края. Можно группировать несколько вершин или ребер таким образом, чтобы все вершины или ребра в группе были снабжены определенной меткой. Например, граф может иметь несколько вершин с меткой человека.
Базы данных Graph часто включаются в категорию noSQL или нереляционной базы данных, так как нет зависимости от схемы или ограниченной модели данных. Это отсутствие схемы позволяет естественно и эффективно моделировать и хранить связанные структуры.
Пример графовой базы данных
Давайте рассмотрим пример графа, чтобы лучше понять, как в Gremlin могут выражаться запросы. На рисунке ниже в форме графа показано бизнес-приложение, управляющее данными о пользователях, их интересах и устройствах.
Этот граф имеет следующие типы вершин . Эти типы также называются метками в Gremlin:
Люди: Граф имеет три человека, по имени Робин, Томас и Бен.
Интересы: их интересы, в этом примере, включают игру в футбол.
Устройства: устройства, используемые пользователями.
Операционные системы: операционные системы, на которые работают устройства.
Место. Места доступа к устройствам.
Мы представим взаимосвязи между этими сущностями, используя следующие типы ребер:
Знает: представляет знакомство. Например, "Томас знает Робин".
Интересно: представляет интересы людей в нашем графе. Например, "Бен заинтересован в футболе".
Выполняется: представляет, какую ОС запускает устройство. Например, "Ноутбук запускает ОС 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())