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

هل هناك طريقة لتقليل تكلفة الوصول لقاعدة بيانات موجودة على سيرفر ؟؟

بدأه MKSoft في 3 ديسمبر 2008 · 8 رد · 710 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

سؤالي هو التالي :

هل يوجد طريقة معينة لتقليل تكلفة الوصول و استرجاع بيانات موجودة في قاعدة بيانات على جهاز سيرفر ؟؟

على سبيل المثال : أثناء اتصال كل كلاينت مع السيرفر , يتم وضع نسخة من قاعدة بيانات الموجودة على السيرفر في Buffer أو اي مكان تخزيني اخر و لكن داخل جهاز الكلاينت , وذلك لتقليل تكلفة الوصول و الاسترجاع , و التخلص من المشاكل الكثيرة مثل pottele neck (عنق الزجاجة) .

أرجو ان يكون سؤالي واضح .

#2

نعم يمكن أخي محمد ، وهكذا يصبح نظام موزع Distributed System . وهناك الكثير من الأمور عليك بمراعاتها حينها ، مثلا هل تقوم بنسخ جميع قاعده البيانات الموجوده للسيرفر لكل كلاينت يتصل ؟ أم هل ستقوم بنسخ جزئيه معينه من القاعده ؟ في حال كان كذلك على أي أساس تقوم بعمليه "تقطيع" القاعده وتوزيعها للكلاينت ؟ هل العميل المختص مثلا بالتعامل مع أمور التخزين ستوزع له الجزء المسؤول عن التخزين والعميل المختص بالحسابات سنتسخ له جزئيه الحسابات ؟ ماذا لو أحتاج العميل الأول لجزئيه غير موجوده ؟ ماذا عن حفظ العميل للبيانات هل ستجري التغييرات مباشره في السيرفر أم يتم الأنتظار وقت معين ؟ في حال نسخت القاعده كلها (وهو حل غير جيد خصوصا لو القاعده كبيره جدا) أي تغيير سيجريه العميل يجب أن يتغير في جميع العملاء وفي السيرفر أيضا وبالتالى حل غير مجدي أبدا ويفصل نسخ قطع معينه من القاعده لكل عميل ، وهكذا ستدخل في دوامه أخرى كما ذكرت فوق ،، والمشاكل وراك وراك فلا تقلق من هذه الناحيه :) .

يفضل قبل أن تبدأ بالبرمجه أن تتطلع على الDistributed System & Database لكي تأخذ فكره عن الموضوع ، وحتى لو كانت أفكار نظريه فسوف تفيد لاحقا ..

بالتوفيق :) .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3

جزاك الله خيرا يا وجدي على هذا الرد ..

ممكن تعطيني مثال مبسط عن كيفية تطبيق الفكرة السابقة , وجزاك الله خيرا .

#4

تطلع على الموضوع من ناحية من أفضل لك

ما نوعية البيانات التي تحتاج تقطيعها

وهكذا

هذا ما يسمى بأسلوب مقارنة الحلول

الفرضية الرئيسية فيه

كل شيء تستطيع تصميمه في البرمجة

وعلى هذا تتطلع على مشكلتك بالتفصيل

ثم تطلع على الحلول التي لديك

وتحاول إيجاد الحل الأمثل

وليس بالضرورة أن يكون حل تام perfect

على كل حال ضع فكرة المشروع وسنساعدك في التفكير

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5
اقتباس
على كل حال ضع فكرة المشروع وسنساعدك في التفكير

شكرا لردك يا عــــــــــــــلاء.

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

الان : مشكلتي هي كيف أقوم بتطبيق فكرة انشاء نسخة من قاعدة البيانات و ارسالها إلى Clients . ؟؟؟ !!!

تم تعديل هذه المشاركة بواسطة MKSoft في 3 ديسمبر 2008 في 20:15

#6

لم أقم بمشروع مشابه ودرست الموضوع بشكل نظري فقط للأسف ، وحاليا نسيت كل النظريات ما عدا أسم الموضوع :) .

تريد ارسال القاعده لجميع الكلاينت ، يمكنك أن تقوم في الكلاينت بانشاء قاعده بنفس الجداول ، ومن ثم تستعلم عن جميع البيانات في السيرفر وتقوم بارسالها للكلاينت ، بعدها أدخلها هناك في القاعده .. أو حل أخر قم بقرائه ملف القاعده بالكامل وضعه في مصفوفه بايت وأرسلها كObject عن طريق ObjectOutputStream (أي بنفس الطريقه التي كنا نرسل صوره أو ملف صوت أو فيديو )..

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

بالتوفيق .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#7

هذا حل سيء جداً يا محمد

لاحظ معي التالي

أول شيء سيموت شيء اسمه أمان في نظامك

ثاني شيء تخيل عملية الموازنة بين قواعد البيانات المختلفة

تخيل لو عندك ألف عميل

تخيل الضغط على السيرفر لو كان عليه ألف طلب

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

مثلاُ لديك أسماء في JList لا ترسل كل الأسماء مرة واحدة

وإنما أرسل 100 اسم وعندما تجد أن المستخدم مر عليها كلها أرسل مئة أخرى وهكذا

فكر في الأمرة بطريقة أخرى

على أي حال لو أصرر على موضوع نقل قاعدة البيانات للجميع

فأنصحك بأن تنقل أجزاء من القاعدة وليس القاعدة ككل

لأنك ستقضي حياتك في عملية تحديثها

طبعاً عوضاً عن الإهدار الحاصل في المساحة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#8

السلام عليكم ..

عند احتواء كل client نسخة من قاعدة البيانات الخاصة بالسيرفر ليقوم عليها بمعمليات معينة .. هنا نخصر الكثير من (قيود) قواعد البيانات

المتبعة باي لغة مثل oracel او mysql

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

تلاحظ مثلا بان عمليات update يوجد فيها Lodeing انتضار ريثما ينتهي user 1 من التعديل ليبدأ user 2 بالتعديل ايضا

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

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

بالنهاية العملية المكلفة في الاتصال بين server و client قد توفر عليك الكثير في اشياء اخرى قد لا تلفت لها نظرا ..

لكي تكون لديك قاعدة بيانات متزنة من حيث كل شي ..

بالتوفيق ..

الله معك..

#9

بارك الله فيكم جميعأ إخواني الكرام بلا استثناء : وجدي - علاء - شادي .

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

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

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

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

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

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