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

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

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

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

Необходимые компоненты

Azure Cloud Shell

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

Начало работы с Azure Cloud Shell

Вариант Пример и ссылка
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. Screenshot that shows an example of Try It for Azure Cloud Shell.
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. Button to launch Azure Cloud Shell.
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. Screenshot that shows the Cloud Shell button in the Azure portal

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

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

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

  3. Вставьте код или команду в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.

  4. Нажмите клавишу ВВОД, чтобы запустить код или команду.

Создание 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 для учетной записи с помощью 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> Замените заполнители значенияМИ NAME и <account-key>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. Добавьте вершину для продукта со следующими свойствами:

    значение
    label product
    id 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')
    

    Внимание

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

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

    значение
    label product
    id 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.

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