استخدام رسم بياني مقسم في Azure Cosmos DB

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

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

يتم التقسيم داخلياً إذا كان من المتوقع أن تخزن الحاوية حجم أكبر من 20 GB أو إذا كنت ترغب في تخصيص أكثر من 10,000 وحدة طلب في الثانية (وحدات RUs). يتم تقسيم البيانات تلقائياً استناداً إلى مفتاح القسم الذي تحدده. يطلب إدخال مفتاح القسم إذا أنشأت حاويات الرسم البياني من مدخل Microsoft Azure أو إصدارات 3.x أو أحدث من برامج تشغيل Gremlin. لا يطلب الحصول على مفتاح القسم إذا كنت تستخدم إصدارات 2.x أو أقدم من برامج تشغيل Gremlin.

تطبق نفس المبادئ العامة من آلية تقسيمAzure Cosmos DB مع بعض التحسينات الخاصة بالرسم البياني الموضحة أدناه.

رسم بياني للتقسيم.

آلية تقسيم الرسم البياني

توضح الإرشادات التالية كيفية عمل إستراتيجية التقسيم في Azure Cosmos DB:

  • تخزن الرؤوس والحواف كمستندات JSON.

  • تطلب الرؤوس مفتاح قسم. سيحدد هذا المفتاح القسم الذي يخزن فيه الرأس من خلال لوغاريتم التجزئة. يتم تعريف اسم خاصية مفتاح القسم عند إنشاء حاوية جديدة ويكون لها تنسيق: /partitioning-key-name.

  • سيتم تخزين الحواف مع رأس مصدرها. بعبارة أخرى، يحدد مفتاح القسم في كل رأس مكان تخزين هذه الرؤوس مع حوافها الصادرة. ينفذ هذا التحسين لتجنب استعلامات عبر القسم عند استخدام العلاقة الأساسية في استعلامات الرسم البيانيout().

  • تحتوي الحواف على مراجع إلى الرؤوس التي تشير إليها. يتم تخزين كل الحواف مع مفاتيح القسم ومعرفات الرؤوس التي تشير إليها. يجعل هذا الحساب كل الاستعلامات عن الاتجاه استعلامات مقسمة النطاق دائماً، وليست استعلامات خفية عبر القسمout().

  • تحتاج استعلامات Graph إلى تحديد مفتاح القسم. لتحقيق الاستفادة الكاملة من التقسيم الأفقي في Azure Cosmos DB، يجب تحديد مفتاح القسم عند تحديد رأس مفردة كلما كان ذلك ممكناً. فيما يلي استعلامات لتحديد رأس واحد أو عدة رؤوس في رسم بياني مقسم:

    • /id ولا يتم دعمها /label كمفاتيح أقسام لحاوية في واجهة برمجة التطبيقات ل Gremlin.

    • تحديد رأس بواسطة معرف، ثم استخدم .has() الخطوة لتحديد خاصية مفتاح القسم:

      g.V('vertex_id').has('partitionKey', 'partitionKey_value')
      
    • تحديد قمة رأس عن طريق تحديد مجموعة تشمل قيمة مفتاح القسم ومعرف:

      g.V(['partitionKey_value', 'vertex_id'])
      
    • تحديد مجموعة من الرؤوس مع معرفاتها وتحديد قائمة لقيم مفتاح القسم:

      g.V('vertex_id0', 'vertex_id1', 'vertex_id2', …).has('partitionKey', within('partitionKey_value0', 'partitionKey_value01', 'partitionKey_value02', …)
      
    • استخدام إستراتيجية القسم في بداية الاستعلام وتحديد قسم لنطاق بقية استعلام Gremlin:

      g.withStrategies(PartitionStrategy.build().partitionKey('partitionKey').readPartitions('partitionKey_value').create()).V()
      

أفضل الممارسات عند استخدام رسم بياني مقسم

استخدم الإرشادات التالية لضمان الأداء وقابلية التوسع عند استخدام الرسوم البيانية المقسمة مع حاويات غير محدودة:

  • حدد دائماً قيمة مفتاح القسم عند الاستعلام عن الرأس. الحصول على الرأس من قسم معروف هي وسيلة نجاح الأداء. دائماً ما يتم تحديد نطاق كل العمليات المتجاورة اللاحقة إلى القسم نظراً لحقيقة أن احتواء الحواف على معرف مرجعي ومفتاح قسم إلى الرؤوس المستهدفة.

  • استخدم الاتجاه الصادر عند الاستعلام عن الحواف كلما كان ذلك ممكناً. كما هو مذكور أعلاه، يتم تخزين الحواف مع رؤوس مصدرها في الاتجاه الصادر. لذلك تنخفض فرص اللجوء إلى الاستعلام عبر القسم عند تصميم البيانات والاستعلامات على أساس هذا النمط. وعلى عكس ذلك، سيكون دائماً نشر الاستعلام باهظ الثمنin().

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

  • تحسين الاستعلامات للحصول على البيانات داخل حدود القسم. تحاذي إستراتيجية التقسيم الأمثل أنماط الاستعلام. توفر الاستعلامات التي تحصل على بيانات من قسم واحد أفضل أداء ممكن.

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

بعد ذلك يمكنك متابعة قراءة المقالات التالية: