احب مشاركة المواضيع التقنية وإبداء الراي من قبل الخبراء والمبرمجين حتى نشعر بجمال حسوب IO
? mongodb or mysql and why
حسب رأيي ، ال mongodb سهلة التعلم ، تعتمد على هيكلة ال json التي تدعمها الجافاسكريبت بالكامل .
أما الmysql لا أعلم عنها الكثير ، فقط أعلم أنها مدعومة بشكل كبير ، و السبب php ، و أنها تعتمد هيكلة الجدول table, rows, columns .. و أظن أيضا أن تعلمها ليس بسهولة الmongodb .
كيف تعرف لماذا MySQl ولماذا MongoDB .. يجب أن يكون عندك بعض المعلومات عن قواعد البيانات
سأحاول أن أختصر ولا أكون مملا
قديما جدا كانت تستخدم الملفات File System لتسجيل البيانات وبالرغم من كونه يؤدى الغرض إلا انه به عيوب كثيرة
ظهر باحث اسمه Codd أقترح 12 قاعدة من خلال تطبيقها ظهر مصطلح قواعد البيانات العلائقية Relations DB خلاصتها أن تقسم البيانات فى جداول ويكون لكل عنصر مفتاح فريد ويرتبط مع الجداول الأخرى من خلاله عن طريق مفتاح فرعى
واعتمدوا لغة SQL وظهرت مجموعةكبيرة من قواعد البيانات تعتمد على القواعد ال12 منها MySQL, MSSQL srvr, Oracle ..
مع كبر حجم البايانات والحاجة إلا استعلامات سريعة ظهرت عيوب قواعد البيانات العلائقية
فظهر مصطلح NoSQL والتى تعنى Not only SQL تعتمد على Key=>value لحفظ البيانات واسترجاعا متجاهله كثير من قواعد Codd صار لها قواعدها لتحل بذلك مشكلة القواعد العلائقية مع البيانات الضخمة Big data
كل تكنولوجى مهما كانت لابد ان يكون لها مميزات وعيوب وقدرة معينة لا تتجاوزها
عليك معرفة المميزات والعيوب ومتى قدرتها الاستعابية حينها ستعرف متى تتقبل عيوبها ومتى ترفضها
فأنا لا أقول أن MySQL أو MongoDB واحدة افضل من الأخرى .. أقول واحدة أنسب لطبيعة مشروعك دون الأخرى
بغض النظر عن السهولة والصعوبة؛
على المبرمج أن يعرِف كلا التقنيتين.
وأن يركّز على التقنية المعتمد عليها؛ يعني SQL - NoSQL
وكلاهما تندرج تحته عدّة تطبيقات لنفس الفكرة ببرمجيات مختلفة.
الفرق الرئيسي: أن الـ SQL جداول + علاقات.
الـ NoSQL مفتاح => قيمة.
لا توجَد أنواع بيانات في الآخر (عمومًا). ولا يوجد هيكل معيّن تتبعه جميع القيَم المخزّنة؛ وهي أشبه بـالمصفوفات.
في الحقيقة: قد تحتاج لهذا وقد تحتاج لهذاك؛ إذا كانت العلاقات قليلة جدًا أو منعدمة بين البيانات؛ تستطيع بسهولة استعمال NoSQL
لكن لو كانت البيانات تعتمد على العلاقات، فاستعمال لـ NoSQL سيؤدي إلى تكرار كثيرٍ من البيانات + عدم الترابط، مما يعني أنّك قد تحتاج لبرمجة برمجيّة للربط.
شخصيًا استعملت SQL وثم NoSQL وعرفت الفرق، أنت كذلك، طبّق مشروعًا على هذا ومشروعًا على هذاك، وستعرِف بدقّة مالذي يفعله كلٌ منهما ومالذي سينفعك ويسهل عليك.
أمّا للمشاريع الكبيرة جدًا، فتحتاج للتفكير، والتخطيط بشكلٍ جيدٍ جدًا.
مثلًا: مسألة توزيع البيانات على عدّة سيرفرات؛ النسخ الاحتياطي، المزامنة بين عدّة سيرفرات... إلخ
كل هذه الأمور تحتّم عليك عملُ خطةٍ واضحة لما ستحتاج وما ستستعمل، لكن طبعًا: للمشاريع الكبيرة، المشاريع الصغيرة التي لن تتوسّع كثيرًا تستطيع ترقيع بعض الأمور البسيطة ومداراةِ بعضِ العيوب / النواقص.. لكن في المشاريع الكبيرة ستصل إلى بابٍ مغلق..
التعليقات