Sunday, December 20, 2015

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

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

طيب عشان نبقى عارفين النطاق اللى بنتكلم فية ، لازم نحدد الـ Database Engines  اللى هناخدها فى عين  الأعتبار ونقارن بينها،انا أخترت Microsoft SQL Server  وMySQL  وSQLite ودة مش بيقلل ابداَ من حاجات تانية اثبتت مكانتها  وليها مستخدميها والـ Community بتاعها زى Oracle و MongoDB و PostgreSQL،بس يمكن عشان الكاتب يكون صادق وهو بيحكى تجربتة مع المحركات التلاتة ، أو عشان ان احتماليه اعتمادك على Engine هتكون بنسبة اكتر على واحد من التلاتة دول.

فى الجدول التالى انا هسرد مقارنة بتوضح بعض نقاط التشابة والأختلاف تعالوا نشوف ..  


الخصائص
Microsoft SQL Server
MySQL  
SQLite  
مجتمع المطورين شايفة ازاى ؟
Microsoft’s RDBMS
Open source RDBMS
Open source in-process RDBMS
المطور أو صاحب الفكرة
Microsoft
Oracle
Dwayne Richard Hipp
الأصدار الأول
سنة 1989
سنة 1995
سنة 2000
الرخصة او الـLicense
تجارى
مفتوح المصدر
مفتوح المصدر
اللغة البرمجية اللى اتعمل بيها
سى بلس بلس
سى بلس بلس و سى
سى بس
يشتغل انهى نظام تشغيل ؟
Windows
FreeBSD
Linux
OS X
Solaris
Windows
يتشغل على اى نظام تشغيل ودة بسبب انه server less أو غير معتمد على انظمة التشغيل.
XML support ؟
يدعم
يدعم
لا يدعم
ممكن نشتغل عليه من خلال
OLE DB
Tabular Data Stream
ADO.NET
JDBC
ODBC
ADO.NET
JDBC
ODBC
ADO.NET
JDBC
ODBC
لغات البرمجة اللى تقدر تتكلم معاه
Dot Net
Java
PHP
Python
Ruby
Visual Basic
Ada
C
C Sharp
C pls pls
D
Eiffel
Erlang
Haskell
Java
Objective-C
OCaml
Perl
PHP
Python
Ruby
Scheme
Tcl
Actionscript
Ada
Basic
C
C Sharp
C pls pls
D
Delphi
Forth
Fortran
Haskell
Java
JavaScript
Lisp
Lua
MatLab
Objective-C
OCaml
Perl
PHP
PL/SQL
Python
R
Ruby
Scala
Scheme
Smalltalk
Tcl
طرق التقسيم أو Partitioning  methods
تقسيم افقى بمعنى ان الجداول يتم تقسيمها مابين files مختلفة، أو federation
تقسيم افقى بمعنى ان الجداول يتم تقسيمها مابين files مختلفة،MySQL Cluster أوMySQL Fabric
لا يوجد.
طرق النسخ Replication methods
موجودة بس دة بيعتمد على الversion
Master-master replication
Master-slave replication
غير مدعومة.








خلينا ندخل فى النقطة اللى بعد كدة وهى ايه العوامل اللى ممكن اختار على اساسها الـ Database Engine ؟

#1  Reliability أو الأعتمادية ..
ودة معناه القدرة على حماية البيانات بحيث ان كل العمليات الحرجة يمكن تنفيذها بقدر عالى من الأمان.

2# Adaptability أو الملائمة ..
وهى قدرة الـ RDBMs على التكيف مع التغيرات السريعة وذلك بدون فرض تغيرات فى الـ hardware  المستخدم وبدون الحاجة الى شراء وحدات أضافية.

3# Scalability أو القابلية للتوسع ..
يوصف الـ RDBMS القادر على التوسع بأنه قادر على دعم وتحمل أى زيادة فى عدد المستخدمين ، كمية البيانات ، أو العمليات بدون الحاجة الى اى تكاليف جديدة.

4# Predictability أو القدرة على التنبؤ
يجب على الـ RDBMS ان يكون قادر على توصيل predictable service levels.
5# Manageability أو القدرة على التحكم فية