معشر المبرمجين أيهما تتخذ مذهبا مسلكا ، الحساب على الطائر أم تخزين الحسابات في جداول


التعليقات

الامر نسبي

اذا كانت القيمة عليها طلب كثير, وحسابها مكلف على ال cpu, وتحديث قيمتها قليل, فأقوم بتخزينها (مثال: المعدل الكلي للطالب الجامعي). غير ذلك اقوم بحسابها -على الطائر-

ماذا تقصد بـحساب على الطائر؟

أظنُّه يقصد الحساب الذهني !

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

انا اقصد كيف يقصد هو برمجيا ؟

لا أعلم فسؤاله غير واضح كفاية .. :\

القصد من هذا السؤال جمع خبرات المبرمجين في مجال قواعد البيانات

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

ولكي أوضح للسادة المشاهدين سافترض ان لدينا جدولا به الأعمدة التالية (معرف، اسم السلعة ) وجدولا لعمليات البيع (معرف ، اسم السلعة ، كمية )

الآن إذا سلكنا المذهب الأول وهو الحساب على الطائر وأردنا معرفة كمية السلعة في المستودع سيكون الطلب هكذا

select QuInit-sum(QuVendu)

أما على طريقة تخزين الحسابات في قاعدة البيانات فسوف نجعل update لكمية السلع كلما أجرينا عملية بيع

انا في الغالب اقوم بها "على الطائر" لأنها تكون دائما دقيقة ( اعتقد ! )

و لكن في مثالك حيث يتم ذلك في كثير من المرات و يستهلك الكثير من المعالجة اقوم بتخزينها في قاعدة البيانات ( يعني هذه الاستثناء )

و لكن نادر ما ابرمج و ببالي كمية تكلفة cpu و ما الى ذلك ، انا دائما احاول كتابة كود نضيف و جميل ،

و اذا ما دعت الحاجة الى السرعة او توفير وقت cpu اقوم بالتفكير مرتين في كتابة الكود و أحيانا احسب ال BigO في الخوارزمية ( و لكن هذا يحدث نادرا )

في الغالب احسبها على الطائر

فمثلا اذا كان عندي السعر والكمية لا اقوم بجلب النتيجة الاجماليه من قاعدة البيانات بل اقوم بحسابها برمجياً

لانه اذا ذادت الكمية مثلاً ساضطر الى ضرب (الكمية * السعر) وتغيير النتيجة الاجمالية في قاعدة البيانات مرة اخرى وهذه متعبه الى حد ما

دائماً النتائج المتغيرة احسبها على الطائر ولا اعتمد على قاعدة البيانات في هذه الحاله

-1

سعر وحدات التخزين أرخص بكثير من وحدات ال CPU


برمجة

المواضيع والنقاشات المتعلقة بالبرمجة بشكل عام او لغات البرمجة التي لايوجد لها مجتمعات فرعية.

24.6 ألف متابع