Szybki start: przechodzenie wierzchołków i krawędzi za pomocą konsoli Języka Gremlin i usługi Azure Cosmos DB dla języka Apache Gremlin

Ważna

Szukasz rozwiązania bazy danych dla scenariuszy o dużej skali z umową SLA gwarantującą poziom dostępności na poziomie 99,999%, natychmiastowym skalowaniem automatycznym i automatycznym przełączaniem awaryjnym między wieloma regionami? Rozważmy usługę Azure Cosmos DB dla noSQL.

Czy chcesz zaimplementować graf przetwarzania analitycznego online (OLAP) lub przeprowadzić migrację istniejącej aplikacji Apache Gremlin? Rozważ użycie programu Graph w usłudze Microsoft Fabric.

Azure Cosmos DB for Apache Gremlin to w pełni zarządzana usługa bazy danych grafów, która implementuje popularną Apache Tinkerpopplatformę obliczeniową grafu przy użyciu języka zapytań Gremlin. Interfejs API dla Gremlin umożliwia rozpoczęcie pracy z Gremlin jako serwisem, który można rozwijać i skalować według potrzeb, przy minimalnym zarządzaniu.

W tym szybkim przewodniku użyjesz konsoli Gremlin do nawiązania połączenia z nowo utworzonym kontem Azure Cosmos DB dla Gremlin.

Prerequisites

Azure Cloud Shell

Na platformie Azure hostowane jest interaktywne środowisko wiersza poleceń Azure Cloud Shell, z którego można korzystać przez przeglądarkę. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell. Aby uruchomić kod w tym artykule, możesz użyć wstępnie zainstalowanych poleceń usługi Cloud Shell bez konieczności instalowania niczego w środowisku lokalnym.

Aby uruchomić środowisko Azure Cloud Shell:

Option Przykład/Odnośnik
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu lub polecenia. Wybranie Try It nie powoduje automatycznego skopiowania kodu ani polecenia do Cloud Shell. Zrzut ekranu przedstawiający przykład narzędzia Try It dla usługi Azure Cloud Shell.
Przejdź do https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć Cloud Shell w przeglądarce. Przycisk do uruchamiania Azure Cloud Shell.
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. Screenshot przedstawiający przycisk Cloud Shell w portalu Azure

Aby użyć usługi Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.

  3. Wklej kod lub polecenie do sesji Cloud Shell, wybierając Ctrl+Shift+V w systemach Windows i Linux, lub wybierając Cmd+Shift+V w systemie macOS.

  4. Wybierz Enter, aby uruchomić kod lub polecenie.

Utwórz interfejs API dla konta Gremlin i odpowiednich zasobów

Interfejs API dla konta Gremlin należy utworzyć przed użyciem konsoli Gremlin. Dodatkowo, pomocne jest także posiadanie gotowej bazy danych i grafu.

  1. Utwórz zmienne powłoki dla accountName, resourceGroupName i 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. Jeśli jeszcze tego nie zrobiono, zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu polecenia az login.

  3. Użyj az group create, aby utworzyć nową grupę zasobów w ramach subskrypcji.

    az group create \
        --name $resourceGroupName \
        --location $location
    
  4. Użyj az cosmosdb create polecenia, aby utworzyć nowy interfejs API dla konta Gremlin z ustawieniami domyślnymi.

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

    Uwaga / Notatka

    W ramach jednej subskrypcji platformy Azure można korzystać z maksymalnie jednego konta usługi Azure Cosmos DB w warstwie Bezpłatna. Tę opcję należy wybrać podczas tworzenia konta. Jeśli to polecenie nie zastosuje rabatu w warstwie Bezpłatna, oznacza to, że inne konto w subskrypcji zostało już włączone z warstwą Bezpłatna.

  5. Pobierz interfejs API dla punktu końcowego Gremlin NAME na konto przy użyciu az cosmosdb show.

    az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName \
        --query "name"
    
  6. Znajdź klucz z listy kluczy dla konta za pomocą polecenia az-cosmosdb-keys-list.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  7. Zapisz wartości NAME i KEY. Będziesz używać tych poświadczeń później.

  8. Utwórz bazę danych o nazwie cosmicworks przy użyciu polecenia az cosmosdb gremlin database create.

    az cosmosdb gremlin database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name "cosmicworks"
    
  9. Utwórz graf przy użyciu polecenia az cosmosdb gremlin graph create. Nadaj grafowi productsnazwę , a następnie ustaw przepływność na 400, a na koniec ustaw ścieżkę klucza partycji na /category.

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

Uruchamianie i konfigurowanie konsoli języka Gremlin przy użyciu platformy Docker

W przypadku konsoli Gremlin ten przewodnik szybkiego startu używa obrazu kontenera tinkerpop/gremlin-console z usługi Docker Hub. Ten obraz gwarantuje, że używasz odpowiedniej wersji konsoli (3.4) na potrzeby połączenia z interfejsem API dla języka Gremlin. Po uruchomieniu konsoli nawiąż połączenie z lokalnego hosta Docker do zdalnego interfejsu API konta Gremlin.

  1. Pobierz wersję 3.4 obrazu kontenera tinkerpop/gremlin-console.

    docker pull tinkerpop/gremlin-console:3.4
    
  2. Utwórz pusty folder roboczy. W pustym folderze utwórz plik remote-secure.yaml . Dodaj tę konfigurację YAML do pliku.

    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
      }
    }
    

    Uwaga / Notatka

    Zastąp symbole zastępcze <account-name> i <account-key> wartościami NAME i KEY uzyskanymi wcześniej w tym przewodniku szybkiego startu.

  3. Otwórz nowy terminal w kontekście folderu roboczego, który zawiera plik remote-secure.yaml .

  4. Uruchom obraz kontenera platformy Docker w trybie interaktywnym (--interactive --tty). Upewnij się, że bieżący folder roboczy został zamontowany w /opt/gremlin-console/conf/ ścieżce w kontenerze.

    docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
    
  5. W kontenerze konsoli Gremlin połącz się zdalnym kontem przez interfejs API Gremlin, używając pliku konfiguracji remote-secure.yaml.

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

Tworzenie i przechodzenie wierzchołków i krawędzi

Teraz, gdy konsola jest połączona z kontem, użyj standardowej składni języka Gremlin, aby utworzyć i przejść zarówno wierzchołki, jak i krawędzie.

  1. Dodaj wierzchołek dla produktu z następującymi właściwościami:

    Value
    etykieta 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')
    

    Ważna

    Nie zapomnij o prefiksie :> . Prefiks THis jest wymagany do zdalnego uruchamiania polecenia.

  2. Dodaj kolejny wierzchołek produktu z następującymi właściwościami:

    Value
    etykieta 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. Utwórz krawędź o nazwie replaces , aby zdefiniować relację między dwoma produktami.

    :> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
    
  4. Zlicz wszystkie wierzchołki w obrębie grafu.

    :> g.V().count()
    
  5. Przejdź przez graf, aby znaleźć wszystkie wierzchołki, które zastępują element Kiama classic surfboard.

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
    
  6. Przejdź przez graf, aby znaleźć wszystkie wierzchołki, które Montau Turtle Surfboard zastępuje.

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

Uprzątnij zasoby

Jeśli nie potrzebujesz już interfejsu API dla konta gremlin, usuń odpowiednią grupę zasobów.

  1. Utwórz zmienną powłoki dla resourceGroupName, jeśli jeszcze nie istnieje.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    
  2. Użyj polecenia az group delete , aby usunąć grupę zasobów.

    az group delete \
        --name $resourceGroupName
    

Jak rozwiązaliśmy ten problem?

Usługa Azure Cosmos DB dla języka Apache Gremlin rozwiązała nasz problem, oferując język Gremlin jako usługę. Dzięki tej ofercie nie musisz uruchamiać własnych instancji serwera Gremlin ani zarządzać swoją infrastrukturą. Co więcej, możesz skalować rozwiązanie w miarę wzrostu potrzeb w miarę upływu czasu.

Aby nawiązać połączenie z interfejsem API dla konta Gremlin, użyto tinkerpop/gremlin-console obrazu kontenera do uruchomienia konsoli Gremlin w sposób, który nie wymagał instalacji lokalnej. Następnie użyto konfiguracji przechowywanej w pliku remote-secure.yaml, aby nawiązać połączenie z API konta Gremlin z działającego kontenera. W tym miejscu uruchomiono wiele typowych poleceń języka Gremlin.