سؤال

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

هل كانت مفيدة؟

المحلول

ابدأ بقاعدة بيانات واحدة.تقسيم البيانات/الوظائف عندما يتطلب المشروع ذلك.

إليك ما يمكننا تعلمه من LinkedIn:

  • قاعدة بيانات واحدة لا تعمل
  • التكامل المرجعي لن يكون ممكنا
  • أي فقدان للبيانات يمثل مشكلة
  • يعد التخزين المؤقت أمرًا جيدًا حتى عندما يكون فعالاً بشكل متواضع
  • لا تقلل أبدًا من مسار النمو

مصدر:

بنية لينكدإن

بنية الاتصالات لينكد إن

نصائح أخرى

قابلية التوسع العالية هي مدونة جيدة لتوسيع نطاق تطبيقات SaaS.كما ذكرنا سابقًا، يعد تقسيم الجداول عبر قواعد البيانات كما اقترحت فكرة سيئة بشكل عام.ولكن المفهوم المماثل هو التقسيم، حيث تحتفظ بنفس المخطط (أو ما شابه)، ولكن تقوم بتقسيم البيانات على خوادم متعددة.على سبيل المثال، المستخدمون 1-5000 موجودون على الخادم 1، والمستخدمون 5000-10000 موجودون على الخادم 2.اعتمادًا على الاستعلامات التي يستخدمها تطبيقك، يمكن أن تكون هذه طريقة فعالة للتوسع.

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

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

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

ومع ذلك، قد تكون قواعد البيانات المتعددة ضرورية إذا كنت تريد أن يكون موقعك/تطبيقك قابلاً للتطوير بشكل كبير (على سبيل المثال.مقياس الانترنت).على سبيل المثال، يمكنك استضافة كل قاعدة بيانات على خادم فعلي مختلف.

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

هناك مجموعة متنوعة من الطرق لتحقيق ذلك، ولكن قضايا الإيجار المتعدد أعمق من مجرد نموذج البيانات.أنا أكره أن أقوم بتوصيل المنتج، ولكن تحقق من ذلك سااسغريد من خلال الشركة التي أعمل بها، التذييلات.نحن نظام تشغيل سحابي يسمح لك بكتابة تطبيقات SOA لمستأجر واحد (لا تتردد في استخدام NHibernate للوصول إلى البيانات) والذي يقوم تلقائيًا بإدخال فترات إيجار متعددة في تطبيقك.عند نشر تطبيقك، يمكنك القيام بأشياء مثل اختيار نموذج بيانات (قاعدة بيانات معزولة أو مشتركة) وسيتم نشر SaaSGrid وفقًا لذلك وسيتم تشغيل تطبيقك دون أي تغييرات في التعليمات البرمجية - ما عليك سوى كتابة التعليمات البرمجية كما لو كانت لمستأجر واحد!

لماذا لاستخدام قاعدة البيانات على الإطلاق؟

أعتقد أنه من الجيد استخدام أنظمة التخزين الموزعة مثل Hadoop وVoldemort (project-voldemort.com الذي تم تطويره واستخدامه بواسطة LinkedIn).

أعتقد أن قاعدة البيانات جيدة للبيانات الحسية مثل العمليات المالية، ولكن بالنسبة لكل شيء آخر يمكنك استخدام المخازن الموزعة.

اسال نفسك:ماذا تكسب من خلال نقل كل شيء إلى قواعد بيانات منفصلة؟

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top