Знакомство с Azure Cosmos DB. API GremlinIntroduction to Azure Cosmos DB: Gremlin API

Azure Cosmos DB  — это глобально распределенная, многомодельная служба базы данных Майкрософт, необходимая для работы с критически важными приложениями.Azure Cosmos DB is the globally distributed, multi-model database service from Microsoft for mission-critical applications. Это многомодельная база данных, которая поддерживает модели документов, пар "ключ-значение", графов и "столбцов-семейств".It is a multi-model database and supports document, key-value, graph, and column-family data models. Azure Cosmos DB: API Gremlin используется для хранения и работы с графическими данными в полностью управляемой службе базы данных при любом масштабе.The Azure Cosmos DB Gremlin API is used to store and operate with graph data on a fully managed database service designed for any scale.

Архитектура графа базы данных Azure Cosmos DB

В этой статье содержатся сведения об интерфейсе API Gremlin для Azure Cosmos DB и объясняется, как его использовать для хранения больших графов с миллиардами вершин и ребер.This article provides an overview of the Azure Cosmos DB Gremlin API and explains how you can use it to store massive graphs with billions of vertices and edges. Вы можете запрашивать графы с задержкой в миллисекунды и легко развивать структуру графов.You can query the graphs with millisecond latency and evolve the graph structure easily. Azure Cosmos DB Gremlin API основан на стандарте базы данных графа Apache TinkerPop  и использует язык запросов Gremlin.Azure Cosmos DB's Gremlin API is based on the Apache TinkerPop graph database standard, and uses the Gremlin query language.

Gremlin API Azure Cosmos DB объединяет мощь алгоритмов базы данных графов с хорошо масштабируемой управляемой инфраструктурой, обеспечивая уникальное гибкое решение для наиболее распространенных проблем с данными, связанных с отсутствием гибкости и реляционных подходов.Azure Cosmos DB's Gremlin API combines the power of graph database algorithms with highly scalable, managed infrastructure to provide a unique, flexible solution to most common data problems associated with lack of flexibility and relational approaches.

Функции базы данных графов в Azure Cosmos DBFeatures of Azure Cosmos DB graph database

База данных Azure Cosmos DB является полностью управляемой базой данных графа, которая обеспечивает глобальное распределение, гибкое масштабирование хранилища и пропускной способности, автоматическое индексирование и возможность выполнять запросы, настраиваемые уровни согласованности, а также поддержку стандартной платформы вычисления графа TinkerPop.Azure Cosmos DB is a fully managed graph database that offers global distribution, elastic scaling of storage and throughput, automatic indexing and query, tunable consistency levels, and support for the TinkerPop standard.

Ниже перечислены отличительные особенности, которые предлагает Azure Cosmos DB Gremlin API.The following are the differentiated features that Azure Cosmos DB Gremlin API offers:

  • Гибко масштабируемые пропускная способность и хранилищеElastically scalable throughput and storage

    На практике графы должны масштабироваться за пределы емкости одного сервера.Graphs in the real world need to scale beyond the capacity of a single server. Azure Cosmos DB поддерживает горизонтально масштабируемые базы данных графа, которые могут иметь практически неограниченный размер с точки зрения хранилища и предоставляемой пропускной способности.Azure Cosmos DB supports horizontally scalable graph databases that can have a virtually unlimited size in terms of storage and provisioned throughput. По мере увеличения масштаба базы данных графа, данные будут автоматически распределяться с использованием секционирования данных графа.As the graph database scale grows, the data will be automatically distributed using graph partitioning.

  • Репликация между несколькими регионамиMulti-region replication

    Azure Cosmos DB может автоматически реплицировать данные графа в любой регион Azure по всему миру.Azure Cosmos DB can automatically replicate your graph data to any Azure region worldwide. Глобальная репликация упрощает разработку приложений, которым требуется глобальный доступ к данным.Global replication simplifies the development of applications that require global access to data. Помимо минимизации задержки чтения и записи в любой точке мира, Azure Cosmos DB предоставляет механизм автоматической отработки отказа в любом регионе, который может обеспечить непрерывность работы вашего приложения в редких случаях прерывания обслуживания в регионе.In addition to minimizing read and write latency anywhere around the world, Azure Cosmos DB provides automatic regional failover mechanism that can ensure the continuity of your application in the rare case of a service interruption in a region.

  • Быстрые запросы и обходы с использованием наиболее распространенного стандарта запросов графаFast queries and traversals with the most widely adopted graph query standard

    Храните разные типы вершин и ребер, а также выполняйте их запросы, используя знакомый синтаксис Gremlin.Store heterogeneous vertices and edges and query them through a familiar Gremlin syntax. Gremlin — это императивный, функциональный язык запросов, который предоставляет комфортный интерфейс для реализации общих алгоритмов графов.Gremlin is an imperative, functional query language that provides a rich interface to implement common graph algorithms.

    Azure Cosmos DB позволяет формировать многофункциональные запросы и обходы в режиме реального времени без необходимости указывать подсказки для схемы, вторичные индексы или представления.Azure Cosmos DB enables rich real-time queries and traversals without the need to specify schema hints, secondary indexes, or views. Дополнительные сведения см. в статье Поддержка графа Gremlin в базе данных Azure Cosmos DB.Learn more in Query graphs by using Gremlin.

  • Полностью управляемая база данных графаFully managed graph database

    Azure Cosmos DB устраняет необходимость управления базой данных и вычислительными ресурсами.Azure Cosmos DB eliminates the need to manage database and machine resources. Большинство существующих платформ баз данных графов связаны с ограничениями их инфраструктуры и часто требуют высокой степени обслуживания для обеспечения их работы.Most existing graph database platforms are bound to the limitations of their infrastructure and often require a high degree of maintenance to ensure its operation.

    Полностью управляемая служба Cosmos DB избавляет от необходимости управлять виртуальными машинами, обновлять программное обеспечение среды выполнения, управлять сегментированием или репликацией или заниматься сложными обновлениями на уровне данных.As a fully managed service, Cosmos DB removes the need to manage virtual machines, update runtime software, manage sharding or replication, or deal with complex data-tier upgrades. Каждый граф автоматически сохраняется и защищается от региональных сбоев.Every graph is automatically backed up and protected against regional failures. Эти гарантии позволяют разработчикам сосредоточиться на обеспечении ценности приложения вместо эксплуатации своих баз данных графов и управления ими.These guarantees allow developers to focus on delivering application value instead of operating and managing their graph databases.

  • Автоматическая индексацияAutomatic indexing

    По умолчанию база данных Azure Cosmos DB автоматически индексирует все свойства в узлах и ребрах в графе, не ожидая и не требуя наличия какой-либо схемы или создания дополнительных индексов.By default, Azure Cosmos DB automatically indexes all the properties within nodes and edges in the graph and doesn't expect or require any schema or creation of secondary indices. Дополнительные сведения об индексировании в Azure Cosmos DB.Learn more about indexing in Azure Cosmos DB.

  • Совместимость с Apache TinkerPopCompatibility with Apache TinkerPop

    Azure Cosmos DB поддерживает стандарт Apache TinkerPop с открытым исходным кодом.Azure Cosmos DB supports the open-source Apache TinkerPop standard. Стандарт Tinkerpop имеет обширную экосистему приложений и библиотек, которые легко интегрируются с Gremlin API Azure Cosmos DB.The Tinkerpop standard has an ample ecosystem of applications and libraries that can be easily integrated with Azure Cosmos DB's Gremlin API.

  • Настраиваемые уровни согласованностиTunable consistency levels

    Azure Cosmos DB предоставляет пять четко определенных уровней согласованности для достижения правильного компромисса между согласованностью и производительностью приложения.Azure Cosmos DB provides five well-defined consistency levels to achieve the right tradeoff between consistency and performance for your application. Для запросов и операций чтения служба Azure Cosmos DB предлагает пять отдельных уровней согласованности — сильный, с ограниченным устареванием, сеансовый, с согласованностью префиксов и согласованный в конечном счете.For queries and read operations, Azure Cosmos DB offers five distinct consistency levels: strong, bounded-staleness, session, consistent prefix, and eventual. Эти разделенные, четко определенные уровни согласованности позволяют принимать обоснованные компромиссы между показателями согласованности, доступности и задержки.These granular, well-defined consistency levels allow you to make sound tradeoffs among consistency, availability, and latency. Дополнительные сведения см. в статье Настраиваемые уровни согласованности данных в Azure Cosmos DB.Learn more in Tunable data consistency levels in Azure Cosmos DB.

Сценарии, в которых будет полезен интерфейс API GremlinScenarios that can use Gremlin API

Ниже приведены некоторые полезные примеры использования поддержки графа базы данных Azure Cosmos DB.Here are some scenarios where graph support of Azure Cosmos DB can be useful:

  • Социальные сети/Клиент 365Social networks/Customer 365

    Объединяя данные о клиентах и их взаимодействиях с другими людьми, вы можете разработать персонализированные средства, предугадать поведение клиента или объединить людей на основе их интересов.By combining data about your customers and their interactions with other people, you can develop personalized experiences, predict customer behavior, or connect people with others with similar interests. Базу данных Azure Cosmos DB можно использовать для управления социальными сетями и отслеживания данных о клиенте и его предпочтениях.Azure Cosmos DB can be used to manage social networks and track customer preferences and data.

  • Системы рекомендацийRecommendation engines

    Широко используется в сфере розничной торговли.This scenario is commonly used in the retail industry. Объединяя сведения о продукции, пользователях и операциях пользователей, например приобретении, поиске и оценке товара, вы можете создать пользовательские рекомендации.By combining information about products, users, and user interactions, like purchasing, browsing, or rating an item, you can build customized recommendations. База данных Azure Cosmos DB с минимальной задержкой, гибким масштабированием и встроенной поддержкой графа представляет собой идеальный вариант моделирования этих взаимосвязей.The low latency, elastic scale, and native graph support of Azure Cosmos DB is ideal for these scenarios.

  • Геопространственные функцииGeospatial

    Многим приложениям в сферах телекоммуникаций, логистики и туристического планирования требуется поиск интересующего расположения в регионе или же обнаружение самого короткого (оптимального) пути между двумя расположениями.Many applications in telecommunications, logistics, and travel planning need to find a location of interest within an area or locate the shortest/optimal route between two locations. База данных Azure Cosmos DB поможет легко справиться с этими задачами.Azure Cosmos DB is a natural fit for these problems.

  • Интернет вещейInternet of Things

    Исследуя сеть и подключения между устройствами Интернета вещей, смоделированными как граф, вы сможете разобраться с состоянием своих устройств и ресурсов.With the network and connections between IoT devices modeled as a graph, you can build a better understanding of the state of your devices and assets. Кроме того, вы сможете узнать, как изменения одного компонента сети могут повлиять на другой.You also can learn how changes in one part of the network can potentially affect another part.

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

В реальном мире все данные связаны естественным образом.Data as it appears in the real world is naturally connected. Традиционное моделирование данных фокусируется на отдельном определении объектов и вычислении их отношений во время выполнения.Traditional data modeling focuses on defining entities separately and computing their relationships at runtime. Несмотря на то, что у этой модели есть свои преимущества, управление данными с высокой степенью связности может оказаться сложной задачей в условиях ограничений.While this model has its advantages, highly connected data can be challenging to manage under its constraints.

Подход базы данных графа основан на сохранении связей на уровне хранилища, что приводит к высокоэффективным операциям извлечения графов.A graph database approach relies on persisting relationships in the storage layer instead, which leads to highly efficient graph retrieval operations. Azure Cosmos DB Gremlin API поддерживает модель графа свойства.Azure Cosmos DB's Gremlin API supports the property graph model.

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

Граф — это структура, состоящая из вершин и ребер.A property graph is a structure that's composed of vertices and edges. Оба объекта могут иметь произвольное число пар ключ-значение в качестве свойств.Both objects can have an arbitrary number of key-value pairs as properties.

  • Вершинами обозначаются дискретные объекты, например пользователь, место или событие.Vertices - Vertices denote discrete entities, such as a person, a place, or an event.

  • Ребра обозначают взаимосвязи между вершинами.Edges - Edges denote relationships between vertices. Например, пользователь может знать другого пользователя, участвовать в событии или посетить мероприятие.For example, a person might know another person, be involved in an event, and recently been at a location.

  • Свойства выражают сведения о вершинах и ребрах.Properties - Properties express information about the vertices and edges. В вершинах или ребрах может быть любое количество свойств, и их можно использовать для описания и фильтрации объектов в запросе.There can be any number of properties in either vertices or edges, and they can be used to describe and filter the objects in a query. Свойства примера включают в себя вершину, у которой есть имя и возраст, или ребро, которое может иметь отметку времени и (или) вес.Example properties include a vertex that has name and age, or an edge, which can have a time stamp and/or a weight.

Базы данных графов часто относят к категории баз данных NoSQL, или нереляционных баз данных, поскольку в них нет зависимости от схемы или ограничений модели данных.Graph databases are often included within the NoSQL or non-relational database category, since there is no dependency on a schema or constrained data model. Это отсутствие схемы позволяет естественно и эффективно моделировать и хранить связанные структуры.This lack of schema allows for modeling and storing connected structures naturally and efficiently.

Обзор Gremlin на примереGremlin by example

Давайте рассмотрим пример графа, чтобы лучше понять, как в Gremlin могут выражаться запросы.Let's use a sample graph to understand how queries can be expressed in Gremlin. На рисунке ниже в форме графа показано бизнес-приложение, управляющее данными о пользователях, их интересах и устройствах.The following figure shows a business application that manages data about users, interests, and devices in the form of a graph.

Пример базы данных, в котором показаны люди, их интересы и устройства

Этот граф содержит следующие типы вершин (которые в Gremlin называются "метки"):This graph has the following vertex types (called "label" in Gremlin):

  • Люди. На графе представлено три человека: Робин (Robin), Томас (Thomas) и Бен (Ben).People: The graph has three people, Robin, Thomas, and Ben
  • Интересы. Их интересы. В этом случае — футбол.Interests: Their interests, in this example, the game of Football
  • Устройства. Устройства, которые эти люди используют.Devices: The devices that people use
  • Операционные системы. Операционные системы, под управлением которых работают устройства.Operating Systems: The operating systems that the devices run on

Мы представим взаимосвязи между этими сущностями, используя следующие типы ребер или метки:We represent the relationships between these entities via the following edge types/labels:

  • Знакомства. Например, "Томас знает Робин".Knows: For example, "Thomas knows Robin"
  • Интересы. Используется, чтобы представить интересы людей на графе. Например, "Бен интересуется футболом".Interested: To represent the interests of the people in our graph, for example, "Ben is interested in Football"
  • Использующаяся операционная система. Ноутбук работает под управлением Windows.RunsOS: Laptop runs the Windows OS
  • Используемые устройства. Применяется, чтобы представить используемое устройство.Uses: To represent which device a person uses. Например, Робин использует телефон Motorola с серийным номером 77.For example, Robin uses a Motorola phone with serial number 77

Теперь выполним некоторые операции с этим графом с помощью консоли Gremlin.Let's run some operations against this graph using the Gremlin Console. Вы также можете выполнить эти операции с помощью драйверов Gremlin на платформе по вашему усмотрению — Java, Node.js, Python или .NET.You can also perform these operations using Gremlin drivers in the platform of your choice (Java, Node.js, Python, or .NET). Прежде чем перейти к поддерживаемым базой данных Azure Cosmos DB функциям, давайте рассмотрим несколько примеров, чтобы ознакомиться с синтаксисом.Before we look at what's supported in Azure Cosmos DB, let's look at a few examples to get familiar with the syntax.

Сначала рассмотрим операции CRUD (создание, чтение, обновление и удаление).First let's look at CRUD. Следующая инструкция Gremlin вставляет вершину "Thomas" в граф:The following Gremlin statement inserts the "Thomas" vertex into the graph:

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

Затем инструкция Gremlin вставляет ребро "знакомства" между вершинами Thomas и Robin.Next, the following Gremlin statement inserts a "knows" edge between Thomas and Robin.

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

Следующий запрос возвращает вершины "людей" в порядке по убыванию их имен:The following query returns the "person" vertices in descending order of their first names:

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

Если часть графа подсвечивается, необходимо ответить на вопросы типа: "Какие операционные системы используют друзья Томаса?"Where graphs shine is when you need to answer questions like "What operating systems do friends of Thomas use?". Вы можете выполнить эту операцию обхода Gremlin, чтобы получить сведения из графа:You can run this Gremlin traversal to get that information from the graph:

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

Дальнейшие действияNext steps

Дополнительные сведения о поддержке графа в базе данных Azure Cosmos DB см. в следующих ресурсах:To learn more about graph support in Azure Cosmos DB, see: