يتم الإعتماد على قواعد البيانات من أجل تخزين المعلومات و حفظها، و منذ بداية عصر الكمبيوتر تم إبتكار طرق مختلفة في تخزين المعلومات و تسجيلها بداية من حفظها على شكل ملفات نصية، الى حفظها و تنظيمها على شكل جداول. و تفرع من هذه التقنيات العديد من المنصات التي توفر لك خدمات تخزين قواعد البيانات بهيكلة معينة. بشكل عامل تنقسم منصات تخزين البيانات الى شطرين : الـ RDBMS و هي نظام تخزين البيانات العلائقي الذي يعتمد على الجداول و الربط بين الجداول، ثم الـ NoSQL الذي ينفرد بخاصيته في تخزين البيانات على شكل شجري مع تخزين كل مفتاح قيمته (Key - Value). لدينا لك مقال يشرح اهم الفروقات بين الـ RDBMS و الـ NoSQL يمكنك قرائته من هنا.
بعيدا عن كل هذا، ففقط الـ RDBMS يتكون من عشرات المنصات التي تساعدك في تجهيز قاعدة بياناتك الخاصة، و قد يحتار المطور في إختيار المنصة الأمثل و كيف تتميز هذه المنصة عن باقي المنصات، لذا قررنا ان نوفر لك هذا الدليل الذي يشرح لك الإيجابيات و السلبيات لكل منصة و خواصها.
الـ MySQL
يعتبر الـ MySQL من أشهر المنصات لإدارة قواعد البيانات حاليا و الأكثر إستخداما أيضا، و هو مشروع مفتوح المصدر و متاح للجميع، يتم إستخدامه في الغالب في تخصيص قواعد البيانات العلائقية على الويب ( لكن يمكن تخصيصه للإستجابة لقواعد البيانات مع برامج سطح المكتب و أيضا تطبيقات الموبايل ).
أهم ميزاته :
أهم ميزاته :
- أهم ميزة في الـ MySQL هو دعمه الكبير للعديد من اللغات البرمجية مثل : Php, Python, Rails, C# .. و هذا يجعل إمكانية إستخدام الـ MySQL كبيرة لكونه مدعوم من طرف عدد ضخم من لغات البرمجة.
- يدعم الـ MySQL مجموعة كبيرة جدا من أنماط تسجيل البيانات، لا نتحدث هنا فقط عن قواعد البيانات العلائقية، بل أيضا بيانات من نوع CSV مثلا، او وحدة التخزين الكبيرة Blackhole مما يعطيه اليد العليا لتخزين و تسجيل قواعد البيانات بإحترافية.
- يدعم الـ MySQL أيضا إستيراد و تصدير قواعد البيانات من مختلف الفئات، فبأخذ مثلا دعمه لنظام تخزين CSV يمكن مثلا إستيراد معلومات CSV و تحويلها لقواعد بيانات جداول و علاقات كذلك، و يمكن بدورها تصديرها و إرسالها لمستخدمين آخرين، و هذا يتيح لنا تغيير إستضافة الموقع او البرمجية دون فقدان المعلومات.
- مدعوم من طرف عدد كبير من الإستضافات و منصات الـ cPanel مثل PhpMyAdmin المشهورة.
للـ MySQL كذلك بعض السلبيات، أبرزها :
- أن شركة Oracle لازالت خلف المشروع، للأسف رغم إدعاء الشركة ان MySQL نظام مفتوح المصدر إلا ان الكثيرين لا يجرؤون على التعامل معها بهذا المبدأ ( خصوصا الشركات المطورة بعد حادثة الجافا مع جوجل )، كما أن الشركة تتأخر كثيراً في توفير تحديثات أمنية للمنصة، مما يجعلك في معظم الأحيان معرض لمشاكل في قواعد البيانات.
- بالرغم من دعمها لنظام البيانات العلائقية او RDBMS، لازالت حقا ضعيفة حين يتعلق الأمر بالمستوى المتقدم فيه، أبسط مثال على ذلك هو دعم الـ Foreign Key في نظامها الذي توجب تحديده بالكود و غير موجود يدويا.
- معظم الشركات التقنية الكبيرة بدأت تنفر من الـ MySQL، السبب بشكل مباشر هو Oracle أيضا التي بدأت تنهش في أي شركة تراها متخمة بالأموال.
بالرغم من ذلك، تبقى الـ MySQL واحدة من أشهر الأنظمة إستخداما، و ذات سهولة في التنصيب و التركيب، و كمستخدم بسيط قد تكون أفضل خيار لك، لكن كشركة او في مشروع كبير يفضل تجنبها للأسف.
الـ MongoDB
الـ MongoDB و هو نظام إدارة قواعد بيانات NoSQL الذي يختلف كليا عن الـ RDBMS ( يمكنك معرفة الفرق بين الـ NoSQL و الـ RDBMS من هنا ) و يعتبر واحدا من أفضل الأنظمة الحديثة في إدارة قواعد البيانات بشكل سهل و سلس.
يعتبر الـ MongoDB نظام document-oriented database يعتمد فيه بشكل كبير على نظام التشجير الشبيه بالـ JSON ، بحيث يملك كل جدول (Parent) مجموعة من الفروع (Nodes / Child)، و لكل فرع مفتاح و قيمة (Key = Value).
الجميل في منصة الـ MongoDB او بشكل عام نظام NoSQL أنه يمكن تسجيل أي نوع من البيانات كيفما كان على عكس الـ RDBMS الذي توجب تحديد نوع البيانات المدخلة قبل إدخالها.
لأن الـ MongoDB نظام إدارة قواعد بيانات NoSQL سنتحدث عن ميزات و سلبيات الـ NoSQL، و نبدأ بميزاتها :
تدعم الـ MariaDB في الأساس نظام قواعد بيانات علائقي RDBMS ، لكن في التحديثات الأخيرة تم دمج الـ RDBMS مع خصائص الـ NoSQL كذلك.
ما يتبث لك قوة نظام قواعد البيانات MariaDB حقا هو مستخدميها المحنكين، فشركات مثل Google، Wikepedia, Tumblr و حتى Nasa تعتمد بشكل كبير في الكثير من برمجياتها على الـ MariaDB.
لهذه الأخيرة العديد من الميزات، نذكر أبرزها :
يعتبر الـ MongoDB نظام document-oriented database يعتمد فيه بشكل كبير على نظام التشجير الشبيه بالـ JSON ، بحيث يملك كل جدول (Parent) مجموعة من الفروع (Nodes / Child)، و لكل فرع مفتاح و قيمة (Key = Value).
الجميل في منصة الـ MongoDB او بشكل عام نظام NoSQL أنه يمكن تسجيل أي نوع من البيانات كيفما كان على عكس الـ RDBMS الذي توجب تحديد نوع البيانات المدخلة قبل إدخالها.
لأن الـ MongoDB نظام إدارة قواعد بيانات NoSQL سنتحدث عن ميزات و سلبيات الـ NoSQL، و نبدأ بميزاتها :
- مرنة و تستطيع حفظ أي نوع من البيانات كما سلف الذكر سواء صورة، نص، أرقام، باسوورد، فيديو ، ملف و أي شيئ كان، يكفي فقط تحديد الـ Key و إعطائه أي نوع من الـ Value.
- ذات آداء عالي مقارنة مع الـ RDBMS، في نظام إدارة قواعد بيانات علائقية، في مرحلة محددة سيتوجب عليك الإعتماد على الـ Index و الـ Primary Keys من أجل تصنيف البيانات و جلبها بسرعة كون ان قواعد البيانات ستمتلأ و ستصبح عمليات الإرسال و الإستقبال بطيئة، يمكننا ان نخبرك أن هذا الأمر غير موجود في نظام NoSQL.
- قابل للتعديل و التجدد، في لحظة معينة قد تدرك أنك تحتاج جدولا جديداً ربما، او تحتاج الى إضافة شيئ جديد لقاعدة البيانات، في الـ RDBMS ستجد أن الأمر صعب التحقيق، بينما في NoSQL الأمر سهل جدا.
لهذا النظام كذلك بعض السلبيات، أبرزها :
- الملفات (Documents) تكون نوعا ما ضخمة بسبب البيانات الكبيرة، إذ نجد أن كل Document يتضمن فقط بعض الجداول و البيانات قد يكون حجمه كبيراً نوعا ما، مما قد يجبرك على إختيار إستضافات ضخمة للتعامل معها.
- لا يدعم نظام الـ Intersection و التقاطعات، ببساطة في الـ RDBMS يمكنك دمج أزيد من جداول في إستعلام واحد و تسمى بالـ Joints، في نظام الـ NoSQL لا يمكنك فعل ذلك.
- التعامل مع الإستعلامات الضخمة في الـ NoSQL يستهلك الكثير من موارد الحاسوب خصوصا الـ RAM.
بشكل عام، الـ NoSQL هو النظام الآن الأكثر إستخداما و الأكثر نمواً أيضا للكثير من الأسباب أبرزها المرونة و القابلية للتطوير.
- الـ PostgreSQL
نظام PostgreSQL هو نظام مفتوح المصدر أيضا، يتيح لك إدارة قواعد بيانات عبر لغة الإستعلام SQL، يدعم الـ RDBMS بشكل كبير، أما بالنسبة لدعمه للـ NoSQL كما الحال بالنسبة لـ MongoDB فالأمر لازال غير متاحا في المنصة، لكن بعض التحديثات الأخيرة على هذا النظام أتاح إمكانية صناعة و قراءة المعلومات على شاكلة JSON لذا تقنيا يمكننا ان نقول أنه بدأ يدعم جزئيا الـ NoSQL.
يختلف الـ PostgreSQL قليلا فقط عن الـ MySQL من حيث الآداء و بعض خواص (Functionalities) الغير موجودة في MySQL، واجهته ليست معقدة على الإطلاق و مدعم من طرف جل أنظمة التشغيل و يمكنك البدئ في إستخدامه بنقرة زر.
لهذا النظام العديد من المزايا، نذكر أهمها :
- الواجهة البسيطة التي تتيح إستخداما مريحا للنظام، فعلى عكس الـ MySQL مثلا يبدو معقدا قليلا ربما.
- يدعم تقنيات الـ SQL المتعمقة و نتحدث هنا بالضبط عن الـ Transaction SQL، الذي تتدخل فيه تقنيات متعمقة في الـ SQL مثل Procedures و Commit Transaction و Rollback Transaction و غيرها.
- يمكن إضافة أي تعديلات بسهولة على قواعد البيانات، فمثلا في الـ MySQL من الصعب إضافة Column جديد دون التأثير على باقي القواعد، بينما في الـ PostgreSQL يمكن ذلك و يمكن ان يجعل قاعدة البيانات تتأقلم مع الأمر جيدا.
- أوبن سورس و مفتوح المصدر، و ذو حماية و تشفير عالي، و يتم تحديثه بإستمرار.
لكن، يوجد سلبيات أخرى يجب أحذها بعين الإعتبار حين تقوم بإستخدام نظام PostgreSQL أبرزها :
- بشكل عام السلبية الوحيدة التي قد تصادفها في الـ PostgreSQL هو الآداء او Performance، بحيث يتطلب بعض الموارد في الحاسوب الجيدة من أجل القيام بالعمليات الكبيرة، فهو يعتمد بشكل كبير على تأسيس إستعلامات تستهلك موارد أكبر و إن كانت بسيطة.
يوجد الكثير من الشركات حول العالم التي تعتمد على الـ PostgreSQL مثل شبكة Netflix التي تدير جزءا من خدماتها عبر PostgreSQL.
الـ MariaDB
الـ MariaDB هي واحدة من أكبر خوادم قواعد البيانات في العالم، و تأتي بمستوى مختلف تماما عن الـ MySQL و الـ PostgreSQL من حيث الآداء و التميز، و تدعم مجموعة ضخمة من الأنظمة و الأجهزة كذلك و مستخدمة على نطاق واسع، هي نظام شبه مفتوح المصدر مع نص تجاري مصرح به.تدعم الـ MariaDB في الأساس نظام قواعد بيانات علائقي RDBMS ، لكن في التحديثات الأخيرة تم دمج الـ RDBMS مع خصائص الـ NoSQL كذلك.
ما يتبث لك قوة نظام قواعد البيانات MariaDB حقا هو مستخدميها المحنكين، فشركات مثل Google، Wikepedia, Tumblr و حتى Nasa تعتمد بشكل كبير في الكثير من برمجياتها على الـ MariaDB.
لهذه الأخيرة العديد من الميزات، نذكر أبرزها :
- بشكل عام تتفوق الـ MariaDB على MySQL و شبيهاتها من حيث الآداء، إذ هندستها الداخلية قادرة على تنفيذ إستعلامات و تخزين بيانات بشكل أفضل و أسرع.
- ذات محركات تخزين مختلفة (Storage Engine)، في السابق ذكرنا ان MySQL تدعم مثل التخزين عبر الـ CSV و InnoDB و غيرها، لـ MariaDB محركات أكبر و أكثر.
- أخطائها قليلة، فأنظمة أخرى قد تظهر لك أخطاء و تعطل نظامك بالكامل بسبب شيئ بسيط، لكن في الـ MariaDB تتجاوز الأمر بل و تقوم بتصحيحه أيضا.
من أبرز سلبيات الـ MariaDB نجد :
- أنها غير ملائمة للإستخدام الشخصي، الشركات الكبرى هي التي تفضل إستخدام MariaDB بحيث تملك ملايين المعلومات و الجداول و البيانات، و تحتاج الى نظام ذو آداء عالي من أجل التعامل معها، أما إن كنت شخصا واحدا لديك قاعدة بيانات بسيطة فلن تجد أي فرق في الآداء او العمل، و يفضل إستخدام الـ MySQL في هذه الحالة.
بالطبع تبقى الـ MariaDB واحدة من أقوى نظم قواعد البيانات التي يمكنك تجربتها أيضا.
الـ SQL Server
هو نظام إدارة قواعد بيانات تابع لشركة Microsoft و المستخدم تقريبا في مجموعة من نُظُمها كذلك و تدعمه مايكروسوفت بشتى النواحي، هو نظام ليس مجاني و ليس مفتوح المصدر ( إنها مايكروسوفت يا صديقي ماذا تنتظر ) لكنه واحد من أبرز و أفضل أنظمة إدارة قواعد البيانات التي تستحق الثناء.
من بين أبرز ميزات الـ SQL Server نجد :
- الحماية، صحيح أن مايكروسوفت تجبرك دائما على الدفع و دائما ما تجعل برمجياتها مغلقة المصدر، لكن هذا يعود بإيجابية كبيرة على المستخدمين و الشركات التي تنوي إستخدامها، فهي لا تقلق بشأن الحماية مطلقاً.
- الدعم الكبير للعديد من اللغات البرمجية، إذ يوجد إعتقاد سائد ان الـ SQL Server لا يتعامل إلا مع لغات مايكروسوفت مثل: سي شارب، VB.net و غيرها، لكن في الحقيقة يدعم الـ SQL Server الكثير من اللغات البرمجية و ربط بينها مثل Php, Python, Java و غيرها.
- ذو واجهة سهلة الإستخدام، خصوصا حين يتعلق الأمر بالتوجه الجرافيكي إذ يستعرض عليك كل الجداول الموجودة و العلاقات بينها و إجراء إستعلامات بشكل مباشر.
- يدعم الـ Transact SQL الذي سبق لنا و شرحه، و هي ميزة جيدة و إحترافية تضفي لمسة الإحترافية على نظام إدارة قواعد البيانات.
بالطبع لا بد من وجود سلبيات محددة، أبرزها :
- أنه ليس نظام مفتوح المصدر او مجاني، و هذا يعني أنه سيتوجب عليك شرائه من أجل العمل به سواء كنت فرداً او شركة.
- يوجد مستوى آخر معقد بشكل كبير للـ SQL Server يعتد على الـ BI او Business Intelligent و بالرغم من أنها تبدو إيجابية كبيرة للمنصة، لكنها كذلك فقط للشركات، بالنسبة للأفراد قد يجدون صعوبة كبيرة في التعامل معها.
- ذو حجم كبير نسبيا، لكن لحسن الحظ أطلقت مايكروسوفت نسخ مخففة من هذه المنصة.
- لا يدعم نظام NoSQL لإدارة قواعد البيانات.
يبقى الـ SQL Server من أفضل الأنظمة لإدارة قواعد البيانات بحق، إذ يوفر كل شيئ تحتاجه للبدئ، إلا ان مشكلة الدفع و عدم المجانية تبقى حائل بين الفرد و إستخدامه.
الـ Oracle DB
يعتبر واحداً من أكثر الأنظمة إستخداما بالنسبة للشركات الكبرى و الضخمة، في نظري نظام Oracle DB لم يأتي للإستخدام الفردي او المشاريع الصغرى و حتى المتوسطة، بل جيد و مناسب فقط للمشاريع الكبرى و الضخمة، يتم إستخدام Oracle DB في مجموعة من الهيئات و الأطراف مثل البنوك مثلا التي تعتمد على نظام Oracle DB بشكل كبير.
هو ليس بنظام مفتوح المصدر، و ذو نظام Multi-model و Mixed DB بحيث تستطيع دمج أزيد من قاعدة بيانات كبيرة او ضخمة دفعة واحدة، كدراسة حالة بسيطة مثلا، لنفترض ان بنكاً له آلاف المستخدمين بكل بياناتهم و معطياتهم يستخدمون نظام Oracle DB، ثم بعدها بنك مركزي يضم كل المعلومات الخاصة بكل البنوك في المنطقة، هنا ستحتاج الى دمج كل قواعد البيانات دفعة واحدة ، و هي تقنية يمكن فعلها فقط في Oracle DB.
من بين الإيجابيات الخاصة بـ Oracle DB نجد :
هو ليس بنظام مفتوح المصدر، و ذو نظام Multi-model و Mixed DB بحيث تستطيع دمج أزيد من قاعدة بيانات كبيرة او ضخمة دفعة واحدة، كدراسة حالة بسيطة مثلا، لنفترض ان بنكاً له آلاف المستخدمين بكل بياناتهم و معطياتهم يستخدمون نظام Oracle DB، ثم بعدها بنك مركزي يضم كل المعلومات الخاصة بكل البنوك في المنطقة، هنا ستحتاج الى دمج كل قواعد البيانات دفعة واحدة ، و هي تقنية يمكن فعلها فقط في Oracle DB.
من بين الإيجابيات الخاصة بـ Oracle DB نجد :
- ضخم و شاسع و يمكن إستخدامه بأمان بالنسبة للشركات الكبرى و العملاقة.
- ذو قابلية للتطور بشكل كبير، بحيث يمكن التعديل على قواعد البيانات و التلاعب بها حسب المطلوب
- يمكن دمج أزيد من قاعدة بيانات و التحكم بها كاملة.
لكن لهذا النظام بعض السلبيات كذلك، أبرزها :
- أنه ليس ملائما للأفراد، رغم ان البعض قد يستخدمه لأغراضه الشخصية لكنه في الحقيقة ليس مناسبا لذلك و يمكنك إيجاد بديل له.
- ذو خصائص مدفوعة، لكن لطالما مخصصاً للشركات فلن تحتاجها في الوقت الراهن.
بيد ذلك، يبقى نظام Oracle DB واسع الحيلة و من الصعب التعامل معه ضمن فئة صغيرة من الناس.
أنظمة أخرى بديلة مع شرحها المختصر
بالطبع أنظمة إدارة قواعد البيانات أعلاه تعتبر حجر الزاوية حين يتعلق الأمر بصناعة و تخصيص قواعد البيانات و التعامل معها، لكن يوجد الكثير و الكثير من الأنظمة الأخرى منها المعروف و المستخدم بكثرة و منها ذو الإستخدام المتوسط او الشحيح، لربما أبرزها :
- الـ SQLite : هو نظام إدارة قواعد بيانات داخلية، حين نتحدث عن الـ SQLite لا نتحدث عن إنشاء قاعدة بيانات في خادم و إدارتها، و إنما في جهاز المستخدم نفسه.
- الـ ArangoDB : هو نظام إدارة قواعد بيانات NoSQL مثل MongoDB، خصائصه لا بأس بها و مفيد للإستخدام الخفيف، لكن إن كنت تبحث حقا عن الإحترافية فتوجه نحو MongoDB.
- الـ MS Access : نظام Access لإدارة قواعد البيانات الشهيرة التابع لمايكروسوفت، جيد للبرمجيات الصغيرة و الضعيفة، غير ملائم للمشاريع المتوسطة او الكبرى.
- الـ OrientDB : هو نظام مفتوح لإدارة قواعد البيانات من نوع NoSQL مثل Arango و Mongo.
- الـ Cassandra DB : هو نظام إدارة قواعد بيانات NoSQL أيضا مفتوح المصدر من تطوير و تهييئ Apache، ملائم للتعامل مع قواعد البيانات الضخمة و الكبيرة و مستخدم بشكل كبير في وسط الشركات أيضا.
- الـ Firebase DB : هو نظام تخزين و إدارة قواعد بيانات بشكل حي Real Time تابع لخدمة Firebase التابعة بدورها لجوجل، يعتمد أيضا على الـ NoSQL.
كل الشكر ليك <br />وجزاك الله خيرا