Rövid útmutató a használathoz: Csúcsok és élek bejárása a Gremlin konzollal és az Azure Cosmos DB-vel Apache Gremlin számára

Important

Olyan adatbázismegoldást keres nagy léptékű forgatókönyvekhez, amelyekben 99,9999-es% rendelkezésre állási szolgáltatásiszint-szerződés (SLA), azonnali automatikus skálázás és automatikus feladatátvétel több régióban? Fontolja meg az Azure Cosmos DB-t a NoSQL-hoz.

Szeretne egy online elemzési feldolgozási (OLAP) gráfot implementálni, vagy migrálni egy meglévő Apache Gremlin-alkalmazást? Fontolja meg a Graph funkciót a Microsoft Fabric-ben.

Az Apache Gremlinhez készült Azure Cosmos DB egy teljes körűen felügyelt gráfadatbázis-szolgáltatás, amely a gremlin lekérdezési nyelv használatával implementálja a népszerű Apache Tinkerpopgráf-számítási keretrendszert. A Gremlin API-ja alacsony súrlódási módot kínál a Gremlin használatának megkezdéséhez egy olyan szolgáltatással, amely minimális felügyelet mellett a lehető legtöbb növekedést és skálázást teszi lehetővé.

Ebben a rövid útmutatóban a Gremlin-konzollal csatlakozhat egy újonnan létrehozott Azure Cosmos DB for Gremlin-fiókhoz.

Prerequisites

Azure Cloud Shell

Az Azure egy interaktív shell-környezetet, az Azure Cloud Shell-t, üzemeltet, amelyet a böngészőn keresztül használhat. A Cloud Shell-ben Bash-t vagy PowerShell-t használhat az Azure szolgáltatások kezeléséhez. Felhasználhatja a Cloud Shell előre telepített parancsait a cikkben szereplő kód futtatására anélkül, hogy bármit telepítenie kellene a helyi környezetében.

Azure Cloud Shell indítása:

Option példa/hivatkozás
A kód vagy parancsblokk jobb felső sarkában válassza a Kipróbálás lehetőséget. A Try It kiválasztása nem másolja automatikusan a kódot vagy a parancsot a Cloud Shellbe. Képernyőkép az Azure Cloud Shell kipróbálásának példájáról.
Lépjen a https://shell.azure.com webhelyre, vagy válassza ki a Cloud Shell indítása gombot a Cloud Shell megnyitásához a böngészőjében. Gomb az Azure Cloud Shell elindításához.
Válassza a Cloud Shell gombot a jobb felső menüsávon a Azure portálon. Az Azure portálon a Cloud Shell gombot mutató képernyőkép

Az Azure Cloud Shell használatához:

  1. Indítsa el a Cloud Shell alkalmazást.

  2. A kód vagy parancs másolásához kattintson a Másolás gombra egy kódblokkon (vagy parancsblokkon).

  3. Másolja be a kódot vagy parancsot a Cloud Shell munkamenetbe a Windows és Linux rendszereken a Ctrl+Shift+V billentyűk kiválasztásával, vagy a macOS rendszeren a Cmd+Shift+V billentyűkiválasztásával.

  4. A kód vagy parancs futtatásához válassza az Enter lehetőséget .

API létrehozása Gremlin-fiókhoz és kapcsolódó erőforrásokhoz

A Gremlin-konzol használata előtt létre kell hozni a Gremlin API-fiókot. Emellett segít az adatbázis és a gráf helyének megőrzésében is.

  1. Hozzon létre shell változókat az accountName, resourceGroupName és a lokáció számára.

    # 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. Ha még nem tette meg, jelentkezzen be az Azure CLI-be a használatával az login.

  3. Hozzon létre egy új az group create erőforráscsoportot az előfizetésében.

    az group create \
        --name $resourceGroupName \
        --location $location
    
  4. Új az cosmosdb create API létrehozása Gremlin-fiókhoz alapértelmezett beállításokkal.

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

    Megjegyzés:

    Azure-előfizetésenként egy ingyenes szintű Azure Cosmos DB-fiókkal rendelkezhet, és a fiók létrehozásakor kell feliratkoznia. Ha ez a parancs nem alkalmazza az ingyenes szintű kedvezményt, ez azt jelenti, hogy az előfizetés egy másik fiókja már engedélyezve lett az ingyenes szinttel.

  5. Kérje le a Gremlin-végpont API-ját NAME a fiókhoz a következő használatával: az cosmosdb show.

    az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName \
        --query "name"
    
  6. Keresse meg a KULCSOT a fiók az-cosmosdb-keys-listkulcsainak listájából.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  7. Jegyezze fel a NAME és KEY értékeket. Ezeket a hitelesítő adatokat később fogja használni.

  8. Hozzon létre egy, a következővel elnevezett adatbázistcosmicworksaz cosmosdb gremlin database create: .

    az cosmosdb gremlin database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name "cosmicworks"
    
  9. diagram létrehozása a következő használatával: az cosmosdb gremlin graph create. Nevezze el a gráfot products, majd állítsa be az átviteli sebességet 400, és végül állítsa a partíciókulcs elérési útját a következőre /category: .

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

A Gremlin-konzol indítása és konfigurálása a Dockerrel

A Gremlin konzol esetében ez a gyorsútmutató a Docker Hub tinkerpop/gremlin-console tárolóképét használja. Ez a kép biztosítja, hogy a konzol (3.4) megfelelő verzióját használja a Gremlin API-val való kapcsolathoz. A konzol futtatása után csatlakozzon a helyi Docker-gazdagépről a Gremlin-fiók távoli API-hoz.

  1. Kérje le a 3.4tinkerpop/gremlin-console tárolólemezkép verzióját.

    docker pull tinkerpop/gremlin-console:3.4
    
  2. Hozzon létre egy üres munkamappát. Az üres mappában hozzon létre egy remote-secure.yaml fájlt. Adja hozzá ezt a YAML-konfigurációt a fájlhoz.

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

    Megjegyzés:

    Cserélje le a <account-name><account-key> helyőrzőket az ebben a rövid útmutatóban korábban beszerzett NÉV és KULCS értékekre.

  3. Nyisson meg egy új terminált a munkamappa környezetében, amely tartalmazza a remote-secure.yaml fájlt.

  4. Futtassa a Docker konténerképet interaktív (--interactive --tty) módban. Győződjön meg arról, hogy az aktuális munkamappát a /opt/gremlin-console/conf/ tárolón belüli elérési úthoz csatlakoztatja.

    docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
    
  5. A Gremlin konzoltárolón belül csatlakozzon a távoli (API for Gremlin) fiókhoz a remote-secure.yaml konfigurációs fájl használatával.

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

Csúcspontok és élek létrehozása és átjárása

Most, hogy a konzol csatlakozik a fiókhoz, a standard Gremlin szintaxissal hozhat létre és léptethet át csúcsokat és éleket is.

  1. Adjon hozzá egy csúcspontot egy termékhez a következő tulajdonságokkal:

    Value
    címke product
    azonosító 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

    Ne felejtse el az :> előtagot. A parancs távoli futtatásához THis-előtag szükséges.

  2. Adjon hozzá egy másik termék csúcspontot a következő tulajdonságokkal:

    Value
    címke product
    azonosító 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. Hozzon létre egy peremhálózatot , replaces amely a két termék közötti kapcsolatot határozza meg.

    :> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
    
  4. A gráf összes csúcsának megszámlálása.

    :> g.V().count()
    
  5. A gráfon haladva keresse meg az összes csúcspontot, amely helyettesíti a Kiama classic surfboard-t.

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
    
  6. Haladjon át a gráfon, hogy megtalálja az összes csúcsot, amelyet a Montau Turtle Surfboard helyettesít.

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

Erőforrások tisztítása

Ha már nincs szüksége a Gremlin-fiók API-jára, törölje a megfelelő erőforráscsoportot.

  1. Hozzon létre egy rendszerhéjváltozót a resourceGroupName számára, ha még nem létezik.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    
  2. Az erőforráscsoport törlésére használható az group delete .

    az group delete \
        --name $resourceGroupName
    

Hogyan oldottuk meg a problémát?

Az Apache Gremlinhez készült Azure Cosmos DB a Gremlin szolgáltatásként való felajánlásával megoldotta a problémát. Ezzel az ajánlattal nem kell saját Gremlin szerverpéldányokat beüzemelnie, és nem kell az infrastruktúráját kezelnie. Még több, skálázhatja a megoldást, ahogy az igények idővel növekednek.

A Gremlin-fiók API-hoz való csatlakozáshoz a tinkerpop/gremlin-console tárolórendszerkép használatával úgy futtatta a Gremlin-konzolt, hogy az nem igényelt helyi telepítést. Ezután a remote-secure.yaml fájlban tárolt konfigurációval csatlakozott a futó konténerből a Gremlin-fiók API-jához. Innen futtatott több gyakori Gremlin-parancsot.