إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
هام
لم يعد Azure Cosmos DB ل PostgreSQL مدعوما للمشاريع الجديدة. لا تستخدم هذه الخدمة لمشاريع جديدة. بدلا من ذلك، استخدم إحدى هاتين الخدمتين:
استخدم Azure Cosmos DB ل NoSQL لحل قاعدة بيانات موزعة مصمم للسيناريوهات عالية النطاق مع اتفاقية مستوى خدمة توفر 99.999% (SLA) والتحجيم التلقائي الفوري وتجاوز الفشل التلقائي عبر مناطق متعددة.
استخدم ميزة المجموعات المرنة في قاعدة بيانات Azure ل PostgreSQL المجزأة باستخدام ملحق Citus مفتوح المصدر.
قبل أن نتحقق من خطوات بناء تطبيق جديد، من المفيد رؤية نظرة عامة سريعة على المصطلحات والمفاهيم المعنية.
نظرة عامة هندسية
يمنحك 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. فهي مشتركة في الموقع.
يضمن Azure Cosmos DB ل PostgreSQL تخزين الصفوف ذات القيمة المطابقة site_id في كلا الجدولين على نفس العقدة العاملة. يمكنك أن ترى أنه بالنسبة لكلا الجدولين، يتم تخزين الصفوف ذات site_id=1 على العامل 1. وبالمثل لمعرفات المواقع الأخرى.
يساعد الموقع المشترك على تحسين شبكات JOIN عبر هذه الجداول. إذا قمت بضم الجدولين على site_id، يمكن ل Azure Cosmos DB ل PostgreSQL إجراء الربط محليا على العقد العاملة دون تبديل البيانات بين العقد.
يتم دائما تجميع الجداول داخل مخطط موزع مع بعضها البعض.