تفاوت های فنی میان NoSQL و SQL بهمراه توضیحات ابتدایی

سالها پیش در مورد NoSQL از یکی از دوستان مطالبی را برای بار اول شنیدم و مختصری در مورد آن تحقیق داشتم ولی امروز متوجه این شدم که کسی در بین سایت های ایرانی دو سیستم SQL و NoSQL را مورد مقایسه قرار نداده و مقاله و مطلبی در این مورد موجود نیست! برای همین دست به کار شده و مقاله ای قابل فهم عام تهیه کردم تا هم کسانی که در اینترنت هستند در مورد NoSQL و SQL و تفاوت های بین این دو مطالبی یاد بگیرند و هم محققین نوپای کامپیوتری اگر روزی این سوال را در اینترنت گشتند این مطلب کمکی برای درک آنها از این دو مقوله داشته باشد. ابتدا مقدماتی برای دو سیستم بیان می کنیم.

 

SQL و کاربرد آن چیست؟

به زبان ساده تر باید گفت که SQL مخفف Structured Query Language می‌باشد؛ یعنی زبان پرس جوی ساخت یافته. در این زبان که از نوع Rational Database است داده ها همانند تعریف Rational در جدول‌هایی با ویژگی‌های مشخص ذخیره می شود، در بین آنها روابطی (Relation) برقرار می شود و ما می توانیم عملیاتی مانند انتخاب (Select) ، درج (Insert) ، به روز رسانی (Update) و حذف (Delete) به همراه سایر ابزارهای مورد نیاز برای مدیریت پایگاه داده‌ها را در کنار هم داشته باشیم. پس سیستمی برای ذخیره اطلاعات و پیوند بین آنها و عملیات بر روی آنها از مشخصات SQL تا به اینجای بحث می تواند ‌تعریفی ابتدایی برای آن باشد که برای مثال تمامی مطالب در این سایت در پایگاه‌داده‌ها و در جدول‌هایی مشخص به همراه مشخصات دقیق مانند نام نویسنده، تاریخ، متن، عنوان و … ذخیره شده و زمانی که شما صفحه را در مرورگر خودتان باز می‌کنید این اطلاعات از پایگاه داده های سرور سایت دریافت شده و برای شما نمایش داده می‌شود. پس وجود پایگاه داده‌های SQL مهم می باشد. در انتهای این پاراگراف باید عرض کنم انواع SQL را ما دارایم، مانند چند مورد که در ویندوز SQL Server، در گوشی های همراه هوشمند SQLite و در اینترنت MySQL را می‌توان به عنوان مثال بیان کرد که همگی پیرو قوانین اصلی Rational برای ذخیره و بازیابی اطلاعات می‌باشند و هر جدول دارای یک کلید اصلی برای مشخص شدن تفاوت میان سطرها می‌باشد.

 

محدودیت های SQL در چیست؟

بدلیل رشد علم و فناوری با سرعت بالا و قدیمی بودن SQL شاید در گذشته بهترین سیستم برای مدیریت اطلاعات به شمار می‌رفت ولی بدلیل دو محدودیت بزرگ مجبوریم این روزها آن را با سیستمی نوین (مانند NoSQL) عوض کنیم. این دو محدودیت عبارتند از:
مقیاس پذیری یا Scaleability: کاربر در سیستم SQL مجبور است داده های خود را فقط بصورت Rational در قالب کلاسیک و گفته شده در بالا ذخیره کند و این برای هر نوع خواسته ای از طرف کاربر قابل مقیاس بندی شدن نیست و در مواردی بر اساس تجربه دیده شده مجبور به ایجاد داده های بی مورد یا موارد مشابه از طرف برنامه نویس شده یا برای قالب بندی کردن و طراحی شمای پایگاه داده مورد نظر مدتها باید توسط کارشناسان طرحهایی پیاده سازی و اجرا گردد که این خود یک محدودیت بزرگ برای دنیای داده های بزرگ امروزیست که تصور کنید با این هزینه سرورهای پرسرعت را بتوانیم پشت سر بگذاریم و برای طراحی داده ها در دو سرور نیازمند طراحی های وقت گیر هم باشیم!
پیچیدگی یا Complexity: این پیچیدگی طراحی پایگاه داده های SQL بقدری می باشد که در برنامه نویسی فرد یا افراد جدای برنامه نویس را لازم دارد تا بر اساس داده های موجود بهترین نوع چیدمان جداول را طراحی نمایند که برای نیازهای مورد نظر قابل قبول باشد که توضیح این پیچیدگی در محدودیت قبلی و مقیاس بندی هم توضیح داده شده بود.

همچنین بخوانید:   لایک، Follow و Share رایگان در فیسبوک برای صفحه، پروفایل و موارد مشابه

 

حال NoSQL چیست؟

بدلیل محدودیت های کلاسیک SQL و مدرن شدن دنیای اینترنت و اطلاعات کاربران و مدیران بخش داده ها دست به ایده های جدید با تفکر “یک قالب مطابق با همه” یا “One size fits all” را زده‌اند که در آن قید و بندهای سیستم قبلی تا حد امکان موجود نباشد. برای توضیح بیشتر به این متن از ویکی‌پدیا توجه نمایید:

نواس‌کیوال مخفف Not Only SQL به معنای نه تنها اس‌کیوال نامی است فراگیر برای رده‌ی گسترده‌ای از سامانه‌ی مدیریت پایگاه داده‌هایی که با نوع سنتی پایگاه داده‌های رابطه‌ای تفاوت های آشکار دارند. روشن‌ترین این تفاوت‌ها استفاده نکردن از اس‌کیوال به عنوان زبان پرسش نخستین است. نمونه‌اش پایگاه داده‌های اکس‌ام‌ال و پایگاه داده‌های سند-گرا است. یکی از پیاده‌سازی‌های شناخته شده این نوع پایگاه داده ها کاوچ‌دی‌بی ساخت بنیاد نرم‌افزار آپاچی است.
شرکتهای بزرگ اینترنت، از جمله گوگل (BigTable)، آمازون (Dynamo )، لینکدین (Project Voldemort)، فیس بوک (Cassandra و HBase) سورس فورژ (MongoDB)، اوبونتو (CouchDB) طراحی و راه اندازی گروه پایگاه داده NoSQL را بر عهده دارند. بخش قابل توجهی از این پروژه ها متن باز و آزاد است.

در مدل NoSQL بنا به شیوه های مختلف دیگر لازم به طراحی و گرفتن وقت طولانی برای طراحی پایگاه‌داده‌ها لازم نیست! در برخی از سرویس‌های NoSQL الگوریتم‌های هوشمندی هم به کار رفته که دیگر نیازی به طراح پایگاه داده نیست و بر اساس ورودی‌های برنامه‌نویس و کاربر و تعیین نوع نیازمندی‌ها و پلتفرم و شرایط محیطی دیگر نوع ذخیره‌سازی و مدیریت داده‌ها پیاده‌سازی می شود.

 

مزایای استفاده از NoSQL به جای SQL چیست؟

اولین و مهم‌ترین مزایا عدم طراحی شمای (الگو) خاص برای داده‌هاست و در این سیستم داده های ورودی می‌تواند هر موقع تغییر نوع پیدا کرده و سیستم باید خودش را با آن مطابق کند. دومین مزیت قابلیت چند بخشی شدن خودکار و تشخیص هوشمند یکپارچگی بوده که در SQL طراح باید چند سرور بودن را در طراحی خود حتما لحاظ می‌کرد و بر طبق آن شمای پایگاه‌داده را پیاده‌سازی می‌کرد ولی در سیستم NoSQL چند سرور بودن بخاطر هوشمندی و بالا بودن سطح سیستم هیچ مانعی برای ادامه کار ندارد. سومین مزیت هم که در سیستم قبلی حرفی از آن زده نشده بود وجود Cache برای افزایش سرعت بازیابی اطلاعات می‌باشد که همانند پردازنده در مواجه شدن با منابع مشابه و یکسان که آنها را در Cache نگهداری می‌کرد در سیستم NoSQL هم داده‌های پراستفاده در Cache نگهداری می‌شوند. پس استفاده از NoSQL باعث افزایش سرعت در طراحی و اجرای پایگاه‌داده شده و همچنین محدودیت های قالب قدیمی را از میان برمی‌دارد که بیشتر مورد نیاز دنیای امروز و آینده اطلاعات و داده‌ها می‌باشد.

 

معایب NoSQL چیست؟

همانند هر سیستمی NoSQL هم معایبی دارد و شاه‌کلیدی برای رفع تمامی مشکلات پایگاه داده ای نمی‌باشد، یکی از مهمترین معایب نوظهور بودن و نبود الگوریتم کلی و خاص برای پیاده‌سازی و طراحی آن می‌باشد که باعث شده هر توسعه دهنده (Developer) با توجه به دانش خود و نیازهای پیش رو دست به ساخت شیوه‌ای با طرح NoSQL نماید که بدلیل تازگی آن دارای معایب متعددی هم خواهد بود. معایب دیگر NoSQL مناسب بودن برای داده‌های امروزی که بیشتر بصورت ابری (Cloud Data) نگهداری می‌شود است و برای داده‌های قدیمی آنچنان مانند SQL نمی تواند نظم و ترتیب داشته باشد.

در کل در این مقاله گفتیم که بخاطر به وجود آمدن NoSQL نباید کلا SQL را کنار گذاشت و باید تشخیص استفاده از هرکدام را بنا به نظر طراح پایگاه داده و برنامه نویسان که بر اساس نیازمندی های موجود تصمیم می گیرند؛ واگذار نماییم.

 

توجه اول) این مقاله بر اساس تجربیات و دانش شخصی نوشته شده است و حتما دارای اشکالاتی به خصوص در آینده که NoSQL پیشرفت های مهمی خواهد کرد را دارا می‌باشد، خوشحال می‌شوم اگر در جایی اشتباه بیان شده یا غلطی وجود دارد در قسمت دیدگاه ها بیان کنید یا قسمتی از متن را شما کامل کنید تا در کنار هم به دانش‌کامپیوتری فارسی زبانان کمکی کرده باشیم.

توجه دوم) استفاده از این مقاله تنها مجاز به نوشتن نام منبع و لینک به مطلب در “دانش کامپیوتری” مجاز می‌باشد و خلاف آن از انسانیت هم به دور می‌باشد.

نوشته‌های مرتبط

12 دیدگاه برای “تفاوت های فنی میان NoSQL و SQL بهمراه توضیحات ابتدایی”

  1. آریا

    با سلام
    مطالبتون جالب بود و با خوندش حس کردم شما NOSQL کار میکنید.;)
    دوست عزیز هر سیستمی در یک حیطه و موقعیت های مختلف کاربرد داره. در مورد زبان های روالی و مبتنی بر دیتابیس ، همونطور که شما فرمودید دو بخش اساسی به نام SQL که شامل زبان هایی مثل
    (,DB2 ,MySql,OracleDB,SQLServer,) می باشد که تقریبا همه از یک سبک و سینکسش شبیه به هم جهت ذخیره و بازیابی دیتا استفاده میکنن. از مهمترین مزیت های این دیتابیس ها ریلیشنال بودنشان هست که شما در مقاله خودتون اینو نفی کردید.ساختار ریلیشنال یا رابطه ای یک الگوریتم از ساختار و فرمولار ریاضیات مانند گزاره ها و مجموعه ها و ماتریس ها است و همانطور که میدانید ریاضیات یک علم محض و بدون خطا است. دیتابیس هایی که با SQL طراحی میشوند ساختار یکپارچه و دارای قانون می باشند که تا حال حاضر هیچ دیتابیسی به بزرگی و قدرت دیتابیس های SQL که چند خط بالا نام بردم نیست به همین منظور در سیستم های با کوئری های حجیم و زیاد مانند شبکه شتاب بانکی – شبکه اطلاعاتی ایران – کارت سوخت بنزین – همه بانک ها (ملی – کشاورزی – …) -سیستم های سازمان هوا فضا – حسابداری همکاران سیستم – ثبت احوال – همه دانشگاه های کشور و……. از سیستم دیتابیس های SQL جهت ذخیره سازی و بازیابی اطلاعات استفاده میکنند.
    از مزایای بزرگ دیگر SQL ارتباط ساده و بناگزاری شده بین تمامی زبان های برنامه نویسی است.
    از مزایای بعدی پشتیبانی بسیار قوی کل مجموعه توسط دو شرکت بسیار بزرگ ( مایکروسافت و اوراکل) هست. که در این مورد تا جایی که مطلعم NOSQL ها بخاطر متن باز بودن پشتیبانی قوی ندارند و داشته هم باشند به پای ابر شرکت های نامبرده نمیشن.
    چند سال پس از اینکه شی گرایی بین زبان های برنامه نویسی جایگاه خودشو پیدا کرد شرکت های برنامه نویس SQL گریز به فکر ساخت دیتابیسی غیر رابطه ای شی گرا شدند و تلاش زیادی هم روش شد ولی در نهایت با شکست روبرو شد و فراموش شدند!
    دیتابیس های ODB یا شی گرا از زیر مجموعه NOSQL بودن و قبل از استفاده منسوخ شدند. طبق تجربه در ایران بازار کار NOSQL فقط در دیوایس ها مورد استفاده قرار میگیره که اکثریت مربوط به موبایل خصوصا سیستم عامل اندروید هست درحالیکه دیتابیس پیشنهادی شرکت گوگل برای اندروید باز از مدل ریلیشنال به نام SQLLite است.
    نتیجه کلی:
    تا حال حاضر هیچ یک از دیتابیس های NOSQL نتوانستند جایگاه دیتابیس های رابطه ای رو پر کنند و کمیت نموداری قابل ملاحظه ای ارائه بدهند. *” فکر کنم هدف از توسه این دیتابیس ها براساس سیاسی شرکت ها برای کاربری خودشون طراحی میشه و جامعیت کاربردی نداره وگرنه تحت حمایت غول های نرم افزاری قرار میگرفت و دوم اینکه توسط کسانی توسعه داده میشه که همیشه دوس دارن جهت خلاف جریان آب شنا کنند”
    *نظر شخصی

    موفق باشید.

    1. سلام. ممنون از دیدگاه شما.

  2. علی

    سلام و درود به شما مهرداد عزیز
    ببخشید سوالی داشتم در رابطه با مقاله ای که نوشتین
    این مقاله “دقیقا” در ویکی پدیا هم وجود دارد، به طوریکه حتی غلط املایی های مشابه ای دارین
    شما کپی کردین از ویکی، یا اون کپی کرده از شما؟؟؟؟

    1. سلام. فکر می‌کنم تازه به جمع کاربران این سایت افزوده شدید که این سوال رو پرسیدید! چون اینجا کپی نداریم! همه رو خودم نوشتم و اگر جایی بود به تاریخ نگاه کنید و دست خط و نوع نوشته ها رو ببینید خیلی واضح هست که از اینجا کپی شده! در متن اگر غلط املایی بود بگید تا تصحیح بشه. ممنون.

      پ.ن: اون قسمت نقل و قول مستقیم از ویکی‌پدیا هست که نوشتم این مورد رو.

  3. Yazdan

    سلام . ممنون از مطالب مفید شما. موفق باشید

    1. سلام، خواهش می‌کنم

  4. مهتاب

    سلام و خسته نباشید خدمت شما.
    من همیشه مطالب سایتتون رو دنبال می کنم.واقعن ممنونم ک اینقدر بی دریغ اطلاعاتتون رو در اختیار ما میگذارین.
    من نیاز به یک برنامه بایگانی اطلاعات دارم، ترجیحن رایگان. که بتونم ازش خروجی دلخواه رو بگیرم. اطلاعاتم شامل نام و جنسیت و شماره تماس و شغل و اینگونه موارده. که مثلن میخام نرم افزار برای من شماره تماس کسانی ک مونث هستند رو بیاره و بتونم ازش خروجی vcf یا اکسل بگیرم.
    همچین نرم افزاری هست؟ به من گفته بودن برم سراغ sql اما روی سیستمم نصب نمیشه و حس می کنم خیلی پیچیده ست

    1. سلام
      دقیق متوجه سوالتون نشدم ولی همه نوع بانک اطلاعاتی جواب گوی موارد گفته شما هست

      1. مهتاب

        در واقع من دنبال یه نرم افزارم که اطلاعات مشتری هامو توش ثبت کنم. اما بخاطر پنل اس ام اس م نیاز دارم که از اطلاعاتم خروجی بگیرم. مثلن به نرم افزار بگم بین مخاطبام کسانی که جنسیت خانم دارند و دانشجو هستند رو پیدا کن و به من ترجیحن خروجی اکسل بده.

        1. از اکسز ماکروسافت می تونید به رایگان استفاده کنید البته در ایران
          غیر این باید برنامه نوشته بشه که رایگان نیست…

        2. مهتاب

          سپاس فراوان

پیام بگذارید