التشغيل السريع: Azure Cosmos DB لمكتبة Apache Gremlin ل Python
ينطبق على: العفريت
Azure Cosmos DB ل Apache Gremlin هي خدمة قاعدة بيانات رسم بياني مدارة بالكامل تنفذ إطار عمل حوسبة الرسم البياني الشائع Apache Tinkerpop
باستخدام لغة استعلام Gremlin. تمنحك واجهة برمجة التطبيقات ل Gremlin طريقة منخفضة الاحتكاك للبدء في استخدام Gremlin مع خدمة يمكن أن تنمو وتتوسع بقدر ما تحتاج مع الحد الأدنى من الإدارة.
في هذا التشغيل السريع، يمكنك استخدام المكتبة gremlinpython
للاتصال بحساب Azure Cosmos DB الذي تم إنشاؤه حديثا لحساب Gremlin.
مكتبة التعليمات البرمجية | الحزمة (PyPi)
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط.
- لا يوجد اشتراك في Azure؟ التسجيل للحصول على حساب Azure مجاني.
- ألا تريد اشتراك Azure؟ يمكنك تجربة Azure Cosmos DB مجانا دون الحاجة إلى اشتراك.
- Python (الأحدث)
- أليس لديك Python مثبت؟ جرب هذا التشغيل السريع في GitHub Codespaces.
- واجهة سطر أوامر Azure (CLI)
Azure Cloud Shell
Azure يستضيف Azure Cloud Shell، بيئة تفاعلية يمكن استخدامها من خلال المستعرض. يمكنك استخدام Bash أو PowerShell مع Cloud Shell للعمل مع خدمات Azure. يمكنك استخدام أوامر Cloud Shell المثبتة مسبقًا لتشغيل التعليمات البرمجية في هذه المقالة دون الحاجة إلى تثبيت أي شيء على البيئة المحلية.
لبدء Azure Cloud Shell:
خيار | مثال/ رابط |
---|---|
انقر فوق جربه في الزاوية العلوية اليسرى من التعليمة البرمجية أو كتلة الأمر. تحديد جربه لا يقوم بنسخ التعليمة البرمجية أو الأمر تلقائيًا إلى Cloud Shell. | ![]() |
انتقل إلى https://shell.azure.com، أو حدد زر تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. | ![]() |
حدد زر Cloud Shell على شريط القوائم في أعلى اليمين في مدخل Microsoft Azure. | ![]() |
لاستخدام Azure Cloud Shell:
ابدأ تشغيل Cloud Shell.
حدد الزر نسخ على كتلة التعليمات البرمجية (أو كتلة الأوامر) لنسخ التعليمات البرمجية أو الأمر.
ألصق التعليمة البرمجية أو الأمر في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.
حدد Enter لتشغيل التعليمات البرمجية أو الأمر.
الإعداد
يرشدك هذا القسم خلال إنشاء واجهة برمجة تطبيقات لحساب Gremlin وإعداد مشروع Python لاستخدام المكتبة للاتصال بالحساب.
إنشاء واجهة برمجة تطبيقات لحساب Gremlin
يجب إنشاء واجهة برمجة التطبيقات لحساب Gremlin قبل استخدام مكتبة Python. بالإضافة إلى ذلك، فإنه يساعد أيضا على وجود قاعدة البيانات والرسم البياني في مكانها.
قم بإنشاء متغيرات 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"
إذا لم تكن قد قمت بالفعل، فسجل الدخول إلى Azure CLI باستخدام
az login
.استخدم
az group create
لإنشاء مجموعة موارد جديدة في اشتراكك.az group create \ --name $resourceGroupName \ --location $location
استخدم
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 ويجب عليك الاشتراك عند إنشاء الحساب. إذا فشل هذا الأمر في تطبيق خصم المستوى المجاني، فهذا يعني أنه تم تمكين حساب آخر في الاشتراك بالفعل مع المستوى المجاني.
احصل على واجهة برمجة التطبيقات ل Gremlin endpoint NAME للحساب باستخدام
az cosmosdb show
.az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
ابحث عن المفتاح من قائمة مفاتيح الحساب باستخدام
az-cosmosdb-keys-list
.az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
سجل قيم NAME وKEY. يمكنك استخدام بيانات الاعتماد هذه لاحقا.
إنشاء قاعدة بيانات باسم
cosmicworks
باستخدامaz cosmosdb gremlin database create
.az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"
إنشاء رسم بياني باستخدام
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
إنشاء تطبيق وحدة تحكم Python جديد
إنشاء تطبيق وحدة تحكم Python في مجلد فارغ باستخدام المحطة الطرفية المفضلة لديك.
افتح المحطة الطرفية في مجلد فارغ.
إنشاء ملف app.py.
touch app.py
تثبيت حزمة PyPI
أضف حزمة gremlinpython
PyPI إلى مشروع Python.
إنشاء ملف requirements.txt.
touch requirements.txt
أضف الحزمة
gremlinpython
من فهرس حزمة Python إلى ملف المتطلبات.gremlinpython==3.7.0
قم بتثبيت جميع المتطلبات لمشروعك.
python install -r requirements.txt
تكوين متغيرات البيئة
لاستخدام قيم NAME وURI التي تم الحصول عليها سابقا في هذا التشغيل السريع، استمر في استخدام متغيرات البيئة الجديدة على الجهاز المحلي الذي يقوم بتشغيل التطبيق.
لتعيين متغير البيئة، استخدم المحطة الطرفية لاستمرار القيم ك
COSMOS_ENDPOINT
وCOSMOS_KEY
على التوالي.export COSMOS_GREMLIN_ENDPOINT="<account-name>" export COSMOS_GREMLIN_KEY="<account-key>"
تحقق من تعيين متغيرات البيئة بشكل صحيح.
printenv COSMOS_GREMLIN_ENDPOINT printenv COSMOS_GREMLIN_KEY
أمثلة على التعليمات البرمجية
تتصل التعليمات البرمجية في هذه المقالة بقاعدة بيانات باسم cosmicworks
ورسم بياني باسم products
. ثم تضيف التعليمات البرمجية الذروات والحواف إلى الرسم البياني قبل اجتياز العناصر المضافة.
مصادقة العميل
يجب التصريح بطلبات التطبيق إلى معظم خدمات Azure. بالنسبة لواجهة برمجة التطبيقات ل Gremlin، استخدم قيم NAME وURI التي تم الحصول عليها سابقا في هذا التشغيل السريع.
افتح ملف app.py.
استيراد
client
ومنserializer
الوحدة النمطيةgremlin_python.driver
.import os from gremlin_python.driver import client, serializer
تحذير
اعتمادا على إصدار Python الخاص بك، قد تحتاج أيضا إلى استيراد
asyncio
وتجاوز نهج حلقة الحدث:import asyncio import sys if sys.platform == "win32": asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
إنشاء
ACCOUNT_NAME
ومتغيراتACCOUNT_KEY
.COSMOS_GREMLIN_ENDPOINT
قم بتخزين متغيري البيئة وCOSMOS_GREMLIN_KEY
كقيم لكل متغير خاص.ACCOUNT_NAME = os.environ["COSMOS_GREMLIN_ENDPOINT"] ACCOUNT_KEY = os.environ["COSMOS_GREMLIN_KEY"]
استخدم
Client
للاتصال باستخدام بيانات اعتماد الحساب ومسلسل GraphSON 2.0 .client = client.Client( url=f"wss://{ACCOUNT_NAME}.gremlin.cosmos.azure.com:443/", traversal_source="g", username="/dbs/cosmicworks/colls/products", password=f"{ACCOUNT_KEY}", message_serializer=serializer.GraphSONSerializersV2d0(), )
إنشاء رؤوس
الآن بعد أن تم توصيل التطبيق بالحساب، استخدم بناء جملة Gremlin القياسي لإنشاء رؤوس.
استخدم
submit
لتشغيل أمر من جانب الخادم على واجهة برمجة التطبيقات لحساب Gremlin. إنشاء ذروة منتج بالخصائص التالية:القيمة تسميه product
معرف 68719518371
name
Kiama classic surfboard
price
285.55
category
surfboards
client.submit( message=( "g.addV('product')" ".property('id', prop_id)" ".property('name', prop_name)" ".property('price', prop_price)" ".property('category', prop_partition_key)" ), bindings={ "prop_id": "68719518371", "prop_name": "Kiama classic surfboard", "prop_price": 285.55, "prop_partition_key": "surfboards", }, )
إنشاء ذروة منتج ثان باستخدام هذه الخصائص:
القيمة تسميه product
معرف 68719518403
name
Montau Turtle Surfboard
price
600.00
category
surfboards
client.submit( message=( "g.addV('product')" ".property('id', prop_id)" ".property('name', prop_name)" ".property('price', prop_price)" ".property('category', prop_partition_key)" ), bindings={ "prop_id": "68719518403", "prop_name": "Montau Turtle Surfboard", "prop_price": 600.00, "prop_partition_key": "surfboards", }, )
إنشاء ذروة منتج ثالث باستخدام هذه الخصائص:
القيمة تسميه product
معرف 68719518409
name
Bondi Twin Surfboard
price
585.50
category
surfboards
client.submit( message=( "g.addV('product')" ".property('id', prop_id)" ".property('name', prop_name)" ".property('price', prop_price)" ".property('category', prop_partition_key)" ), bindings={ "prop_id": "68719518409", "prop_name": "Bondi Twin Surfboard", "prop_price": 585.50, "prop_partition_key": "surfboards", }, )
إنشاء حواف
إنشاء حواف باستخدام بناء جملة Gremlin لتعريف العلاقات بين الذروات.
إنشاء حافة من المنتج المسمى
Montau Turtle Surfboard
يستبدل بالمنتجKiama classic surfboard
.client.submit( message=( "g.V([prop_partition_key, prop_source_id])" ".addE('replaces')" ".to(g.V([prop_partition_key, prop_target_id]))" ), bindings={ "prop_partition_key": "surfboards", "prop_source_id": "68719518403", "prop_target_id": "68719518371", }, )
تلميح
يستخدم تعريف الحافة هذا بناء الجملة
g.V(['<partition-key>', '<id>'])
. بدلا من ذلك، يمكنك استخدامg.V('<id>').has('category', '<partition-key>')
.إنشاء آخر يحل محل الحافة من نفس المنتج إلى
Bondi Twin Surfboard
.client.submit( message=( "g.V([prop_partition_key, prop_source_id])" ".addE('replaces')" ".to(g.V([prop_partition_key, prop_target_id]))" ), bindings={ "prop_partition_key": "surfboards", "prop_source_id": "68719518403", "prop_target_id": "68719518409", }, )
رؤوس الاستعلام والحواف
استخدم بناء جملة Gremlin لاجتياز الرسم البياني واكتشاف العلاقات بين القمم.
اجتياز الرسم البياني والعثور على جميع الذروات التي
Montau Turtle Surfboard
تحل محلها.result = client.submit( message=( "g.V().hasLabel('product')" ".has('category', prop_partition_key)" ".has('name', prop_name)" ".outE('replaces').inV()" ), bindings={ "prop_partition_key": "surfboards", "prop_name": "Montau Turtle Surfboard", }, )
اكتب إلى وحدة التحكم نتيجة هذا الاجتياز.
print(result)
تشغيل التعليمات البرمجية
تحقق من أن التطبيق الخاص بك يعمل كما هو متوقع عن طريق تشغيل التطبيق. يجب تنفيذ التطبيق بدون أخطاء أو تحذيرات. يتضمن إخراج التطبيق بيانات حول العناصر التي تم إنشاؤها والاستفسار عنها.
افتح المحطة الطرفية في مجلد مشروع Python.
استخدم
python <filename>
لتشغيل التطبيق. لاحظ الإخراج من التطبيق.python app.py
تنظيف الموارد
عندما لم تعد بحاجة إلى واجهة برمجة التطبيقات لحساب Gremlin، احذف مجموعة الموارد المقابلة.
إنشاء متغير shell ل resourceGroupName إذا لم يكن موجودا بالفعل.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"
استخدم
az group delete
لحذف مجموعة الموارد.az group delete \ --name $resourceGroupName
الخطوة التالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ