اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته

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

سؤالي : 

انا استخدم جمل sql (insert, update,delete,search) من داخل لغة البرمجة كـ code behind 

الكثير ينصح بعدم استخدام مثل هذه الطريقة للأسباب التالية :

1- التعامل مع قواعد البيانات من خلال شيفرات لغة البرمجة تعتبر طريقة قديمة ولكنها تؤدي الغرض

2- طريقة البرمجة بهذه الطريقة ضعيفة الأداء !

3- طريقة البرمجة بهذه الطريقة تسبب تعليقات في النظام (اذا كان عدد المستخدمين للنظام كثيرون) 

4- لا يمكن بناء تطبيقات كبيرة بهذه الطريقة لصعوبة التعديل على الكود

وغير ذلك

هل من توضيح حول هذه المسألة كوني معتمد في أغلب مشاريعي على هذه الطريقة والتي هي استخدام جمل sql بداخل الكود البرمجة بمعنى آخر (برمجة اجرائية)

وشكرا لكم

Recommended Posts

  • 0
نشر

أولا ماهي اللغة التي تستخدمها في برامجك ؟

ثانيا الأسباب الأربعة التي ذكرتها اعتقد أنه الأول والرابع فقط هو صحيح

و أما الثاني والثالث فلا اعتقد أن الطريقة التقليدية في أوامر قواعد البيانات تسببها

  • 0
نشر
بتاريخ 15 ساعات قال Hussam Barbour:

أولا ماهي اللغة التي تستخدمها في برامجك ؟

ثانيا الأسباب الأربعة التي ذكرتها اعتقد أنه الأول والرابع فقط هو صحيح

و أما الثاني والثالث فلا اعتقد أن الطريقة التقليدية في أوامر قواعد البيانات تسببها

asp net

c sharp

sql server

  • 0
نشر
بتاريخ On 11/9/2017 at 14:43 قال عبدالله الناصري:

السلام عليكم ورحمة الله وبركاته

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

سؤالي : 

انا استخدم جمل sql (insert, update,delete,search) من داخل لغة البرمجة كـ code behind 

الكثير ينصح بعدم استخدام مثل هذه الطريقة للأسباب التالية :

1- التعامل مع قواعد البيانات من خلال شيفرات لغة البرمجة تعتبر طريقة قديمة ولكنها تؤدي الغرض

2- طريقة البرمجة بهذه الطريقة ضعيفة الأداء !

3- طريقة البرمجة بهذه الطريقة تسبب تعليقات في النظام (اذا كان عدد المستخدمين للنظام كثيرون) 

4- لا يمكن بناء تطبيقات كبيرة بهذه الطريقة لصعوبة التعديل على الكود

وغير ذلك

هل من توضيح حول هذه المسألة كوني معتمد في أغلب مشاريعي على هذه الطريقة والتي هي استخدام جمل sql بداخل الكود البرمجة بمعنى آخر (برمجة اجرائية)

وشكرا لكم

في لغات البرمجة عموماً يٌفضل دائماً العزل بين أوامر قواعد البيانات و دوال البرنامج نفسه. 

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

مثال لتوضيح الفكرة:

برنامج يقوم بعمل أمر استعلام لجدول يحمل 4 أعمدة ويظهرها للمستخدم.  وبعد عدة أشهر تم إضافة 3 أعمدة جديدة للجدول ولابد ان تظهر في البرنامج. فستحتاج إلى إضافة الأعمدة الجديدة في البرنامج وعمل re-compile للبرنامج من جديد. 

وهذا الأمر سيتكرر في كل مره يتم التغيير في هيكلة الجدول المتصل بالبرنامج. 

قس على ذلك حجم قاعدة البيانات والبرنامج, فكلما كبر البرنامج او قاعدة البيانات كلما اصبح هنالك صعوبة بالتحكم فيها. فلو تم فرزها كلن على حده اصبح التحكم فيها اسهل وافضل. 

اضف إلى ذلك عند دمج لغات البرمجة أو تقنيات اخرى يتوجب على المبرمج أن يحاول جاهداً بتفادي التكرار فيها وفرز التقنيات المدمجة معه والاستفادة من خصائصها. فمثلاً لو كان هنالك دمج بين C# و SQL Server. من الافضل دائماً ان تستخدم الـ C# للأمور التي لايمكن عملها على الـ SQL Server. لتتمكن من الوصول إلى افضل أداء وتحكم ممكنين. 

مثال: 

لديك ملفات بصيغ مختلفه بها بيانات لا يمكن للـ SQL Server تحويلها إلى جداول. فقمت بإستخدام C# لقرائتها وتحويلها إلى جداول داخل البرنامج ثم بعد ذلك إضافتها الى جداول مخصصة قمت بإضافتها في قاعدة البيانات. من بعد إضافتها هنا ينتهي دور الـ C# ويأتي دور الـ SQL Server بالإستفادة من خصائصة مثل Stored Procedure, Trigger وغيرها لإكمال معالجة البيانات بحسب رغبتك .. 

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

على سبيل المثال اداة Execution Plan في الـ SQL Server تساعد على تسهيل رفع اداء ال Query بحيث يمكن للمبرمج معرفة أي جزء من الـ Query استهلاكه أعلى والتي يتوجب التعديل عليه للحصول على افضل اداء ممكن.

إذا حاولت عمل الـ Query في الـ C# لن تتمكن من معرفة اداء الـ Query التي قمت بعملها. وذلك لأن الـ C# سيكون متصل بالـ SQL Server وفقط سيقوم بإعطاء الـ Query وبقية المعالجة ستكون داخل الـ SQL Server والـ C# سيكون في وضع الإنتظار طيلة فترة المعالجة. حين انتهاء الـ SQL Server من الـ Query سيظهر النتائج وسيقرأها الـ C# وهنا يعود الأمر مرة اخرى الى الـ C# ليكمل تنفيذ بقية الكود. 

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...