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

  • urorbit

راودتني فكرة وأود تطبيقها ونظرا لقلة خبرتي في قواعد البيانات مايسيكول وغيرها وددت معرفة مدى فعاليه ما أفكر به وهل يمكن أن يكون ذا فائدة حقيقيه للمطورين ؟

أعلم أن هناك قدرة معينه للطلبات في ماي سيكول وأظن أنها 50 استعلام كما أنها تستهلك الكثير من موارد السيرفر لذلك قامت شركات كبرى مثل جووجل وفيسبوك وتويتر بالإستغناء أو إضافة أدوات للحد من هذه العمليه

ما أود عمله هو قواعد بيانات بسيطه تستخدم لأمور مكرره مثل الإعدادات ومرات الإعجاب والتقييمات أي أنها ﻻ تحتاج إلى إستعلامات معقده وإنما إرسال المعرف الفريد وإستقبال القيمه أو القيم

فمثلا الجدول يكون كمجلد والحقول تكون عباره عن ملفات كل سطر يعبر عن سجل ويوجد ملف index يحتوي على المعرف الفريد لكل سطر

لو كتبنا

  select f1,f2 from t1 where id=5 

عندها سيذهب للمجلد t1 ويبحث عن المعرف الفريد 5 داخل الملف index ثم يقوم بفتح الملفات f1 , f2 وإرجاع قيمة السطر الخاص بالمعرف الفريد

السؤال هو : هل هذه الطريقة تعمل على التقليل من استهلاك موارد السيرفر وبسرعه أعلى من قواعد البيانات ؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

جرب ملفات csv حيث كل قاعدة بيانات مجلد،

كل جدول ملف csv ، في السطر الاول تكون الاعمدةوالسطور الاخرى تكون المعطيات ، مثال

id-username-password
1-Yassine-123456
2-Mohammed-pass123

اللغة المناسبة ستكون c++ للسرعة و الفعالية.

يمكنك البحث عن CSV parser في لغة c++

ابحث في Sourceforge عن : CSV PARSER C++

الفكرة هي عدم الإعتماد على نظام تفسير جاهز مثل csv فهو يعمل على فتح الملف ثم فرز المحتوى بناء على نمط معين , هنا أجد أن طريقة الملفات وكل ملف يحتوي على قيم كل قيمة بسطر تكون أسرع بكثير من الإعتماد على ملفات csv مارأيك ؟

لا .. ببساطه قوه محركات mysql تكمن في خوارزميات البحث sorting algorithms .. طريقتك حلوه لاكن فكر اذا تعاملت مع ملايين السجلات ( الملفات بفكرتك) سيتحتم عليك ترتيب الملفات وهذا يحتاج كتابه خوارزميات معقده واعتقد ستستهلك موارد اكثر .. حيث في كل مره تستدعي ملف سيتحتم عليك فتحه واغلاقه وفتحه واغلاقه ... الخ وعند وجود اكثر من عميل يتحتم عليك برمجه خوارزميه لكي تتجنب مايسمى بال race conditions و التزامن ومشاكل عديده يجب عليك ان تاخذها بعين الاعتبار :) .. اذا بحثت في جوجل ستجد ان الفيس بوك تستخدم نسخه معدله من نظام mysql هذه النسخه معدله من ناحيه الخوارزميات ...

... انصحك ان تستخدم mysql حيث ستفيدك مستقبلاً اذا اردت اضافه او تطوير تطبيقك ! ... او استخدم SQLlite

.. بالتوفيق لك اخي :)

كما قلت أخي الفكرة في إستخدام هذه الأداة هو للأمور البسيطه وموضع عدد السجلات وعدد المتصفحين والأمور التي يمكن أن تطرآ مستقبلا فكرت في استخدام نفس جمل الإستعلام sql أي أنك تكتب جمل سيكول عاديه جدا للوصول إلى ماتريد وهذا يجعل استخدام الأداة بدون أي خطورة بحيث أنك في أي وقت يمكنك تغيير قاعدة البيانات إلى مايسيكول أو سيكول ﻻيت ... عملية فتح وإغلاق الملفات تستخدمها قواعد البيانات أيضا لذلك أظن أن الأداة ستكون أسرع خصوصا في تطبيقات ﻻتحتاج إﻻ لحفظ الإعدادات وبيانات المستخدم ومعظم المطورين يستخدمون ملفات xml أو ini أو غيرها من الفورمات ولكن مشكلتها هي في حال زاد عدد الحقول التي يريدها المطور أو إحتاج لتسجيل عدد كبير نسبيا من السجلات مثل 100 سجل عندها سيحتاج إلى قواعد بيانات وبذلك يحتاج إلى تغيير في الشيفرة المصدريه أما مع هذه الأداه فالأمور ستختلف ... حاليا بدأت في إنشاءها وسبب ذلك هو عمل تنصيب لأي تطبيق دون الحاجه لقواعد بيانات ثم بعد ذلك يمكنك حفظ الإعدادات في هذه الأداة ومن ثم الربط مع مايسيكول .

يمكنك القاء نظرة على نظام HDF5 انا شخصيا افضله على SQL خاصة لدى التعامل مع البيانات الكبيرة فهو يعتمد على on-disk access ولا يستهلك الذاكرة.

اذا كنت تستعمل منصة تعتمد على بيثون مثل flask يمكنك استعمال h5py أو pytables

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

حاول الابتعاد عن ربط الجداول قدر المستطاع الا في الحالات المستعصيه

عمل indexes صحيحه وتوظيفها بشكل سليم لكل ماتحتاج وعدم الاكثار منها

استخدام 5 استعلامات في الصفحة بحد اقصى

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

فكرت في عدد إستخدام الإستعلامات وعدد الزوار .... تخيل أنك استخدمت جمله سيكول كالتالي :

select item_name,Item_price from category where cate_id=6

وهذا الإستعلام يرجع جميع المنتجات المندرجه تحت التصنيف 6 , هنا سيتم تنفيذ الإستعلام في كل مرة لكل مستخدم ولو كان عدد المستخدمين كبير هذا يعني إهدار لموارد السيرفر لذلك افكر في عمل نظام كاش بسيط أيضا بحيث يمكنك تفعيل الكاش لبعض الإستعلامات والكاش يقوم بحفظ النتائج في مجلد كاش في ملف منفصل لكل استعلام وعند وجود الكاش فقط يتم إرجاعه دون الوصول لملفات قاعدة البيانات الخاصه بنا , بهذا يمكن لنا أن نستغني عن شرط إستخدام خمس إستعلامات بحد أقصى

بالنسبه لتوظيف الindexes بشكل سليم ... هل لديك فكرة أو شرح ؟ لأنني لم أستطع فهمها , أعلم أن الإندكس هو أساس هذا العمل ولكن كيف ؟

لم أفكر في ربط الجداول كثيرا لأنني سأستخدم نفس جمل SQL وبما أن فيها ربط أظن أن الأمر مبكر للنظر في هذه المعضله , ربما أقوم بعمل إضافات بحيث يتم إضافة كل أمر بشكل منفصل ونظام تحديد الأخطاء في حال إستخدم أمر لم يتم برمجته فتظهر له رساله "هذا الإستعلام غير متوفر حاليا يمكنك مراجعه الصفحة التاليه لرؤية الأوامر المدعومه :) "

سيتم تنفيذ الإستعلام في كل مرة لكل مستخدم ولو كان عدد المستخدمين كبير هذا يعني إهدار لموارد السيرفر


لالايوجد اي اهدار للسيرفر لكن يوجد زيادة لموارد السيرفر مقابل $

اما ال indexes هي

primary key

unique key

index

يمكنك توظيف اكثر من index في الجدول ولكن يجب ان تدرس الجدول اولاً وماذا سيكون مستقبلاً ومالذي ستبحث عنه في الجدول اذا كان احد الاعمده سيتملى مستقبلا وهل الاندكس المضاف للعامود سيفي بالغرض ام لا في المراحل القادمه من المشروع

السلام عليكم تحية طيبة وبعد

ارغب اعمل سستم وقاعدة بيانات لمؤسستي حيث لدية عمال وموظفين سعودين