مشاركة عبر


المفاهيم الأساسية للتحجيم في Azure Cosmos DB ل PostgreSQL

هام

لم يعد Azure Cosmos DB ل PostgreSQL مدعوما للمشاريع الجديدة. لا تستخدم هذه الخدمة لمشاريع جديدة. بدلا من ذلك، استخدم إحدى هاتين الخدمتين:

قبل أن نتحقق من خطوات بناء تطبيق جديد، من المفيد رؤية نظرة عامة سريعة على المصطلحات والمفاهيم المعنية.

نظرة عامة هندسية

يمنحك Azure Cosmos DB ل PostgreSQL القدرة على توزيع الجداول و/أو المخططات عبر أجهزة متعددة في نظام مجموعة والاستعلام عنها بشفافية بنفس الطريقة التي تستعلم فيها عن PostgreSQL العادي:

رسم تخطيطي لعقدة منسق تقسم جدول إلى عُقد عاملة.

في Azure Cosmos DB لبنية PostgreSQL، هناك أنواع متعددة من العقد:

  • تخزن عقدة المنسق بيانات تعريف الجدول الموزعة وهي مسؤولة عن التخطيط الموزع.
  • على النقيض من ذلك، تقوم العقد العاملة بتخزين البيانات الفعلية وبيانات التعريف والقيام بالحساب.
  • كل من المنسق والعمال هي قواعد بيانات PostgreSQL عادية، مع تحميل ملحق citus.

لتوزيع جدول PostgreSQL عادي، كما هو الحال campaigns في الرسم التخطيطي أعلاه، قم بتشغيل أمر يسمى create_distributed_table(). بمجرد تشغيل هذا الأمر، يقوم Azure Cosmos DB ل PostgreSQL بإنشاء أجزاء للجدول عبر العقد العاملة بشفافية. في الرسم التخطيطي، يتم تمثيل الأجزاء كمربعات زرقاء.

لتوزيع مخطط PostgreSQL عادي، يمكنك تشغيل citus_schema_distribute() الأمر . بمجرد تشغيل هذا الأمر، يقوم Azure Cosmos DB ل PostgreSQL بتحويل الجداول في مثل هذه المخططات بشفافية إلى جداول مجمعة لجزء واحد يمكن نقلها كوحدة بين عقد نظام المجموعة.

إشعار

على نظام مجموعة بدون عقد عاملة، توجد أجزاء الجداول الموزعة على عقدة المنسق.

الأجزاء هي جداول PostgreSQL عادية (ولكن مسماة خصيصًا) تحتوي على شرائح من بياناتك. في مثالنا، لأننا وزعنا campaigns بواسطة company_id، تحتفظ الأجزاء بحملات، حيث يتم تعيين حملات الشركات المختلفة لأجزاء مختلفة.

عمود التوزيع (يُعرف أيضًا باسم مفتاح الأجزاء)

create_distributed_table() هي الوظيفة السحرية التي يوفرها Azure Cosmos DB ل PostgreSQL لتوزيع الجداول واستخدام الموارد عبر أجهزة متعددة.

SELECT create_distributed_table(
	'table_name',
	'distribution_column');

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

يقرر Azure Cosmos DB ل PostgreSQL كيفية تشغيل الاستعلامات بناء على استخدامها لمفتاح القطع:

يتضمن الاستعلام أين يتم تشغيله
مفتاح أجزاء واحد فقط على العُقدة العاملة التي تحتوي على الجزء الخاص بها
مفاتيح أجزاء متعددة متوازي عبر عُقد متعددة

يحدد اختيار مفتاح الأجزاء أداء تطبيقاتك وقابليتها للتوسع.

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

التوصيل الشبكي

ثمة مفهوم آخر مرتبط ارتباطًا وثيقًا بمفتاح الأجزاء هو الموقع المشترك. الجداول المقسمة حسب قيم نفس عمود التوزيع تكون مشتركة في الموقع - يتم تخزين أجزاء الجداول المشتركة في الموقع معًا على نفس العمال.

فيما يلي جدولان مقسمان حسب نفس المفتاح، site_id. فهي مشتركة في الموقع.

رسم تخطيطي لجداول http_request وhttp_request_1min مشتركة في الموقع بواسطة site_id.

يضمن Azure Cosmos DB ل PostgreSQL تخزين الصفوف ذات القيمة المطابقة site_id في كلا الجدولين على نفس العقدة العاملة. يمكنك أن ترى أنه بالنسبة لكلا الجدولين، يتم تخزين الصفوف ذات site_id=1 على العامل 1. وبالمثل لمعرفات المواقع الأخرى.

يساعد الموقع المشترك على تحسين شبكات JOIN عبر هذه الجداول. إذا قمت بضم الجدولين على site_id، يمكن ل Azure Cosmos DB ل PostgreSQL إجراء الربط محليا على العقد العاملة دون تبديل البيانات بين العقد.

يتم دائما تجميع الجداول داخل مخطط موزع مع بعضها البعض.

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