نماذج التقسيم

ينطبق على: Azure Cosmos DB ل PostgreSQL (مدعوم بملحق قاعدة بيانات Citus إلى PostgreSQL)

التقسيم هو تقنية تستخدم في أنظمة قواعد البيانات والحوسبة الموزعة لتقسيم البيانات أفقيا عبر خوادم أو عقد متعددة. يتضمن تقسيم قاعدة بيانات كبيرة أو مجموعة بيانات إلى أجزاء أصغر وأكثر قابلية للإدارة تسمى Shards. يحتوي الجزء على مجموعة فرعية من البيانات، وتشكل الأجزاء معا مجموعة البيانات الكاملة.

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

التقسيم المستند إلى الصف

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

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

المزايا:

  • أفضل أداء
  • أفضل كثافة مستأجر لكل عقدة

العيوب:

  • يتطلب تعديلات المخطط
  • يتطلب تعديلات استعلام التطبيق
  • يجب على جميع المستأجرين مشاركة نفس المخطط

التقسيم المستند إلى المخطط

متوفر مع Citus 12.0 في Azure Cosmos DB ل PostgreSQL، والتقسيم المستند إلى المخطط هو قاعدة البيانات المشتركة، ونموذج مخطط منفصل، ويصبح المخطط الجزء المنطقي داخل قاعدة البيانات. يمكن للتطبيقات متعددة المستأجرين استخدام مخطط لكل مستأجر للتقسيم بسهولة على طول بعد المستأجر. تغييرات الاستعلام غير مطلوبة والتطبيق يحتاج فقط إلى تعديل صغير لتعيين search_path المناسبة عند تبديل المستأجرين. يعد التقسيم المستند إلى المخطط حلا مثاليا للخدمات المصغرة، وبالنسبة إلى ISVs التي تنشر التطبيقات التي لا يمكنها الخضوع للتغييرات المطلوبة للتقسيم المستند إلى الصف.

المزايا:

  • يمكن أن يكون لدى المستأجرين مخططات غير متجانسة
  • لا توجد تعديلات مخطط مطلوبة
  • لا يلزم إجراء تعديلات على استعلام التطبيق
  • توافق SQL للتقسيم المستند إلى المخطط أفضل مقارنة بالتقسيم المستند إلى الصف

العيوب:

  • عدد أقل من المستأجرين لكل عقدة مقارنة بالتقسيم المستند إلى الصف

المقايضات المقسمة

التقسيم المستند إلى المخطط التقسيم المستند إلى الصف
نموذج الإيجار المتعدد مخطط منفصل لكل مستأجر الجداول المشتركة مع أعمدة معرف المستأجر
إصدار Citus 12.0+ جميع الإصدارات
خطوات إضافية مقارنة ب Vanilla PostgreSQL بلا، تغيير التكوين فقط استخدام create_distributed_table على كل جدول لتوزيع الجداول وتأليفها حسب معرف المستأجر
عدد المستأجرين 1-10 آلاف 1-1 م+
متطلبات نمذجة البيانات لا توجد مفاتيح خارجية عبر المخططات الموزعة تحتاج إلى تضمين عمود معرف المستأجر (عمود توزيع، يعرف أيضا باسم مفتاح التجزئة) في كل جدول، وفي المفاتيح الأساسية، المفاتيح الخارجية
متطلبات SQL للاستعلامات أحادية العقدة استخدام مخطط موزع واحد لكل استعلام يجب أن تتضمن عبارات Joins و WHERE عمود tenant_id
استعلامات متوازية عبر المستأجرين لا ‏‏نعم‬
تعريفات الجدول المخصصة لكل مستأجر ‏‏نعم‬ لا
التحكم في الوصول أذونات المخطط أذونات المخطط
مشاركة البيانات عبر المستأجرين نعم، استخدام الجداول المرجعية (في مخطط منفصل) نعم، استخدام الجداول المرجعية
المستأجر لعزل الأجزاء كل مستأجر لديه مجموعة الأجزاء الخاصة به حسب التعريف يمكن أن تعطي معرفات مستأجر محددة مجموعة الأجزاء الخاصة بها عبر isolate_tenant_to_new_shard