مشاركة عبر


Sharding models on elastic clusters في Azure Database for PostgreSQL

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

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

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

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

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

المزايا:

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

العيوب:

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

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

التقسيم المستند إلى المخطط هو قاعدة البيانات المشتركة، ونموذج مخطط منفصل، ويصبح المخطط الجزء المنطقي داخل قاعدة البيانات. يمكن للتطبيقات متعددة المستأجرين استخدام مخطط لكل مستأجر للتقسيم بسهولة على طول بعد المستأجر. تغييرات الاستعلام غير مطلوبة، ويحتاج التطبيق فقط إلى تعديل صغير لتعيين 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