عنق الزجاجة

bottleneckيعتبر الكثير من المبرمجين مفهوم عنق الزجاجة هي تلك المرحلة من البرنامج (برامج التعامل مع قواعد البيانات) التي يصاب بها البرنامج بالبطئ لبضع لحظات وقد يتوقف في حالات نادرة، ففي العادة يعتمد البرنامج في سرعة تنفيذه علي عاملين هما :

1. طريقة كتابة كود البرنامج (Source Code) أو (Software) وتعتمد علي خبرة المبرمج العملية في كتابة كود خالي من الأخطاء المنطقية وبإتباع لوغاريتمات سريعة وذكية.

2. العامل الأخر هو مكونات الجهاز (PC, Tablet, iPad, iPhone, iPod, Smart Mobile…) العتادية (Hardware) من حيث توفر كمية كافية من الذاكرة وسرعة معالجة تستطيع معالجة البرنامج بطريقة ترضي المستخدم النهائي.

بالإضافة إلي هذين العاملين (Hardware and Software) يوجد العامل المهم والذي لايمكن تجاهله في حالة ان البرنامج يقوم بالتعامل مع بيانات مخزنة مسبقا في قاعدة البيانات او يقوم بتخزينها.

نقل البيانات مابين واجهة المستخدم وملفات قواعد البيانات يستهلك زمناً ليس بالبسيط خلال فترة حياة البرنامج، وذلك لأن عملية التخزين أو القراءة تعتمد علي عمليات (القراءة / الكتابة) علي القرص الصلب للقيام بالتالي (عملية البحث عن ملف قاعدة البيانات – حجز الملف – فتح الملف – الكتابة عليه أو القراءة منه – قفل الملف) وسواء كنت تستخدم نظام MS Access أو حتي MS SQL Server Database يجب تطبيق هذه العمليات، مع ان أنظمة SQL تكون اكثر سرعة.

توجد بعض النصائح التي اكتسبتها بالخبرة العملية وأخري من نصائح المبرمجين الأخرين أحببت أن أشارككم بها لتسريع عمليات التعامل مع قواعد البيانات  وهي:

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

2. يجب قفل الاتصال بقاعدة البيانات مباشرة بعد تنفيذ العملية، وخصوصا إذا كنت تستخدم MS Access Database، ففي هذه الحالة نسيانك للاتصال مفتوحا قد يسبب مشاكل للعمليات التالية، أو للمستخدم التالي.

3. يفضل العمل بمعمارية البيانات الغير متصلة (Disconnected Architecture) لأنها أسرع بكثير لإعتمادها على ذاكرة الجهاز في العمل.

4. إذا كنت ترغب بإستعمال بعض البيانات الثابتة كثيرا يفضل جلبها وتخزينها في الذاكرة أو تخزينها في ملف XML والتعامل مع الملف  مباشرة.

5. التأكد من تطبيق أهم مبادئ تصميم قواعد البيانات وهي:

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

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

6. يفضل عدم تخزين الصور والملفات داخل قاعدة البيانات او الاقلال منها او تخزينها في قاعدة بيانات أخري ليست اساسية لتقليل حجم قاعدة البيانات الرئيسية، وبالتالي تسريع عمليات التعامل معها.

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

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

9. عند استخدام SQL Server كقاعدة بيانات يفضل وبشدة استخدام Stored Procedure لأنها تنفذ داخل برنامح ادارة قاعدة البيانات بطريقة اسرع من رفع الاستعلام من خلال كود البرنامج.

10. يفضل وضع ملف قاعدة البيانات في قسم (Partition) مختلف عن قسم نظام التشغيل، والقيام بعمليات الغاء تجزئة القرص (Defragment) كلما أمكن ذلك.

11. تطبيق عملية (Indexing) علي الجداول المخصصة لعرض البيانات أكثر من تخزينها (Lookup tables).

12. إستخدام الحد الادنى من حجم ونوع الحقل للتقليل من تزايد حجم قاعدة البيانات.

13. إستخدام (Relational Database) أفضل لأنه يمنع تزايد حجم قاعدة البيانات، مع مراعاة إستخدام قوانينها بدقة.

This entry was posted in Developer, Hardware, IT, My Life, My Work, Programming, Software, SQL2008 and tagged , . Bookmark the permalink.

التعليقات مغلقة