أنماط إيجار قاعدة بيانات SaaS متعددة المستأجرين

ينطبق على: قاعدة بيانات Azure SQL

توضح هذه المقالة نماذج الإيجار المختلفة المتاحة لتطبيق SaaS متعدد المستأجرين.

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

أ. مفاهيم ومصطلحات SaaS

في نموذج "البرامج كخدمة" (SaaS)، لا تبيع شركتك تراخيص لبرنامجك. بدلاً من ذلك، يدفع كل عميل مدفوعات الإيجار لشركتك، ما يجعل كل عميل مستأجراً لشركتك.

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

يشير المصطلح نموذج الإيجار إلى كيفية تنظيم البيانات المخزنة للمستأجرين:

  • الإيجار الفردي: تخزن كل قاعدة بياناتٍ البياناتَ من مستأجر واحد فقط.
  • متعدد المستأجرين: تخزن كل قاعدة بياناتٍ البيانات من مستأجرين منفصلين متعددين (مع آليات لحماية خصوصية البيانات).
  • تتوفر أيضاً نماذج الإيجار المختلط.

ب. كيفية اختيار نموذج الإيجار المناسب

بشكل عام، لا يؤثر نموذج الإيجار على وظيفة التطبيق، ولكنه من المحتمل أن يؤثر على جوانب أخرى من الحل الشامل. تُستخدم المعايير التالية لتقييم كل نموذج:

  • قابلية التوسع:

    • عدد المستأجرين.
    • التخزين لكل مستأجر.
    • التخزين الكلي.
    • حمولة العمل.
  • عزل المستأجر: عزل البيانات وأدائها (سواء كان عبء عمل أحد المستأجرين يؤثر على الآخرين).

  • التكلفة لكل مستأجر: تكاليف قاعدة البيانات.

  • التعقيد الإنمائي:

    • التغييرات على المخطط.
    • التغييرات على الاستعلامات (التي يتطلبها النمط).
  • درجة التعقيد التشغيلي:

    • مراقبة وإدارة الأداء.
    • إدارة المخطط.
    • استعادة المستأجر.
    • الاسترداد بعد الكوارث.
  • قابلية التخصيص: سهولة دعم تخصيصات المخطط التي تكون إما خاصة بالمستأجر أو خاصة بفئة المستأجر.

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

ج. تطبيق مستأجر منفرد مع قاعدة بيانات مستأجر واحد

عزل مستوى التطبيق

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

Design of standalone app with exactly one single-tenant database.

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

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

إدارة البائعين

يمكن للبائع الوصول إلى جميع قواعد البيانات في جميع مثيلات التطبيق المستقلة، حتى مع تثبيت مثيلات التطبيق في اشتراكات مستأجر مختلفة. يتم الوصول عبر اتصالات SQL. يمكن أن يمكّن الوصول عبر المثيل البائع من مركزية إدارة المخطط والاستعلام عبر قواعد البيانات لأغراض إعداد التقارير أو التحليلات. إذا كان هذا النوع من الإدارة المركزية مطلوباً، فيجب توزيع كتالوج يقوم بتعيين معرفات المستأجر إلى URIs لقاعدة البيانات. توفر قاعدة بيانات Azure SQL مكتبة تقسيم تُستخدم معاً لتوفير كتالوج. تمت تسمية مكتبة التقسيم رسمياً باسم Elastic Database Client Library.

د. تطبيق متعدد المستأجرين مع قاعدة بيانات لكل مستأجر

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

Design of multi-tenant app with database-per-tenant.

تخصيص للمستأجر

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

مع قاعدة البيانات لكل مستأجر، يكون من السهل تخصيص المخطط لمستأجر واحد أو أكثر. يجب أن يقوم بائع التطبيق بتصميم إجراءاتٍ لإدارة تخصيصات المخطط على نطاق واسع بعناية.

التجمعات المرنة

عند توزيع قواعد البيانات في نفس مجموعة الموارد، يمكن تجميعها في مجموعات مرنة. توفّر المجمعات طريقة فعالة من حيث التكلفة لمشاركة الموارد عبر العديد من قواعد البيانات. يُعد خيار التجمع هذا أرخص من طلب أن تكون كل قاعدة للبياناتٍ كبيرةً بما يكفي لاستيعاب ذروة الاستخدام التي تواجهها. على الرغم من أن قواعد البيانات المجمعة تشترك في الوصول إلى الموارد، إلا إنه لا يزال بإمكانها تحقيق درجة عالية من عزل الأداء.

Design of multi-tenant app with database-per-tenant, using elastic pool.

توفر قاعدة بيانات Azure SQL الأدوات اللازمة لتكوين المشاركة ومراقبتها وإدارتها. تتوفر مقاييس الأداء على مستوى التجمع وقاعدة البيانات في مدخل Microsoft Azure ومن خلال سجلات Azure Monitor. يمكن أن تعطي المقاييس رؤًى رائعة لكلٍ من الأداء الإجمالي والمستأجر المحدد. يمكن نقل قواعد البيانات الفردية بين التجمعات لتوفير موارد محجوزة لمستأجر معين. تمكّنك هذه الأدوات من ضمان الأداء الجيد بطريقة فعالة من حيث التكلفة.

مقياس العمليات لقاعدة البيانات لكل مستأجر

تحتوي قاعدة بيانات Azure SQL على العديد من ميزات الإدارة المصممة لإدارة عدد كبير من قواعد البيانات على نطاق واسع، مثل أكثر من 100000 قاعدة بيانات. هذه الميزات تجعل نمط قاعدة البيانات لكل مستأجر مقبولاً.

على سبيل المثال، إن النظام يحتوي على قاعدة بيانات 1000 مستأجر وكأنها قاعدة بيانات واحدة فقط. قد تحتوي قاعدة البيانات على 20 فهرساً. إذا تحول النظام إلى 1000 قاعدة بيانات للمستأجر الفردي، فسترتفع كمية الفهارس إلى 20000. في قاعدة بيانات Azure SQL كجزء من الضبط التلقائي، يتم تمكين ميزات الفهرسة التلقائية بشكل افتراضي. تعمل الفهرسة التلقائية على إدارة جميع الفهارس البالغ عددها 20000 والتحسينات المستمرة للإنشاء والإفلات. تحدث هذه الإجراءات الآلية داخل قاعدة بيانات فردية، ولا يتم تنسيقها أو تقييدها بإجراءات مماثلة في قواعد البيانات الأخرى. تتعامل الفهرسة التلقائية مع الفهارس بشكل مختلف في قاعدة البيانات المشغولة عن تلك الموجودة في قاعدة البيانات الأقل انشغالاً. سيكون هذا النوع من تخصيص إدارة الفهرس غير عملي على نطاق قاعدة البيانات لكل مستأجر إذا كان لا بد من القيام بمهمة الإدارة الضخمة هذه يدوياً.

تشمل ميزات الإدارة الأخرى التي تتسع بشكل جيد ما يلي:

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

Automation

يمكن كتابة عمليات الإدارة وتقديمها من خلال نموذج devops. يمكن حتى التنفيذ التلقائي للعمليات وعرضها في التطبيق.

على سبيل المثال، يمكنك التنفيذ التلقائي لاسترداد مستأجر واحد إلى نقطة زمنية سابقة. يحتاج الاسترداد فقط إلى استعادة قاعدة بيانات المستأجر الفردي التي تخزن المستأجر. هذا الاسترداد ليس له أي تأثير على المستأجرين الآخرين، ما يؤكد أن عمليات الإدارة في المستوى الدقيق لكل مستأجر فردي.

هـ. تطبيق متعدد المستأجرين مع قواعد بيانات متعددة المستأجرين

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

يتم التضحية بعزل المستأجر

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

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

أقل تكلفة

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

تمت مناقشة نسختين مختلفتين من نموذج قاعدة بيانات متعددة المستأجرين فيما يلي، مع كون النموذج المُقسَّم متعدد المستأجرين هو الأكثر مرونة وقابلية للتوسع.

و. تطبيق متعدد المستأجرين بقاعدة بيانات واحدة متعددة المستأجرين

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

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

ز. تطبيق متعدد المستأجرين مع قواعد بيانات متعددة المستأجرين تمت مشاركتها

تصل معظم تطبيقات SaaS إلى بيانات مستأجر واحد فقط في كل مرة. يسمح نمط الوصول هذا بتوزيع بيانات المستأجر عبر قواعد بيانات أو أجزاء متعددة، حيث يتم احتواء جميع البيانات الخاصة بأي مستأجر واحد في جزء واحد. بالاقتران مع نمط قاعدة بيانات متعددة المستأجرين، يتيح النموذج المُقسَّم نطاقاً غير محدود تقريباً.

Design of multi-tenant app with sharded multi-tenant databases.

إدارة القِطع

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

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

قواعد البيانات الأصغر تتم إدارتها بسهولة أكبر

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

معرّف المستأجر في المخطط

اعتماداً على نهج التقسيم المستخدم فإنه قد يتم فرض قيود إضافية على مخطط قاعدة البيانات. يتطلب تطبيق تقسيم / دمج قاعدة بيانات SQL أن يشتمل المخطط على مفتاح التقسيم، والذي يكون عادةً معرّف المستأجر. معرّف المستأجر هو العنصر الرئيسي في المفتاح الأساسي لجميع الجداول المُقسمة. معرّف المستأجر تمكّن تطبيق الانقسام / الدمج من تحديد موقع البيانات المرتبطة بمستأجر معين ونقلها بسرعة.

تجمع مرن للقِطع

يمكن وضع قواعد البيانات متعددة المستأجرين المشتركة في تجمعات مرنة. بشكل عام، فإن وجود العديد من قواعد بيانات المستأجر الفردي في مجمّع هو أمر فعال من حيث التكلفة مثل وجود العديد من المستأجرين في عدد قليل من قواعد البيانات متعددة المستأجرين. تعد قواعد البيانات متعددة المستأجرين مفيدة عندما يكون هناك عدد كبير من المستأجرين غير النشطين نسبياً.

ح. نموذج قاعدة بيانات مختلطة مُقسمة ومتعددة المستأجرين

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

نقل المستأجرين حول

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

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

تجمّع

في هذا النموذج المختلط، يمكن وضع قواعد بيانات المستأجر الفردي للمستأجرين المشتركين في تجمعات الموارد لتقليل تكاليف قاعدة البيانات لكل مستأجر. يتم ذلك أيضاً في نموذج قاعدة البيانات لكل مستأجر.

ط. مقارنة نماذج الإيجار

يلخص الجدول التالي الاختلافات بين نماذج الإيجار الرئيسية.

القياس تطبيق مستقل قاعدة بيانات لكل مستأجر متعدد المستأجرين ومقسَّم
المقياس متوسط
1-100 ثانية
عالٍ جداً
1-100000 ثانية
غير محدود
1-1000000 ثانية
عزل Tenant عالٍ جداً درجة عالية قليل؛ باستثناء أي مستأجر واحد (هذا وحده في MT ديسيبل).
تكلفة قاعدة البيانات لكل مستأجر عالٍ؛ بحجم القمم. قليل؛ يتم استخدام تجمعات مرنة. الأدنى، لصغار المستأجرين في MT DBs.
مراقبة الأداء وإدارته لكل مستأجر فقط إجمالي + لكل مستأجر إجمالي؛ على الرغم من أنه لكل مستأجر للأفراد فقط.
تعقيد التنمية منخفض منخفض واسطة؛ بسبب التقسيم.
التعقيد التشغيلي منخفض- مرتفع. فردي بسيط، ومعقد على نطاق واسع. منخفض- متوسط. الأنماط تعالج التعقيد على نطاق واسع. منخفض- مرتفع. إدارة المستأجر الفردي معقدة.

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