Monday, December 21, 2015

برمجة بالعربى - مش مهم أختارت مين، مهم اختارت ليه ؟ 2


المرة اللى فاتت اتكلمنا بصورة شاملة عن التلاتة Database engines ، دخلناهم فى مقارنة وشوفنا العوامل اللى ممكن اختار على اساسها الـ Database Engine .

بس لحد هنا مش كفاية ان احنا نعرف نختار صح ، خلينا نشوف حاجات تانية تقدر توضح لينا اهمية كل حد لوحدة ، يكسب امتى ويخسر امتى ، ولازم نبقى موافقين ان اجابة سؤال مين احسن ؟ بتقى دايماً على حسب.


الغرض من المقارنة فى المرة اللى فاتت مكنش الوصول لنتيجة نهائية بس كان مجرد عرض خصائص كل Database Engine بشكل أوضح،بس فى الحقيقة ماينفعش أقول الأكل اطعم بالليمون ولا الملح ؟! بس أقدر أقول بـ ليمون ولا خل احلى ؟

فلما احب اتكلم عن الـ SQLite ودة شبة ملح الطعام فى المثال بتاعى لا يقارن بالليمون (MySQL) أو الخل (MSSQL).

فعلاً SQLite حالة فريدة وحل عبقرى ! زمان فى بدايتنا (مش من زمان اوى يعنى) كنا تقريبا محتاجين نوصل ابليكشن بداتا بيس ، فى transactions هتحصل و sessions هتتفتح ، كنا بنختار By Luck، كان فى حل غريب شوية مابين الحلول اللى وصللنها وهى ان فى ناس قررت هتكتب على files بدلاً من RDMS،كان مفروض ساعتها مناقشة الحل بس طبعاَ اترفض و تم استنكارة ! بس كان ممكن يكون حل كويس ومش ممكن دة يتعرف من غير ما نحط business requirements فى خانة و الـ solution specifications فى خانة تانية ونشوف ايه ينفع وايه ماينفعش.

ليه بقول كدة لأن فى حقيقة بتقول :
!SQLite does not compete with client/server databases,SQLite competes with fopen

فعلاً دة كلام منطقى ، يعنى لو كنا اعتمادنا على الحل الغريب بتاع الـ files كان بعد شوية تقويم للحل هنوصل لـ SQLite كأختيار امثل لتنفيذ حل الـ files ، وعلى فكرة دة كان هيبقى ساعتها افضل حل فعلاَ.

خلينا نقرب العدسة على SQLite و نطلعة من المنافسة دى بكل شرف.

1# SQLite قاعدة بيانات معتمدة على الـ files بمعنى انها file-based database ودة معناه ان اى عمليات بتحصل فى نفس الوقت وبتكتب into file system مش عارفة حاجه عن بعض ، ودة هيعمل مشكلة فى التزامن،ودة بسبب ان عمليات كتير هتشتغل على الداتا بيس files بدون ما يكون فى تنسيق او استراتيجة عمل بينهم، على عكس database server environment

2# من النقطة اللى فاتت هنفهم ان database server environment زى MySQL مشكلة التزامن مش هتبقى موجودة،ودة هيخليها اقل سرعة من  file-based databases

طيب كدة ممكن تعرف يخسر امتى :
فى تزامن فى العمليات اللى بتحصل بغرض الكتابة = يخسر
لو بنتكلم على Client/Server Applications = يخسر
فلو كان ويب سايت محتاج حجم مهول من البيانات = يخسر
بس لو مكنش حاجه من اللى فوق دى صح يبقى هيكسب زى الحالات دى كدة
-جهاز محتاج داتا بيس محلية internal storage
-التزامن فى العمليات بسيط و حجم البيانات مش هيوصل لـ a terabyte of content
-فى حالات File archives apps
-الـ Embedded devices and the internet of things
-الـ websites اللى بيكون الـ traffic مش عالى،يعنى اقل من 100 الف hit فى اليوم.