في بداية الحديث عن NoSQL سأستعرض تاريخ موجز تثقيفي لها لنفهم الغاية منها و نربط الأمور ببعضها. اولاً ظهرت في اخر التسعينات قاعدة بيانات Relational اسمها NoSQL سميت بذلك الإسم لانها لا تستخدم لغة SQL في الإستعلام و توقفت في 2010. ولا علاقة لها بـNoSQL التي سنتحدث عنها هنا (سلسلة)
اغلب يعرف قواعد البيانات من نوع SQL مثل MySQL و Oracle و يعرف انه مهما كان شكل البيانات التي نتعامل معها في الواقع فإنه يمكن تخزينها على شكل قيم مرتبة على شكل سجلات و حقول في جداول مرتبطة ببعضها البعض.
تخيل أنك تقوم بتطوير نظام فواتير , الفاتورة فيها معلومات عن الفاتورة نفسها كالرقم و التاريخ و محموعها و مقدار الخصم و معلومات عن العميل ربما اسمه و هاتفه ثم معلومات الأصناف و الكميات التي تم شرائها من كل صنف.
تخيل أنك تقوم بتطوير نظام فواتير , الفاتورة فيها معلومات عن الفاتورة نفسها كالرقم و التاريخ و محموعها و مقدار الخصم و معلومات عن العميل ربما اسمه و هاتفه ثم معلومات الأصناف و الكميات التي تم شرائها من كل صنف.
لاحظ الفرق بين العالمين , بين وحدة واحدة ( فاتورة ) و بين ( 4 جداول ) هذا الإختلاف يسمى Impedance Mismatch. اضطر المبرمج إلى نمذجة البيانات بطريقتين طريقة الكلاس و طريقة الجداول و قامت الشركات بعمل مكتبات او اطارات عمل للتغلب على هذه الإعاقة مثل JPA في جافا و EF في دوت نت.
هذه المكتبات كلفتنا الكثير على حساب جودة البرامج , فلم يعد الكثير يهتم بتصميم الكلاسات بما يطابق الحقيقة او البزنس و بدلاً من ذلك ذهب لتصميمها بما يتناسب جداول قواعد البيانات.
اول من سمى قواعد البيانات NoSQL بهذا الإسم هو Eric Evans @ericevans0 بدون قصد , فقد دعى لاجتماع عرضي عن
الnon-relational databases تحت هاشتاق #NoSQL و من ذلك الحين اصبح يطلق عليها NoSQL. لكن المهم جداً هنا هو هذا الشخص Eric Evans فهو نفسه صاحب كتاب Domain Driven Design !!!
الnon-relational databases تحت هاشتاق #NoSQL و من ذلك الحين اصبح يطلق عليها NoSQL. لكن المهم جداً هنا هو هذا الشخص Eric Evans فهو نفسه صاحب كتاب Domain Driven Design !!!
طريقة الDDD في البرمجة و التي ابتكرها ايفان تقوم على العودة للبزنس و نمذجة الكلاسات حسب البزنس لا حسب قواعد البيانات و احد اهم المفاهيم التي طرحها في هذه الطريقة هو الAggregate و التي تمثلها "الفاتورة" لدينا. اي بيانات مجتمعة نتعامل معها كوحدة واحدة بدل تفكيكها.
تعرفون انه بالإمكان في قاعدة بيانات NoSQL من نوع Document مثل MongoDB او CouchDB ان نحفظ بيانات فاتورة كاملة كماهي في Document واحد فقط بصيغة JSON . هذا بالضبط ماقصده إيفان في مفهوم الAggregate. و هذا حل كبير لمشكلة الImpedance Mismatch ايضاً.
الNoSQL أعطتنا حرية اكبر في تمثيل البيانات كما هي في واقع البزنس , فمثلاً العلاقات بين الأصدقاء او شجرة العائلة من الصعب تمثيلها في جداول و اصبح تمثيلها سهلاً في قواعد بيانات NoSQL من نوع Graph مثل Neo4j. هذا شيء جداً مهم و حل مشاكل كثيرة و لكن لكل شيء في الIT ضريبة.
في السلسلة القادمة سنحاول الغوص اعمق قليلاً في الNoSQL و كيف بُنيت و ماذا ايضاً اعطتنا وفي المقابل مالذي منعتنا منه و كيف ضغطت على شركات الRelation Database ليحسنوا من منتجاتهم قبل ان يفقدوا السوق.
Loading suggestions...