الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الاتصال بقاعدة البيانات مرة واحدة عامة، أم عند كل طلب؟

بدأه sscvbnm في 25 مايو 2010 · 10 رد · 794 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

في تطبيق asp.net جعلت الاتصال بقاعدة البيانات في مديول عام يتم الاتصال به مرة واحدة في حال كان غير متصل، ثم يبقى الاتصال بقاعدة البيانات مفتوحاً ويستخدم عند أي طلب sql من أي صفحة في المشروع..

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

الطريقة الثانية أن نتصل بقاعدة البيانات مباشرة قبل الطلب ثم نغلق الاتصال مباشرة بعد الطلب ورأيت أن كثيرين يوصون بهذه الطريقة لأن الsql يخزن الاتصال في البوول ثم عند طلبه من جديد يسترجعه منه وبالتالي لا يكلف وقتاً للاتصال، وعن هذا تتحدث العبارة: Open() late, Close() early يعني افتح التصال في أقرب نقطة أنت بحاجة إليه ثم أغلقه مباشرة..

It means that you should open connections as late as possible (just before querying the database is ideal), and close them as soon as you're done with them (ideally just after querying)

الآن عندي صفحة تطلب طلب الsql من أكثر من قاعدة بيانات بحيث أن المستخدم يطلب مثلاً اعرض سجلات من قاعدة بيانات كذا (الكل بنفس الصيغة ولكن البيانات فيها مختلفة)؛ فتقوم الصفحة بالاتصال بهذه القاعدة واستدعاء الطلب وإعادة النتيجة إلى المستخدم..

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

أنا لم أجرب هذه الطريقة، أريد توجيهكم ونصيحتكم حول هذا الأمر؟

جزاكم الله خيراً

علماً أنني أتصل ب SQL Server 2008..

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#2

دصيقي سبق وان رددت عليك فتح الاتصال وتنفيذ الاستعلام واغلاقه افضل بكثير من ترك الاتصال مفتوح

في ترك الاتصال المفتوح مخاطر منها عبء على الخط , امكانية اختراق على الشبكة , الضغط على السيرفر

لماذا لا تستخدم النمط المنفصل افضل لك اذا كنت تحب ابقاء الاتصال مفتوح

1

In bad state

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

يعني كم ستوفر ؟ الاجابة شيء لايذكر بالنسبة للاستعلام

في بيئة الويب لا يتم استخدام الوضع المتصل .

#4

جزاك الله خيراً

لا أستطيع استخدام الوضع المنفصل لأن حجم البيانات هائل..

فيكون برأيك أصوب أن أتصل على قدر الحاجة وأقطع الاتصال..

لو أحد يخبرنا عن تجربته في هذا الموضوع، جزاكم الله خيراً

السلام عليكم

أخ TareqVB أنا أخشى أن يكون الاتصال كل مرة بطيئاً كما هو أول مرة لكن قالوا أن هذه المشكلة غير موجودة ما دمت لم تمسح البوول..

أنا قصدت لا يمكنني استخدام الوضع المنفصل بأن أحمل البيانات على dataset

جزاكم الله خيراً

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#5

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

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

1
#6

ممتاز، جزاكم الله خيراً

استخدام Paging عرفته، لكن ماذا تقصد باستخدام الكاش؟

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#7

السلام عليكم

ارفقت لك ملف يشرح شرح وافي عن الكاش

صديقي طارق لديي تعليق صغير (احتماله للخطا او الصح ) الوضع المتصل مفيد جدا في مواقع التي تدعم حجوزات الفنادق والطيارات والبنوك اي المواقع التي يهمها الزمن .

الخبء في ASP.doc

In bad state

#8
اقتباس
الوضع المتصل مفيد جدا في مواقع التي تدعم حجوزات الفنادق والطيارات والبنوك اي المواقع التي يهمها الزمن .

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

#9

السلام عليكم كيفك اخي طارق

معك اخي طارق انا اريد ان استفيد :)

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

وما الفرق ان كان على الوب او على تطبيقات سطح المكتب

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

وخصوصا في عمليات المناقلات كمناقلات البنوك

مثلا

تحويل رصيد من حساب a الى رصيد حساب b

1-العملية تتم انقاص مبلغ a بقيمة المبلغ المحول

2-اضافة قيمة المبلغ المحول الى حساب b

السؤال ماذا لو اصبح خطا قبل عملية اضافة المبلغ وذلك في حالة تحويل من بنك الى بنك اخر

اي من قاعدة بيانات الى قاعدة بيانات اخرى

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

In bad state

#10

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

أيضاً سؤال آخر حول هذا الموضوع..

لو افترضنا دخول عدد كبير من الزوار للصفحة في نفس الوقت ولنقل 100,000 هل يكون الوضع المنفصل جيداً في هذه الحالة؟

أم ستحدث مشكلة من عملية اتصال وانفصال عدد كبير من الاتصالات لقاعدة البيانات؟!

أرجو التوضيح، وشكراً لكم.

تم تعديل هذه المشاركة بواسطة sscvbnm في 30 مايو 2010 في 14:37

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#11

بالتاكيد مالك غير الوضع المنفصل

يعني الوضع المتصل ما بيفيد في هذه الحالة نهائيا

In bad state

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…