Rychlý začátek: Procházení vrcholů a hran pomocí konzoly Gremlin a Azure Cosmos DB pro Apache Gremlin

Important

Hledáte databázové řešení pro scénáře ve velkém měřítku s 99,999% smlouvou o úrovni služeb (SLA), okamžitým automatickým škálováním a automatickým převzetím služeb při selhání napříč několika oblastmi? Zvažte Azure Cosmos DB pro NoSQL.

Chcete implementovat graf online analytického zpracování (OLAP) nebo migrovat existující aplikaci Apache Gremlin? Zvažte Graph v Microsoft Fabricu.

Azure Cosmos DB pro Apache Gremlin je plně spravovaná databázová služba grafů, která implementuje oblíbenou Apache Tinkerpoparchitekturu grafových výpočtů pomocí dotazovacího jazyka Gremlin. Rozhraní API pro Gremlin poskytuje rychlý způsob, jak začít používat Gremlin se službou, která může růst a škálovat podle potřeby s minimální správou.

V tomto rychlém startu se pomocí konzoly Gremlin připojíte k nově vytvořenému účtu Azure Cosmos DB pro Gremlin.

Prerequisites

Azure Cloud Shell

Azure hostuje Azure Cloud Shell, interaktivní shellové prostředí, které můžete použít ve svém prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Předinstalované příkazy Cloud Shellu můžete použít ke spuštění kódu v tomto článku, aniž byste museli instalovat cokoli do místního prostředí.

Spuštění služby Azure Cloud Shell:

Option Příklad nebo odkaz
Vyberte Vyzkoušet v pravém horním rohu bloku kódu nebo příkazu. Výběrem možnosti Vyzkoušet se kód ani příkaz automaticky nekopíruje do Cloud Shellu. Snímek obrazovky, který ukazuje příklad funkce
Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. Tlačítko pro spuštění Azure Cloud Shellu
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. Snímek obrazovky znázorňující tlačítko Cloud Shell na webu Azure Portal

Použití Azure Cloud Shellu:

  1. Spusťte Cloud Shell.

  2. Výběrem tlačítka Kopírovat v bloku kódu (nebo bloku příkazů) zkopírujte kód nebo příkaz.

  3. Vložte kód nebo příkaz do Cloud Shell pomocí zvolení Ctrl+Shift+V ve Windows a Linuxu, nebo zvolení Cmd+Shift+V na macOS.

  4. Stisknutím klávesy Enter spusťte kód nebo příkaz.

Vytvořte rozhraní API pro Gremlin účet a relevantní prostředky

Rozhraní API pro účet Gremlin by mělo být zřízeno před použitím konzole Gremlin. Kromě toho pomáhá mít také databázi a graf na místě.

  1. Vytvořte shellové proměnné pro accountName, resourceGroupName a umístění.

    # 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. Pokud jste to ještě neudělali, přihlaste se k Azure CLI pomocí az login.

  3. Použijte az group create k vytvoření nové skupiny prostředků ve vašem předplatném.

    az group create \
        --name $resourceGroupName \
        --location $location
    
  4. Použijte az cosmosdb create k vytvoření nového rozhraní API pro účet Gremlin s výchozím nastavením.

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

    Note

    Pro každé předplatné Azure můžete mít maximálně jeden účet Azure Cosmos DB úrovně Free a při vytváření tohoto účtu se musíte přihlásit. Pokud se tomuto příkazu nepodaří uplatnit slevu na úroveň Free, znamená to, že u úrovně Free už byl povolený jiný účet v předplatném.

  5. Získejte API koncového bodu Gremlin NAME pro účet pomocí az cosmosdb show.

    az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName \
        --query "name"
    
  6. Najděte klíč ze seznamu klíčů pro účet pomocí az-cosmosdb-keys-list.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  7. Poznamenejte si hodnoty NAME a KEY. Tyto přihlašovací údaje použijete později.

  8. Vytvořte databázi s názvem cosmicworks pomocí az cosmosdb gremlin database create.

    az cosmosdb gremlin database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name "cosmicworks"
    
  9. Vytvoření grafu pomocí az cosmosdb gremlin graph create. Pojmenujte graf products, nastavte propustnost na 400, a nakonec nastavte cestu ke klíči oddílu na hodnotu /category.

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

Spuštění a konfigurace konzoly Gremlin pomocí Dockeru

Pro konzolu Gremlin tento rychlý start používá image kontejneru tinkerpop/gremlin-console z Docker Hubu. Tato image zajišťuje, že pro připojení k rozhraní API pro Gremlin používáte odpovídající verzi konzoly (3.4). Po spuštění konzoly se připojte z místního hostitele Dockeru ke vzdálenému rozhraní API pro účet Gremlin.

  1. 3.4 Stáhněte si verzi image kontejnerutinkerpop/gremlin-console.

    docker pull tinkerpop/gremlin-console:3.4
    
  2. Vytvořte prázdnou pracovní složku. V prázdné složce vytvořte soubor remote-secure.yaml . Přidejte do souboru tuto konfiguraci 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
      }
    }
    

    Note

    Nahraďte zástupné symboly <account-name> a <account-key> hodnotami NAME a KEY získanými dříve v tomto rychlém startu.

  3. Otevřete nový terminál v kontextu pracovní složky, která obsahuje soubor remote-secure.yaml .

  4. Spusťte image kontejneru Dockeru v interaktivním--interactive --tty () režimu. Ujistěte se, že aktuální pracovní složku připojíte k /opt/gremlin-console/conf/ cestě v kontejneru.

    docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
    
  5. V kontejneru konzoly Gremlin se připojte ke vzdálenému účtu (API pro Gremlin) pomocí konfiguračního souboru remote-secure.yaml .

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

Vytváření a procházení vrcholů a hran

Teď, když je konzola připojená k účtu, použijte standardní syntaxi Gremlin k vytvoření a procházení vrcholů i hran.

  1. Přidejte vrchol pro produkt s následujícími vlastnostmi:

    Value
    Štítek 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')
    

    Important

    Nezapomeňte na předponu :> . Předpona THis je nutná ke vzdálenému spuštění příkazu.

  2. Přidejte další vrchol produktu s těmito vlastnostmi:

    Value
    Štítek 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. Vytvořte hranu s názvem replaces , která definuje vztah mezi těmito dvěma produkty.

    :> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
    
  4. Spočítejte všechny vrcholy v grafu.

    :> g.V().count()
    
  5. Projděte graf a vyhledejte všechny vrcholy, které nahradí Kiama classic surfboard.

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
    
  6. Projděte graf a vyhledejte všechny vrcholy, které Montau Turtle Surfboard nahradí.

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

Vyčistěte zdroje

Pokud už rozhraní API pro účet Gremlin nepotřebujete, odstraňte odpovídající skupinu prostředků.

  1. Vytvořte shellovou proměnnou pro resourceGroupName, pokud ještě neexistuje.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    
  2. Použijte az group delete pro odstranění skupiny prostředků.

    az group delete \
        --name $resourceGroupName
    

Jak jsme tento problém vyřešili?

Azure Cosmos DB pro Apache Gremlin vyřešila náš problém tím, že nabízí Gremlin jako službu. Díky této nabídce nemusíte provozovat vlastní instance serveru Gremlin ani spravovat vlastní infrastrukturu. Ještě více můžete škálovat své řešení podle svých potřeb v průběhu času.

Pokud jste se chtěli připojit k API účtu Gremlin, použili jste image kontejneru tinkerpop/gremlin-console ke spuštění konzole Gremlin tak, aby nebyla vyžadována místní instalace. Pak jste použili konfiguraci uloženou v souboru remote-secure.yaml k připojení se z běžícího kontejneru k API účtu Gremlin. Odtud jste spustili několik běžných příkazů Gremlin.