ما هو الـ NoSQL ؟ و ما الفرق بينه و بين الـ RDBMS؟

ما هو الـ NoSQL ؟ و ما الفرق بينه و بين الـ RDBMS؟

تعتمد العلاقة بين البيانات و الواجهات دائما على منصة او نظام لإدارة قواعد البيانات من أجل حفظ كل شيئ و توفيره للإستخدام عند و حسب الحاجة، يدرك المبرمجون هذا جيدا، ففي مرحلة ما في بناء اي مشروع برمجي ستحتاج الى  تخزين البيانات من أجل الإستخدام اللاحق، سواء بيانات المستخدم مثل الإسم و كلمة السر و الإيميل و غيرها، او بيانات اخرى حسب المشروع، و نستخدم في الغالب نظاما علائقيا متبعا و منظما . 
لكن من بين حيرة الـ RDBMS ( و الـ RDBMS هي إختصار عبارة Relational DataBase Management System و بالعربية نظام إدارة قواعد البيانات العلائقية ) ظهر لنا نظام جديد لإدارة قواعد البيانات يُسمى بالـ NoSQL، فما هو بالضبط هذا النمط ؟ و ما خصائصه ؟ و ما الفرق بينه و بين الـ RDBMS ؟ 

ما هو الـ NoSQL ؟ و ما الفرق بينه و بين الـ RDBMS ( نظام ادارة قواعد البيانات العلائقية )؟


لنفهم الـ NoSQL يجب فهم الـ RDBMS : 




ما هو الـ NoSQL ؟ و ما الفرق بينه و بين الـ RDBMS ( نظام ادارة قواعد البيانات العلائقية )؟


عندما بدأت في كتابة هذا المقال بدأت فقرات لشرح الـ NoSQL و غيره، الا اننا نستعين دائما بالـ RDBMS من أجل شرح الـ NoSQL بشكل أفضل، لذلك توجب اولا تعريف و شرح الـ RDBMS بشكل كافي : 
الـ RDBMS و كما اخبرناك سابقا هو نظام لإدارة قواعد البيانات بشكل علائقي، لكن ما الذي يعنيه هذا ؟ هذا يعني ان البيانات يتم تخزينها في قواعد البيانات على شكل جداول، بحث ان لكل جدول إسم معين تحت إسم قاعدة بيانات محددة، يمكن لقاعدة البيانات ان تضم عددا كبيرا من الجداول، يتكون الجدول من عناصر داخلية أيضا تسمى بالـ Columns أو الأعمدة، يتخصص العمود بالإسم و نوع المدخل الذي يقبله كقيمة Value، اي مثلا عمود الإسم يقبل Value من نوع Varchar(50) على سبيل المثال، اي نص لا يتجاوز عدد أحرفه 50 حرفا . 
يتم الربط بين الجداول في قواعد البيانات حسب الحاجة، إذ يوجد مجموعة من خواص الربط مثل (One to One , One to Many, Many to Many ...)، يتم الربط بين جدول و جدول اخر عبر مفتاح خارجي Foreign Key يتم إضافته في الجدول الثاني، يحتوي هذا الأخير قمة نفس الـ Primary Key الخاص بالجدول الأول، و بذلك يتم الربط بينهما، في حالة many-to-many على سبيل المثال يتم إنشاء جدول جديد يضم Primary Key الخاص بالجدولين دفعة واحدة و يكونان Primary Key ( أساسيات العلاقات يمكنك الإطلاع عليها أكثر ) . 
بإختصار مختصر شديد الإختصار، النظام العلائقي يتكون من جداول ذات اعمدة محددة لنوع القيمة و يتم الربط بينها عبر الـ Foreign Keys . 



إقرأ أيضا : كل ما تحتاج معرفته حول الBig Data و لغات البرمجة الخاصة بها !


- ما هو الـ NoSQL ؟ 





ما هو الـ NoSQL ؟ و ما الفرق بينه و بين الـ RDBMS ( نظام ادارة قواعد البيانات العلائقية )؟


الـ NoSQL  و هي إختصار لعبارة Not Only SQL، في نظاك RDBMS نعتمد على قاعدة بيانات ثم وسطها جداول و وسط الجداول اعمدة و كل جدول مربوط مع جدول اخر حسب الحاجة، تأتي الـ NoSQL لتقول لنا تبا لكل هذا، انت لست بحاجة الى كل هذا التنظيم، يمكن فعل الأمر بطريقة أخرى و هي طريقة Structured، بحيث يوجد العنصر الأصلي او الـ Root او الجذر في رأس الـ Structure، ثم أسفلها عناصر محددة، لكل عنصر Key خاص به او مفتاح من أجل تعريفه مثل id، و لكل Key قيمة خاصة به تسمى Value ، و تحمل الـ Value اي قيمة كيفما كانت بدون تحديد سابق لقيمتها كما في الـ RDBMS، لتصير النتيجة النهائية نتيجة على شكل شجرة مهيكلة ( كما في الصورة اعلاه ) و يمكن إستخراج تلك البيانات على شكل قيم Json إن صح التعبير . 
لا نحتاج في الـ NoSql إلى انشاء قاعدة بيانات ( بل نحتاج الى إنشاء Directory Root الذي يلعب دور قاعدة البيانات ) و لا نحتاج الى تحديد الجداول، و لا نحتاج الى تحديد قيم محددة لكل عنصر، و لا نحتاج الى تعديد نوع البيانات التي يمكن إدخالها في كل مفتاح، قد تعتقد للوهلة الأولى ان الأمر عشوائي، لكم يمكن تنظيمه و يمكن جلب البيانات التي تريد عن طريق جلب الـ Direcotry الأول ثم الـ Childs الخاصة به .



إقرأ أيضا : 8 خطوات لبناء تطبيق اندرويد ناجح إبتداءا من الفكرة الى تسويق التطبيق


أين و من يستخدم قواعد البيانات NoSQL ؟ 



ان مفهوم القواعد البيانات العلائقية غير مناسب إطلاقا حين يتم التعامل مع قواعد بيانات بشكل ضخم ( خصوصا في مجال الـ Big Data ) بحيث يتم تخزين في كل ثانية آلاف المعلومات الغير محددة و المحددة، فمثلا يتم تخزين صور و نصوص فقط في الوف البيانات المستخرجة في الثانية، بل احتمالية إستخراج اي نوع من البيانات كانت، ثم القيام بعملية الفلترة لاحقا، لذلك إرتأت العديد من الشركات ان النظام العلائقي غير مناسب لأسباب سنذكرها لك في الفقرة القادمة، فالنظام العلائقي محدود بالأساس في نوع البيانات المخزنة، لذلك وجب عليك إستخدام نظام جديد لتخزين البيانات و كان الـ NoSQL هو الحل . 
اليوم تستخدم كل الشركات الكبرى عالميا و خصوصا الرائدة في مجال البيانات الضخمة و الـ Big Data الـ NoSQL، من فيسبوك و تويتر و جوجل و مايكروسوفت و غيرها من الشركات، و لك أنت أيضا الحق كمستخدم عادي إستخدام الـ NoSQL متى إحتجتها كذلك، او في أي مشروع برمجي لك أيضا . 


ما هي اهم الفروقات و الإمتيازات بين كل من الـ NoSQL و الـ RDMBS ؟ 



ما هو الـ NoSQL ؟ و ما الفرق بينه و بين الـ RDBMS ( نظام ادارة قواعد البيانات العلائقية )؟


عليك ان تدرك أولا انه لكل من الـ RDBMS و الـ NoSQL إستخداماته، ولا يمكن الإستغناء عن واحد من أجل التضحية بالآخر، فكل واحد منهما يلعب دوره في ساحته الخاصة، لكن لنتحدث قليلا عن اهم الفروقات، لنبدأ اولا بالـ Scalability، نجد ان الـ NoSQL لها قدرة أكبر و أفضل على تخزين اي نمط من الملفات كيفما كانت سواء صور، نصوص، روابط، ارقام، حسابات، باسووردات ... في حين أن الـ RDBMS محصور في نوع بيانات مخصص لا يمكن تجاوزه، و توجب عليك كذلك تحديد نوع البيانات التي سيتم تخزينها، في حالة عدم توافق النوع مع القيم المدخلة، فسيحدث خطأ اثناء التسجيل بالطبع، على عكس الـ NoSQL إذ يمكن حفظ اي شيئ دون تحديد نوعه سابقا، لكن مع تحديد الـ Key للوصول إليه . 
من ناحية الإستخدام فهما متقاربين تقريبا، يمكن إستخدام الـ NoSQL و كذا الـ RDBMS في مجموعة من الخدمات مثل المواقع، التطبيقات، برامج سطح المكتب، في الشركات الكبرى و غيرها، لكن الـ NoSQL و قدراتها تسمح لنا بإستخدامها في مجالات أعمق مثل الـ Internet of Things و الـ Social Media للإعتماد على الـ Big Data و غيرها . 
تعتمد الـ RDBMS على الـ Queries او إستعلامات الـ SQL من أجل جلب البيانات او ارسالها او التحكم فيها كما تريد، في حين ان الـ NoSQL لا تعتمد إطلاقا على الـ SQL في جلب الإستعلامات او البيانات او إرسالها و إدارتها، إذ لكل نظام مخصص لكيفية جلب البيانات . 
و أخيرا المنصات التي تدعم النوعين، فمع أن الـ NoSQL قوية إلا انها لازالت غير مدعومة من العديد من منصات إدارة قواعد البيانات، على عكس الـ RDBMS المدعوم تقريبا من العديد من الـ Web Servers و منصات إدارة قواعد البيانات . 
أهم منصة تدعم الـ NoSQL حاليا هي الـ MongoDB، و ربما هو الأشهر أيضا، يوجد أيضا منصات اخرى مثل OrientDB و ClusterPoint و غيرها، لكن MongoDB هي الأشهر و الأكثر إستخداما في إدارة الـ NoSQL، إلى جانب أيضا منصة Firebase من جوجل التي تدعم إنشاء قواعد من نوع NoSQL و التعامل معها . 


أعتقد و في هذا المقال اننا قمنا بتوفير كل المعلومات اللازمة، و إن كان هناك أي إضافات عزيزي القارئ او إستفسارات او إقتراحات، فنسعد دائما بإستقبالها في التعليقات . 

شاركه على :