ما الذي أحتاج إلى معرفته عن العمل مع قواعد بيانات ضخمة؟

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

سؤال

أريد أن أعرف ما هي المشكلات/الحلول/النصائح/أفضل الممارسات المحددة [لا تعاقبني على الكلمة] أثناء العمل مع قواعد بيانات ضخمة.

تحت الضخمة ، أقدر قواعد البيانات ، التي تحتوي على جداول مع ملايين الصفوف و/أو قواعد البيانات مع petabytes من البيانات.

ستكون الإجابات الموجهة نحو المنصة رائعة أيضًا.

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

المحلول

بعض الافكار

  • تعلم تفاصيل محرك قاعدة البيانات المحددة ، وكيف يعمل

  • كيفية تحسين الاستعلامات (تلميحات ، خطط التنفيذ)

  • كيفية ضبط قاعدة البيانات (ليس فقط الفهارس ، ولكن التخزين المادي والتمثيل ، تكامل نظام التشغيل).

  • الاستعلام "الحيل" مثل الجداول المؤقتة لتخزين نتائج مؤقتة يمكن إعادة استخدامها ،

  • كيفية تقييم ضرورة إزالة العمودية لتحسين الأداء

  • كيفية استخدام أدوات التنميط لقاعدة البيانات ، لتحديد الاختناقات.

نصائح أخرى

بضع نصيحة من DBA إنتاج (تجربتي هي MS SQL ، ولكن يجب أن تنطبق على منصات أخرى):

  • تصبح الصيانة أ هام مشكلة (النسخ الاحتياطية الليلية ، DBCCs ، وظائف الرئة/التحسين الأسبوعية ، إلخ). من السهل جدًا البدء في تجاوز نافذة صيانة ليلية أو عطلة نهاية الأسبوع. هذا ليس مجرد ملف تقنية قضية ، هو أيضا أ اعمال مشكلة ("ماذا تقصد ، سوف يستغرق الأمر 4 ساعات لاستعادة قاعدة البيانات من آخر نسخة احتياطية جيدة؟")

  • يحتاج المطورون إلى فهم أنهم قد يحتاجون إلى العمل بشكل مختلف. "تقصد أنني لا أستطيع فقط DELETE (500m rows) FROM MassiveTable ونتوقع أن تعمل؟

أنا متأكد من أنني سأفكر في المزيد ...

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

نوصي بشدة بقراءة هذا العرض التقديمي حول sql antepatternshttp://www.slideshare.net/billkarwin/sql-antipatterns-strike-back

سيساعد العرض التقديمي (نعم ، لقد ساعدني كثيرًا) في إيجاد حل للوضع الذي يبدو مسدودًا على ما يبدو.

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

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

بعض الأمثلة على تقنيات NOSQL هي Cassandra و CouchDB و Google Bigtable و MongoDB. يقسم بعض الناس أن هذه الأنظمة ستصبح حاسمة في إدارة "انفجار البيانات القادمة".

هناك جانبان لقاعدة بيانات أكثر أهمية من الحجم ، بقدر ما يذهب التصميم والإدارة.

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

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

معظم أسئلة قاعدة البيانات التي تطرحها حتى تتعلق بقواعد بيانات التطبيق الفردية.

فيما يلي بعض الأشياء التي يجب تعلمها ، بالإضافة إلى ما تم ذكره بالفعل.

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

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

(ملاحظة: غالبًا ما يسمى نموذج الرسم البياني بنموذج Hiearachical أو الشبكة).

يعد تصميم قاعدة بيانات علائقية حقيقية أكثر دقة ، وأكثر جديرة بالاهتمام ، أكثر من تصميم قاعدة بيانات تتظاهر بأنها على غرار العلاقة ولكنها على غرار الرسم البياني حقًا.

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