أفضل ممارسات تصميم قواعد البيانات للتطبيقات عالية الأداء

نشرت: 2021-07-19

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

سننظر الآن في أفضل ممارسات تصميم قاعدة البيانات للتأكد من أن الوصول إلى البيانات ليس عقبة تؤثر سلبًا على أداء التطبيق.

ما هو الغرض من التصميم الجيد لقاعدة البيانات؟

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

تعد ERDs الأداة الأساسية لتصميم قاعدة البيانات. يمكن إنشاؤها وتصورها على ثلاثة مستويات من التصميم: المفاهيمية والمنطقية والمادية .

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

هناك العديد من الأدوات التي يمكنك استخدامها لتسهيل تصميم قواعد البيانات من ERDs. من بين أفضلها DbSchema و SqlDBM و Vertabelo .

DbSchema

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

فيديو يوتيوب

SqlDBM

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

فيرتابيلو

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

فيديو يوتيوب

أخيرًا ، التصميم المادي هو الذي يضيف إلى ERD جميع التفاصيل اللازمة لتحويلها إلى قاعدة بيانات قابلة للاستخدام في DBMS معين ، مثل MySQL أو MariaDB أو MS SQL Server أو أي شيء آخر. دعنا نلقي نظرة على أفضل الممارسات التي يجب وضعها في الاعتبار عند تصميم ERD بحيث تعمل قاعدة البيانات الناتجة في أفضل حالاتها.

حدد نوع قاعدة البيانات المطلوب تصميمها

عادة ما يتم تمييز نوعين أساسيين من قواعد البيانات: العلائقية والأبعاد .

تُستخدم قواعد البيانات العلائقية للتطبيقات التقليدية التي تنفذ المعاملات على البيانات - أي أنها تحصل على المعلومات من قاعدة البيانات وتعالجها وتخزن النتائج.

من ناحية أخرى ، تُستخدم قواعد البيانات الأبعاد لإنشاء مستودعات البيانات: مستودعات كبيرة للمعلومات لتحليل البيانات واستخراج البيانات للحصول على رؤى.

تصميم قاعدة بيانات علائقية
تصميم قاعدة بيانات الأبعاد

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

اعتماد اتفاقية التسمية

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

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

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

ابدأ بالتصميم المفاهيمي ، ثم التصميم المنطقي ، وأخيرًا التصميم المادي.

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

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

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

إنشاء وصيانة قاموس البيانات

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

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

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

الحفاظ على معايير متسقة للمفاتيح الأساسية

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

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

جدول بمفتاح أساسي طبيعي (يسار) مقابل جدول بمفتاح بديل (يمين)

استخدم أنواع البيانات الصحيحة لكل سمة.

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

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

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

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

استخدام جداول البحث

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

يوضح نموذج الاستعلام هذا الاستخدام الصحيح لجداول البحث في قاعدة بيانات جيدة التصميم:

 SELECT StreetName, StreetNumber, Cities.Name AS City, States.Name AS State FROM Addresses INNER JOIN Cities ON Cities.CityId = Addresses.CityId INNER JOIN States ON States.StateId = Addresses.StateId

في هذه الحالة ، نستخدم جداول البحث للمدن والولايات.

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

التطبيع أو إلغاء التسوية وفقًا لنوع قاعدة البيانات

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

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

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

تصميم النماذج الفيزيائية على أجزاء

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

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

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

حسن استخدام وجهات النظر والفهارس

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

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

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

عندما تعتقد أن العمل قد انتهى ، فقد حان الوقت لإعادة البناء.

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

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

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