إن كنت من متابعي التقنيات الحديثة فبالتأكيد و قد قابلك مصطلح noSQl كثيراً و خاصة في العامين الماضين خاصة مع ظهور التقنيات الحديثة و اطارات العمل Frameworks الخاصة بتقديم هذه التقنية في صورة أفضل. لكن دائماً ما يأتي السؤال الأهم في بداية أي طريق “ما و لماذا noSQl ؟” .. و هو ما نحاول الاجابة عنه في السطور التالية
ما noSQl ؟
- ربما يكون تبسيط المصطلح بوابة الاجابة لهذا السؤال .. فكلمة not only SQl تعد اجابة سهلة للمصطلح, فالتقنية لا تحاول نفي SQL التقليدي و لكنها تخبرك أن لديها المزيد.
- حتى عام 1970 كان نظام تخزين البيانات في ملفات بسيطة Flat File System هو المسيطر حتى ظهرت مشكلة التحكم في البيانات المخزنة و التعامل معها بأسلوب ثابت, و هنا جاء نظام SQL كبديل يعمد الى تخزين البيانات القابلة للتنظيم Structured Data في صورة أشبه بالجداول و التعامل معها عبر استعلامات Quries
- و حتى أعوام سابقة كان نظام SQl نظام جدير بالتعامل معه حتى ظهرت مشكلة جديدة و هي حجم البيانات المخزنة و الذي بات يهد مستقبل الكثير من المشاريع خاصة مع تزايد عمليات التخزين للبيانات بشكل متضاعف يومياً, و من هنا ظهرت تقنية noSQL
- يعتمد نظام noSQl على تقديم ثلاث عوامل في قواعد البيانات بشكل افضل (قابلية التوسع Scalability) (اداء أفضل High performance) (تواجد أكبر High availability)
ما الفرق بين SQL و noSQL ؟
- حين نتحدث عن SQL نتحدث عن بيانات ذات علاقة ببعضها البعض Relational Data كما نراه جلياً في مفهوم الجداول Tables
- لكننا حين نتحدث عن noSQl نتحدث عن نظام لا يعتمد على وجود علاقة بين البيانات المخزنة
- في الـ SQL تكون البيانات القابلة للتنظيم Structured data كما النصوص هي المستهدف الاكبر في التخزين
- في الـ noSQL كلا من البيانات القابلة للتنظيم Structured data و الغير قابلة للتنظيم Non structured data كما ملفات الصوت و الفيديو و الصور مستهدفين في التخزين بصورة متساوية
- يقدم لك SQL عادة تحكم أكبر في البيانات و الاستعلامات Queries و لكن بأداء أقل مع البيانات الكبيرة
- يقدم لك noSQL تحكم أقل في البيانات و الاستعلامات Queries و لكن بأداء أعلى مع البيانات الكبيرة
- SQl يعتمد على الجداول Tables
- noSQl يعتمد على المجموعات Collections
ما انواع noSQl ؟
- Key value store و من أمثلته (memcached | coherence | Redis)
- Tabular ومن أمثلته (BigTable | Hbase | Accumulo)
- Document Oriented و من أمثلته (MongoDB | CouchDB | Cloudant)
ما الذي تفتقده noSQL ؟
- لا توجد علاقات joins بين الجداول .. كما كنا نتعامل معها في الـ SQl من ربط صف في جدول بيانات صف آخر من جدول آخر
- لا يمكنك تنفيذ أوامر Transactions معقدة كما في الـ SQL .. و لذا فهي غير محبذة في المشاريع التي سيعتمد جلب البيانات فيها على مجموعة كبيرة من الشروط في الاستعلام Query الواحد.
- هذه المشاكل عامة يتم التغلب عليها في مرحلة التطبيق نفسه Application level .. حيت تجلب البيانات بشكل أبسط في الطلب, ثم عن طريق التطبيق يتم اعادة ترشيح البيانات لاستخراج المطلوب منها بالضبط. عملية معقدة, أو ليس كذلك !!
ماذا يمكننا ان نحصل مع noSQL ؟
- لغة SQl بسيطة
- أداء عالى خصوصاً مع البيانات الكبيرة
متى نستخدم noSQl ؟
- بالتأكيد كما أوردنا قبل ذلك .. حين يكون استرجاع البيانات الضخمة هو الهدف الرئيسي خاصة مع وجود امكانيات خوادم بسيطة.
- العلاقات بين البيانات المخزنة ليس بالمهم نسبياً.
- التزايد المطرد في بيانات معينة كما في تدوينات تويتر Twitter posts و بيانات الخوادم Server logs.
- البيانات غير منظمة أو قابلة لإعادة التنظيم من وقت لآخر.
- تطبيقك يتحتم فيه عامل السرعة, لذا نجد noSQL متواجد في تطبيقات الموبايل و الألعاب و منصات التدوين السريع.
- عدم وجود منطق Logic كبير في استخراج البيانات, او انه يمكنك ان تتعامل مع هذا المنطق عن طريق التطبيق نفسه بعد جلب البيانات.
متى لا نستخدم noSQl ؟
- حين يكون لزاماً علينا استخدام Transactions معقدة كما في تطبيقات محركات البحث و الذكاء الاصطناعي عموماً.
- حين تكون هناك علاقات مهمة بين البيانات.
أين يتواجد noSQL الآن ؟
- ستجده حتماً في المشاريع الكبيرة على الويب كـ Twitter و Facebook و Google و Amazon و LinkedIn.
- لا يشترط أن يقوم المشروع بالكامل على noSQL, بل لربما وجدت تطبيق واحد ضمن عدة تطبيقات يستخدمها المشروع هي التي تعتمد عليه, و لكن اضافته عامة ما تكون قوية خاصة انها تزيل العبء من على الخوادم بشكل كبير.
- يعتبر النوعين الثاني و الثالث Tabular و Document Oriented الأكثر تواجداُ في مشاريع الويب, و تعتبر شركة Apache أكبر مساهم في هذا المجال.
خاتمة
تعلم مهارات التعامل مع تقنية noSQL يعتبر الآن من أدوات المطور المحترف, و لكنه بالتأكيد لن يغنيك عن تعلم SQL التقليدية. و الأهم من كل ذلك أن تتعلم متى تستخدم أي من الأسلوبين. ننصحك بالبداية مع MongoDB أو CouchDB نظراً لسهولة التعلم و توافر الدعم لهم على الويب بشكل كبير.
Buy Azithromycin Doxycycline http://prednisone-pills1.com/