التشغيل السريع: اجتياز الذروات والحواف باستخدام وحدة تحكم Gremlin وAzure Cosmos DB ل Apache Gremlin

ينطبق على: العفريت

Azure Cosmos DB ل Apache Gremlin هي خدمة قاعدة بيانات رسم بياني مدارة بالكامل تنفذ إطار عمل حوسبة الرسم البياني الشائع Apache Tinkerpopباستخدام لغة استعلام Gremlin. تمنحك واجهة برمجة التطبيقات ل Gremlin طريقة منخفضة الاحتكاك للبدء في استخدام Gremlin مع خدمة يمكن أن تنمو وتتوسع بقدر ما تحتاج مع الحد الأدنى من الإدارة.

في هذا التشغيل السريع، يمكنك استخدام وحدة تحكم Gremlin للاتصال ب Azure Cosmos DB تم إنشاؤه حديثا لحساب Gremlin.

المتطلبات الأساسية

Azure Cloud Shell

Azure يستضيف Azure Cloud Shell، بيئة تفاعلية يمكن استخدامها من خلال المستعرض. يمكنك استخدام Bash أو PowerShell مع Cloud Shell للعمل مع خدمات Azure. يمكنك استخدام أوامر Cloud Shell المثبتة مسبقًا لتشغيل التعليمات البرمجية في هذه المقالة دون الحاجة إلى تثبيت أي شيء على البيئة المحلية.

لبدء Azure Cloud Shell:

خيار مثال/ رابط
انقر فوق ⁧⁩جربه⁧⁩ في الزاوية العلوية اليسرى من التعليمة البرمجية أو كتلة الأمر. تحديد ⁧⁩جربه⁧⁩ لا يقوم بنسخ التعليمة البرمجية أو الأمر تلقائيًا إلى Cloud Shell. لقطة شاشة تعرض مثالاً على Try It for Azure Cloud Shell.
انتقل إلى ⁧⁩⁧ https://shell.azure.com⁩⁧⁩، أو حدد زر ⁩تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. زر لتشغيل Azure Cloud Shell.
حدد زر Cloud Shell على شريط القوائم في أعلى اليمين في مدخل Microsoft Azure. لقطة شاشة تعرض زر Cloud Shell في مدخل Microsoft Azure

لاستخدام Azure Cloud Shell:

  1. ابدأ تشغيل Cloud Shell.

  2. حدد الزر نسخ على كتلة التعليمات البرمجية (أو كتلة الأوامر) لنسخ التعليمات البرمجية أو الأمر.

  3. ألصق التعليمة البرمجية أو الأمر في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.

  4. حدد Enter لتشغيل التعليمات البرمجية أو الأمر.

إنشاء واجهة برمجة تطبيقات لحساب Gremlin والموارد ذات الصلة

يجب إنشاء واجهة برمجة التطبيقات لحساب Gremlin قبل استخدام وحدة تحكم Gremlin. بالإضافة إلى ذلك، فإنه يساعد أيضا على وجود قاعدة البيانات والرسم البياني في مكانها.

  1. قم بإنشاء متغيرات shell لـ accountName وresourceGroupNameوالموقع.

    # 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 لإنشاء واجهة برمجة تطبيقات جديدة لحساب Gremlin مع الإعدادات الافتراضية.

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

    إشعار

    يمكنك الحصول على حساب طبقةAzure Cosmos DB مجانية واحدة لكل اشتراك Azure ويجب عليك الاشتراك عند إنشاء الحساب. إذا فشل هذا الأمر في تطبيق خصم المستوى المجاني، فهذا يعني أنه تم تمكين حساب آخر في الاشتراك بالفعل مع المستوى المجاني.

  5. احصل على واجهة برمجة التطبيقات ل Gremlin endpoint NAME للحساب باستخدام 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) للاتصال بواجهة برمجة التطبيقات ل Gremlin. بمجرد تشغيل وحدة التحكم، اتصل من مضيف Docker المحلي إلى واجهة برمجة التطبيقات البعيدة لحساب 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> و <account-key> بقيم NAME و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 for Gremlin) البعيد باستخدام ملف التكوين remote-secure.yaml .

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

إنشاء رؤوس وحواف واجترابها

الآن بعد أن تم توصيل وحدة التحكم بالحساب، استخدم بناء جملة Gremlin القياسي لإنشاء كل من القمم والحواف واجتيازها.

  1. أضف ذروة لمنتج بالخصائص التالية:

    القيمة‬
    تسميه product
    معرف 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. أضف ذروة منتج آخر باستخدام هذه الخصائص:

    القيمة‬
    تسميه product
    معرف 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()
    

تنظيف الموارد

عندما لم تعد بحاجة إلى واجهة برمجة التطبيقات لحساب Gremlin، احذف مجموعة الموارد المقابلة.

  1. إنشاء متغير shell ل 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 الخاصة بك أو إدارة البنية الأساسية الخاصة بك. أكثر من ذلك، يمكنك توسيع نطاق الحل الخاص بك مع نمو احتياجاتك بمرور الوقت.

للاتصال بواجهة برمجة التطبيقات لحساب Gremlin، استخدمت tinkerpop/gremlin-console صورة الحاوية لتشغيل وحدة تحكم gremlin بطريقة لا تتطلب تثبيتا محليا. ثم استخدمت التكوين المخزن في ملف remote-secure.yaml للاتصال من الحاوية قيد التشغيل واجهة برمجة التطبيقات لحساب Gremlin. من هناك، قمت بتشغيل العديد من أوامر Gremlin الشائعة.

الخطوة التالية