اگر در مصاحبههای استخدامی شرکت کرده باشید، به احتمال زیاد از شما پرسیده شده NoSQL چیست؟ آیا با آن به اندازه کافی آشنایی دارید؟ MongoDB چیست؟ و… در این مطلب به توضیحی در مورد پایگاههای داده NoSQL میپردازیم و با آنها آشنا میشویم. شاید به زودی شاخ این غول مصاحبههای استخدامی برنامه نویسی را با موفقیت بشکنیم! اگر با پایگاههای داده یا دیتابیسها آشنایی ندارید میتوانید قبل از خواندن این آموزش مقاله ما با عنوان “پایگاه داده چیست؟” را مطالعه کنید.
در برنامه نویسی سنتی، پایگاههای داده معمولا از نوع SQL هستند؛ که یک پایگاه داده رابطه ای یا Relational است. پایگاههای داده رابطه ای ساده هستند و کار کردن با آنها معمولا بی دردسر و راحت است. اما این نوع از پایگاههای داده یک مشکل بزرگ دارند. این مشکل زمانی خود را نشان داد که غولهای نرم افزاری دنیا مثل گوگل، آمازون و فیسبوک احتیاج به تحلیلِ دادههای با حجم و تعداد بالا یا همان Big Data پیدا کردند.
پایگاههای داده رابطه ای به دلیل نوع ساختار خود، برای تحلیل دادههای بزرگ غیر بهینه، ناکارا و همینطور کند بودند. البته در بعضی موارد هم استفاده از ساختار جدولی که در پایگاههای داده رابطه ای استفاده میشود تقریبا ناممکن بود. به همین دلیل ذخیره سازی حجم زیادی از دادههای بی ساختار (Non-structured Data) سرعت و کارایی این پایگاههای داده را به شدت کاهش میداد. تا اینکه پایگاههای داده NoSQL پا به عرصه گذاشتند. پس همانطور که حدس میزنید، هدف اصلی ایجاد پایگاههای داده NoSQL کار با دادههای بی ساختار و حجیم است.
گفتیم که مشکل پایگاههای داده مبتنی بر SQL از نوع ساختار آنها ناشی میشود. اما این ساختار چگونه است و چرا چنین مشکلاتی را ایجاد میکند؟ برای فهمیدن پاسخ این سوال احتیاج داریم کمی با ساختار پایگاههای داده SQL آشنا شویم.
اگر تجربه استفاده از SQL را داشته باشید میدانید که در استفاده از آن همیشه باید تابع قوانین باشید. یعنی باید مجموعه ای از اطلاعات یکسان با مشخصات یکسان را در جداول (Table) مربوط به خود جاگذاری نمایید. در واقع باید بگوییم که در SQL باید برای این سوال ها، به ازای هر داده پاسخ مشخصی داشته باشید:
تمام این مشخصات پایگاه داده شما در SQL با ساختاری به نام Schema (بخوانید اسکیما) ذخیره میشود. Schema یک ساختار ثابت است و مانند اسکلت یک ساختمان عمل میکند. همه چیز روی آن سوار و بر پایه آن تکمیل میشود. شاید تا الان فهمیده باشید که مشکل اصلی این نوع از پایگاه داده در ذخیره سازی دادههای بی ساختار کجاست! در ذخیره سازی این گونه داده ها، خصوصیات هر داده همواره ثابت نیست و این باعث ناکارایی و بعضا غیر قابل استفاده شدن SQL برای آنها میشود.
پایگاههای داده (Not Only SQL) NoSQL برعکس نوع SQL از ساختارهای Schema غیر ثابت یا Dynamic Schema استفاده میکنند. این باعث میشود که برنامه نویسان احتیاجی به تشکیل ساختارهای سخت گیرانه مشخص، پیش از ایجاد پایگاههای داده را نداشته باشند. این پایگاههای داده میتوانند انواع مختلفی داشته باشند و برعکس SQL برای ذخیره سازی دادهها از XML یا JSON استفاده میکنند. در ادامه انواع مختلفی از پایگاههای داده NoSQL را به شما معرفی میکنیم:
پایگاههای داده NoSQL مزیتهای بسیار زیادی دارند که آنها را برای سیستمهای بزرگ و توزیع شده تبدیل به بهترین گزینه میکند. به طور کلی میتوان این مزیتها را به این شکل خلاصه کرد:
دیدیم که پایگاههای داده رابطه ای و مبتنی بر SQL گرچه از مزیت ساختار یافتگی و قانونمندی برخوردارند، اما برای سیستمهای بی ساختار یا تحلیل دادههای بزرگ مناسب نیستند. این به آن معنی است که مزیت آنها در بسیاری از سیستمهای بزرگ مثل موتورهای جستجو، تبدیل به بزرگترین نقطه ضعف میشود. برای حل این مشکل، پایگاههای داده NoSQL مثل MongoDB، پابه عرصه گذاشتند. پایگاههای داده NoSQL به راحتی در سیستمهای توزیع شده مورد استفاده قرار میگیرند، و باعث بهبود عملکرد آنها میشوند. آیا شما تا به حال از پایگاههای داده رابطه ای استفاده کرده اید؟ نظر شما در مورد استفاده از این نوع پایگاههای داده چیست؟