Краткое руководство по быстрому запуску: обход вершин и ребер с помощью консоли Gremlin и базы данных Azure Cosmos DB для системы Apache Gremlin

Important

Вы ищете решение для баз данных для крупномасштабных сценариев с соглашением об уровне обслуживания (SLA) с доступностью 99,999%, мгновенным автомасштабированием и автоматическим переключением на резервные ресурсы в нескольких регионах? Рассмотрим Azure Cosmos DB для NoSQL.

Вы хотите реализовать граф интерактивной аналитической обработки (OLAP) или перенести существующее приложение Apache Gremlin? Рассмотрим Graph в Microsoft Fabric.

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

В этом кратком руководстве вы используете консоль Gremlin для подключения к только что созданной учетной записи Azure Cosmos DB для работы с Gremlin.

Предпосылки

Azure Cloud Shell

Azure предоставляет Azure Cloud Shell, интерактивную оболочку, которую можно использовать через браузер. Вы можете использовать Bash или PowerShell с Cloud Shell для работы со службами Azure. Для выполнения кода в этой статье можно использовать предустановленные команды Cloud Shell, не устанавливая ничего в локальной среде.

Чтобы запустить Azure Cloud Shell, выполните приведенные действия.

Опция Пример/Ссылка
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. Снимок экрана, на котором показан пример функции
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. Кнопка запуска Azure Cloud Shell.
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. Скриншот, показывающий кнопку Cloud Shell на портале Azure

Чтобы использовать Azure Cloud Shell, выполните следующие действия:

  1. Запустите Cloud Shell.

  2. Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.

  3. Вставьте код или команду в сеанс Cloud Shell, выбрав Ctrl+Shift+V в Windows и Linux или выбрав Cmd+Shift+V в macOS.

  4. Нажмите Enter, чтобы запустить код или команду.

Создание API для учетной записи Gremlin и соответствующих ресурсов

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

  1. Создайте переменные оболочки для accountName, resourceGroupName и location.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    location="westus"
    
    # Variable for account name with a randomly generated suffix
    
    let suffix=$RANDOM*$RANDOM
    accountName="msdocs-gremlin-$suffix"
    
  2. Если вы еще не сделали этого, войдите в Azure CLI с помощью az login.

  3. Используйте az group create, чтобы создать новую группу ресурсов в подписке.

    az group create \
        --name $resourceGroupName \
        --location $location
    
  4. Используется az cosmosdb create для создания нового API для учетной записи Gremlin с параметрами по умолчанию.

    az cosmosdb create \
        --resource-group $resourceGroupName \
        --name $accountName \
        --capabilities "EnableGremlin" \
        --locations regionName=$location \
        --enable-free-tier true
    

    Замечание

    Вы можете иметь не более одной учетной записи Azure Cosmos DB уровня "Бесплатный" на одну подписку Azure и должны выбрать этот вариант при создании учетной записи. Если эта команда не применяет скидку на бесплатный уровень, это означает, что другая учетная запись в подписке уже была активирована для бесплатного уровня.

  5. Получение API для конечной точки Gremlin NAME для учетной записи с использованием az cosmosdb show.

    az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName \
        --query "name"
    
  6. Найдите ключ из списка ключей для учетной записиaz-cosmosdb-keys-list.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  7. Запишите значения NAME и KEY. Вы используете эти учетные данные позже.

  8. Создайте базу данных с именем cosmicworks с помощью az cosmosdb gremlin database create.

    az cosmosdb gremlin database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name "cosmicworks"
    
  9. Создание графа с помощью az cosmosdb gremlin graph create. Присвойте графу productsимя, а затем задайте пропускную способность 400и, наконец, задайте путь ключа /categoryсекции.

    az cosmosdb gremlin graph create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --database-name "cosmicworks" \
        --name "products" \
        --partition-key-path "/category" \
        --throughput 400
    

Запуск и настройка консоли Gremlin с помощью Docker

В консоли Gremlin в этом быстром старте используется tinkerpop/gremlin-console образ контейнера из Docker Hub. Это изображение гарантирует, что вы используете соответствующую версию консоли (3.4) для подключения к API для Gremlin. После запуска консоли подключитесь из локального узла Docker к удаленному API для учетной записи Gremlin.

  1. Получите версию 3.4 образа контейнера tinkerpop/gremlin-console.

    docker pull tinkerpop/gremlin-console:3.4
    
  2. Создайте пустую рабочую папку. В пустой папке создайте файл remote-secure.yaml . Добавьте эту конфигурацию YAML в файл.

    hosts: [<account-name>.gremlin.cosmos.azure.com]
    port: 443
    username: /dbs/cosmicworks/colls/products
    password: <account-key>
    connectionPool: {
      enableSsl: true,
      sslEnabledProtocols: [TLSv1.2]
    }
    serializer: {
      className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0,
      config: {
        serializeResultToString: true
      }
    }
    

    Замечание

    Замените заполнители <account-name> и <account-key> на значения NAME и KEY, полученные ранее в этом кратком руководстве.

  3. Откройте новый терминал в контексте рабочей папки, включающую файл remote-secure.yaml .

  4. Запустите образ контейнера Docker в интерактивном (--interactive --tty) режиме. Убедитесь, что текущая рабочая папка монтируется на путь /opt/gremlin-console/conf/ в контейнере.

    docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
    
  5. В контейнере консоли Gremlin подключитесь к удаленной учетной записи (API для Gremlin) с помощью файла конфигурации remote-secure.yaml .

    :remote connect tinkerpop.server conf/remote-secure.yaml
    

Создание и обход вершин и ребер

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

  1. Добавьте вершину для продукта со следующими свойствами:

    Value
    label product
    идентификатор 68719518371
    name Kiama classic surfboard
    price 285.55
    category surfboards
    :> g.addV('product').property('id', '68719518371').property('name', 'Kiama classic surfboard').property('price', 285.55).property('category', 'surfboards')
    

    Important

    Не забывайте :> префикс. Префикс THis требуется для удаленного выполнения команды.

  2. Добавьте еще одну вершину продукта с этими свойствами:

    Value
    label product
    идентификатор 68719518403
    name Montau Turtle Surfboard
    price 600
    category surfboards
    :> g.addV('product').property('id', '68719518403').property('name', 'Montau Turtle Surfboard').property('price', 600).property('category', 'surfboards')
    
  3. Создайте ребро с именем replaces, чтобы определить связь между двумя продуктами.

    :> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
    
  4. Подсчитывать все вершины в графе.

    :> g.V().count()
    
  5. Путешествуйте по графу, чтобы найти все вершины, которые заменяют Kiama classic surfboard.

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
    
  6. Проходит по графу, чтобы найти все вершины, которые Montau Turtle Surfboard заменяет.

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Montau Turtle Surfboard').outE('replaces').inV()
    

Очистите ресурсы

Если вам больше не нужен API для учетной записи Gremlin, удалите соответствующую группу ресурсов.

  1. Создайте переменную оболочки для resourceGroupName , если она еще не существует.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    
  2. Используется az group delete для удаления группы ресурсов.

    az group delete \
        --name $resourceGroupName
    

Как мы решили проблему?

Azure Cosmos DB для Apache Gremlin решает нашу проблему, предлагая Gremlin в качестве службы. Благодаря этому предложению вам не требуется создавать собственные экземпляры серверов Gremlin или управлять собственной инфраструктурой. Еще больше вы можете масштабировать решение по мере роста потребностей.

Чтобы подключиться к учетной записи API для Gremlin, вы использовали tinkerpop/gremlin-console образ контейнера для запуска Gremlin-консоли таким образом, чтобы не требовалась локальная установка. Затем вы использовали конфигурацию, хранящуюся в файле remote-secure.yaml, для подключения из запущенного контейнера к API с использованием учетной записи Gremlin. После этого вы выполнили несколько распространенных команд Gremlin.