تفاوت های فنی میان 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) عوض کنیم. این دو محدودیت عبارتند از:
مقیاس پذیری یا Scalability: کابر در سیستم SQL مجبور است داده های خود را فقط بصورت Rational در قالب کلاسیک و گفته شده در بالا ذخیره کند و این برای هر نوع خواسته ای از طرف کاربر قابل مقیاس بندی شدن نیست و در مواردی تجربتا دیده شده مجبور به ایجاد داده های بی مورد یا موارد مشابه از طرف برنامه نویس شده یا برای قالب بندی کردن و طراجی شمای پایگاه داده مورد نظر مدتها باید توسط کارشناسان طرحهایی پیاده سازی و اجرا گردد که این خود یک محدودیت بزرگ برای دنیای داده های بزرگ امروزیست که تصور کنید با این هزینه سرورهای پرسرعت را بتوانیم پشت سر بگذاریم و برای طراحی داده ها در دو سرور نیازمند طراحی های وقت گیر هم باشیم!
پیچیدگی یا Complexity: این پیچیدگی طراحی پایگاه داده های SQL بقدری می باشد که در برنامه نویسی فرد یا افراد جدای برنامه نویس را لازم دارد تا بر اساس داده های موجود بهترین نوع چیدمان جداول را طراحی نمایند که برای نیازهای مورد نظر قابل قبول باشد که توضیح این پیچیدگی در محدودیت قبلی و مقیاس بندی هم توضیح داده شده بود.

همچنین بخوانید:   رفع خطای دات نت (.NET) در ویندوز 8

 

حال 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 پیشرفت های مهمی خواهد کرد را دارا می باشد، خوشحال می شوم اگر در جایی اشتباه بیان شده یا غلطی وجود دارد در قسمت دیدگاه ها بیان کنید یا قسمتی از متن را شما کامل کنید تا در کنار هم به دانش کامپیوتری فارسی زبانان کمکی کرده باشیم.

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



این مطلب را با دوستان خود به اشتراک بگذارید
(برای ذخیره در قالب PDF روی دکمه Print در زیر کلیک نمایید)
Tweet about this on TwitterShare on Google+Email this to someonePrint this page

همچنین شاید مطالب زیر مورد پسندتان باشد...

12 comments

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

    موفق باشید.

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

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

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

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

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

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

افزودن یک دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *