نصائح لتصميم قاعدة البيانات في تطبيق ويب [مغلق]

StackOverflow https://stackoverflow.com/questions/47486

  •  09-06-2019
  •  | 
  •  

سؤال

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

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

تم التعديل لإضافة المزيد من التفاصيل (كما طلب):

منصة:جانغو

محرك قاعدة البيانات:كنت أفكر في استخدام MySQL (ما لم تكن هناك ميزة كبيرة في استخدام آخر)

المخطط:كل ما لدي الآن هو بعض نماذج Django، وهذه تفاصيل كثيرة جدًا لا يمكن نشرها هنا.وإذا بدأت بنشر المخططات، يصبح هذا محددًا جدًا، وكنت أبحث عن نصائح عامة.على سبيل المثال، لنفترض أنني أقوم بإصدار "طلبات" ستتم معالجتها لاحقًا وإرجاع نتيجة يجب علي تخزينها لعرض نوع من "السجل".في هذه الحالة، هل من الأفضل أن يكون لديك جدول منفصل لـ "التاريخ" أم جدول واحد فقط يجمع كلاً من "الأوامر" والنتيجة؟أعتقد أنه يمكنني تخزين جدول "السجل" مؤقتًا، ولكن هذا قد يستغرق مساحة أكبر في قاعدة البيانات وأيضًا المزيد من عمليات قاعدة البيانات لأنه سيتعين علي إنشاء صفوف جديدة باستمرار بدلاً من مجرد تغييرها في الجدول التجميعي.

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

المحلول

ربما تكون قد تطرقت إلى مشكلة أكبر بكثير تتعلق بالتصميم من أجل قابلية التوسع العالية والأداء بشكل عام.

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

الأهم من تصميم قاعدة بياناتك لتطبيقات الويب عالية الأداء، هو استخدامك الفعال للتخزين المؤقت على مستوى العميل من خلال التخزين المؤقت لصفحة HTML وعلى مستوى الخادم من خلال البيانات المخزنة مؤقتًا أو تقديم الملفات الثابتة بدلاً من الملفات الديناميكية.

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

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

بالطبع هذا النوع من التحسين ليس ضروريًا إلا إذا كنت تعتقد أن تطبيقك سيبرره.

نصائح أخرى

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

على المدى الطويل، يجب عليك أيضًا إلقاء نظرة com.memcached, ، حيث أن استعلامات قاعدة البيانات يمكن أن تكون عنق الزجاجة عندما يكون لديك أكثر من عدد قليل من المستخدمين.

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

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

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