Hızlı Başlangıç: Gremlin konsolu ve Apache Gremlin için Azure Cosmos DB ile köşeleri ve kenarları dolaşma

ŞUNLAR IÇIN GEÇERLIDIR: Gremlin

Apache Gremlin için Azure Cosmos DB, Gremlin sorgu dilini kullanan popüler Apache Tinkerpopbir graf bilgi işlem çerçevesi uygulayan tam olarak yönetilen bir graf veritabanı hizmetidir. Gremlin API'si, minimum yönetimle gremlin'i istediğiniz kadar büyüyebilen ve ölçeği genişletebilen bir hizmetle kullanmaya başlamanız için düşük uyuşmalı bir yol sunar.

Bu hızlı başlangıçta Gremlin konsolunu kullanarak yeni oluşturulan gremlin için Azure Cosmos DB hesabına bağlanacaksınız.

Önkoşullar

Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Button to launch Azure Cloud Shell.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu veya komutu Cloud Shell oturumuna yapıştırın.

  4. Kodu veya komutu çalıştırmak için Enter'ı seçin.

Gremlin hesabı ve ilgili kaynaklar için API oluşturma

Gremlin hesabı api'sinin Gremlin konsolunu kullanmadan önce oluşturulması gerekir. Ayrıca, veritabanının ve grafiğin yerinde olması da yardımcı olur.

  1. accountName, resourceGroupName ve location için kabuk değişkenleri oluşturun.

    # 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. Henüz yapmadıysanız kullanarak az loginAzure CLI'da oturum açın.

  3. Aboneliğinizde yeni bir kaynak grubu oluşturmak için kullanın az group create .

    az group create \
        --name $resourceGroupName \
        --location $location
    
  4. Varsayılan ayarlarla Gremlin hesabı için yeni bir API oluşturmak için kullanın az cosmosdb create .

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

    Not

    Azure aboneliği başına bir ücretsiz katman Azure Cosmos DB hesabına sahip olabilirsiniz. Bunu hesabı oluştururken kabul etmeniz gerekir. Bu komut ücretsiz katman indirimini uygulayamazsa, bu abonelikteki başka bir hesabın ücretsiz katmanla zaten etkinleştirildiği anlamına gelir.

  5. kullanarak az cosmosdb showhesabın Gremlin uç nokta ADı API'sini alın.

    az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName \
        --query "name"
    
  6. ile hesabın az-cosmosdb-keys-listanahtar listesinden KEY değerini bulun.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  7. AD ve ANAHTAR değerlerini kaydedin. Bu kimlik bilgilerini daha sonra kullanacaksınız.

  8. kullanarak az cosmosdb gremlin database createadlı cosmicworks bir veritabanı oluşturun.

    az cosmosdb gremlin database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name "cosmicworks"
    
  9. kullanarak az cosmosdb gremlin graph createbir grafik oluşturun. Grafı productsadlandırın, ardından aktarım hızını olarak 400ayarlayın ve son olarak bölüm anahtarı yolunu olarak /categoryayarlayın.

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

Docker kullanarak Gremlin konsolunu başlatma ve yapılandırma

Gremlin konsolu için bu hızlı başlangıçta Docker Hub'daki tinkerpop/gremlin-console kapsayıcı görüntüsü kullanılır. Bu görüntü, Gremlin API'siyle bağlantı için konsolun (3.4) uygun sürümünü kullanmanızı sağlar. Konsol çalıştırıldıktan sonra yerel Docker ana bilgisayarınızdan Gremlin hesabı için uzak API'ye bağlanın.

  1. 3.4 Kapsayıcı görüntüsünün tinkerpop/gremlin-console sürümünü çekin.

    docker pull tinkerpop/gremlin-console:3.4
    
  2. Boş bir çalışma klasörü oluşturun. Boş klasörde remote-secure.yaml dosyası oluşturun. Bu YAML yapılandırmasını dosyaya ekleyin.

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

    Not

    <account-name> ve <account-key> yer tutucularını bu hızlı başlangıçta daha önce elde edilen AD ve ANAHTAR değerleriyle değiştirin.

  3. remote-secure.yaml dosyasını içeren çalışma klasörünüz bağlamında yeni bir terminal açın.

  4. Docker kapsayıcı görüntüsünü etkileşimli (--interactive --tty) modda çalıştırın. Geçerli çalışma klasörünü kapsayıcı içindeki yola bağladığınızdan /opt/gremlin-console/conf/ emin olun.

    docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
    
  5. Gremlin konsol kapsayıcısının içinde remote-secure.yaml yapılandırma dosyasını kullanarak uzak (Gremlin için API) hesabına bağlanın.

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

Köşeler ve kenarlar oluşturma ve çapraz geçiş yapma

Konsol hesaba bağlı olduğuna göre, hem köşeleri hem de kenarları oluşturmak ve çapraz geçiş yapmak için standart Gremlin söz dizimini kullanın.

  1. Aşağıdaki özelliklere sahip bir ürün için köşe ekleyin:

    Değer
    Etiket 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')
    

    Önemli

    Ön ekini sisli :> yapma. Komutu uzaktan çalıştırmak için THis ön eki gereklidir.

  2. Şu özelliklere sahip başka bir ürün köşesi ekleyin:

    Değer
    Etiket 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. İki ürün arasındaki ilişkiyi tanımlamak için adlı replaces bir kenar oluşturun.

    :> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
    
  4. Grafikteki tüm köşeleri sayma.

    :> g.V().count()
    
  5. öğesinin yerini alan tüm köşeleri bulmak için grafta Kiama classic surfboardgeçiş yapma.

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
    
  6. Yerini alan tüm köşeleri Montau Turtle Surfboard bulmak için grafta geçiş yapma.

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

Kaynakları temizleme

Gremlin hesabı için API'ye artık ihtiyacınız kalmadığında ilgili kaynak grubunu silin.

  1. Henüz yoksa resourceGroupName için bir kabuk değişkeni oluşturun.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    
  2. Kaynak grubunu silmek için kullanın az group delete .

    az group delete \
        --name $resourceGroupName
    

Sorunu nasıl çözdük?

Apache Gremlin için Azure Cosmos DB, Gremlin'i hizmet olarak sunarak sorunumuzu çözdü. Bu teklifle kendi Gremlin sunucu örneklerinizi oluşturmanız veya kendi altyapınızı yönetmeniz gerekmez. Daha da fazlası, zaman içinde gereksinimleriniz arttıkça çözümünüzü ölçeklendikleyebilirsiniz.

Gremlin hesabına yönelik API'ye bağlanmak için kapsayıcı görüntüsünü kullanarak tinkerpop/gremlin-console gremlin konsolunu yerel yükleme gerektirmeyen bir şekilde çalıştırdınız. Ardından, çalışan kapsayıcıdan Gremlin hesabı için API'ye bağlanmak için remote-secure.yaml dosyasında depolanan yapılandırmayı kullandınız. Buradan birden çok yaygın Gremlin komutu çalıştırmıştınız.

Sonraki adım