النتائج 1 إلى 5 من 5

الموضوع: تقنية Denormalization في قواعد البيانات

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Apr 2002
    المشاركات
    2,046

    Thumbs up تقنية Denormalization في قواعد البيانات



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

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



    الأولى وهي تعتبر الطريقة الأبطأ والأكثر استهلاكا للموارد وهي "Normalized Way"، وهي تقضي بايجاد عدد الصفوف في الجدول comments والتي تتبع المقال الذي نعرضه ، وهذه الطريقة كما ذكرنا تستهلك الكثير من موارد النظام خصوصا في حالة كان عدد المقالات ليس بقليل وفي حالة كان الزائر يحاول ترتيب المقالات تبعا لعدد التعليقات!



    أما الطريقة الثانية وهي تعتبر الأسرع والأقل استهلاكا لموارد النظام وهي "Denormalized Way"، وهي تقضي بانشاء حقل جديد في جدول المقالات ليتم فيه حفظ عدد التعليقات لكل مقال، مع انشاء MySQL trigger لتحديث حقل عدد التعليقات لكل مقال مع كل عملية اضافة او حذف لتعليق.


    أتمنى أن تحدث الفائدة المرجوة من الدرس
    والله ولي التوفيق

    المصدر: http://2coder.me/?p=1





    التعديل الأخير تم بواسطة محمود حسين ; 27-12-2012 الساعة 10:20 PM
    __________________
    مدونتي


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2010
    المشاركات
    412


    رائع أخي





    __________________
    إصبر على كيد الحسود فإن صبرك قاتله ...
    أرسل خريطة موقعك لمحركات البحث

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Oct 2012
    المشاركات
    146


    بارك الله فيك اخي

    الخطوة جميلة لمن لديه سكربت خاص او وراءه شركة برمجية، وهو الصحيح في العادة اذ ان المواقع الكبيرة عادة لا تفتقر للامكانات المادية.
    مثلا رأيت موضوع اشهر الصحف على الانترنت:
    http://www.swalif.net/softs/swalif12/softs313827/

    اكيد مواقع بهذا الحجم تحتاج لمثل هذه التعديلات

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

    اعتقد ان الخطوة الامثل في هذه الحالة هو الكاش، ربما لو كان عندك مواقع كثيرة الزيارات يمكن استخدام mongo db ككاش؟

    شاركونا افضل طرق الكاش






  4. #4
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


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

    وبالأخص السكربتات المستخدمة من المواقع الكبيرة كـ vBulletin وغيرها.

    طبعاً استخدام الكاش على مراحل متعددة مفيد أحياناً، لكن عليك اختيار الطرق الأسلم.

    Mongo DB هي قواعد بيانات من نوع آخر، ما علاقتها بالكاش بشكل مباشر؟ هي قاعدة بيانات Scalable (أي قابلة للتوسّع مهما كبر الموقع محافظة على سرعتها وسلاستها).

    بارك الله فيك اخي

    الخطوة جميلة لمن لديه سكربت خاص او وراءه شركة برمجية، وهو الصحيح في العادة اذ ان المواقع الكبيرة عادة لا تفتقر للامكانات المادية.
    مثلا رأيت موضوع اشهر الصحف على الانترنت:
    http://www.swalif.net/softs/swalif12/softs313827/

    اكيد مواقع بهذا الحجم تحتاج لمثل هذه التعديلات

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

    اعتقد ان الخطوة الامثل في هذه الحالة هو الكاش، ربما لو كان عندك مواقع كثيرة الزيارات يمكن استخدام mongo db ككاش؟

    شاركونا افضل طرق الكاش






    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Oct 2012
    المشاركات
    146


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

    وبالأخص السكربتات المستخدمة من المواقع الكبيرة كـ vBulletin وغيرها.

    طبعاً استخدام الكاش على مراحل متعددة مفيد أحياناً، لكن عليك اختيار الطرق الأسلم.

    Mongo DB هي قواعد بيانات من نوع آخر، ما علاقتها بالكاش بشكل مباشر؟ هي قاعدة بيانات Scalable (أي قابلة للتوسّع مهما كبر الموقع محافظة على سرعتها وسلاستها).
    اعرف ولكنها اسرع بكثير من mysql كونها تعمل من الذاكرة مباشرة، فيمكن استعمالها ككاش على غرار memcached
    كما انها ليست جدولية ، فبالتالي عندما يكون عندك استعلام معقد جدًا تقوم بحفظ نتيجته في المونغو فبالتالي تحصل على نتيجة الاستعلام بسرعة فائقة بدون تنفيذه مقابل ال mysql










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض