ساختارهای سنتی پایگاههای اطلاعاتی بسیار عالی و کارآمد هستند اما اکنون به مرحله ای رسیدیم که اطلاعات جاری در اینترنت و دستگاههای مختلف را نمیتوان صرفا با تکیه بر پایگاهدادههای رابطه ای سامان داد.آیا واقعا به پایگاهداده NoSQL نیاز دارید.
شرکت Machina Research یکی از گروههایی است که در زمینهی کارآمدی پایگاهها داده در برابر تنوع و حجم اطلاعات جدید تحقیق میکند. تحقیقات این موسسه نشان داده است در حالی که ساختارهای سنتی (رابطهای) پایگاه داده نقشی حیاتی در پردازش و ذخیرهی اطلاعات طبقهبندی شده دارند اما در برابر حجم عظیم دادههایی که روزانه از طریق میلیاردها دستگاه هوشمند تولید میشوند کاملا عاجز و ناتوانند. پایگاهدادههای NoSQL به وجود آمدند تا ما را در مدیریت و ذخیرهی حجم خارج از تصور دادههایی که روزانه تولید میشوند کمک کنند.
اگر یک توسعهدهنده نرمافزار هستید، دیگر زمان آن فرا رسیده که NoSQL را نیز به لیست مهارتهای خود اضافه کنید و بدانید نیاز به استفادهی آن حتی ممکن است در اولین پروژهی آتی سراغتان بیاید.
اطلاعات غیر قابل پیشبینی شده اند
در ۳۰ سال اخیر تقریبا تمام دادههای شرکتها (به عنوان مثال لیست مشتریان و اطلاعات آنها) در حدی قابل پیشبینی بوده اند که میتوانستیم هر مورد را تفکیک کرده و در قالب سطر و ستون جای دهیم و با استفاده از امکانات سیستم پایگاهداده این اطلاعات را به یکدیگر مرتبط سازیم و مفهوم قابل درکی ارائه دهیم. اما اکنون اوضاع تغییر کرده است، اطلاعاتی که هر لحظه تولید میشود در ابتدا شناخته شده و قابل درک نیستند، سرعت حرکت رو به جلو به حدی است که به سازگاری و انعطاف پذیری حداکثری نیاز داریم چرا که هر گاه ممکن است سنسورها و دستگاههای تولید اطلاعاتی جدیدی وارد شوند.
یک مجموعه کاملا متفاوت زیر سقف یک نام
اگرچه همه آنها را با یک نام صدا میزنند (NoSQL) ولی تفاوتهای ساختارشان بیش از شباهتهایشان است، این نام را میتوان به هر پایگاهداده ای که از ساختارهای رابطهای متداول پایگاهدادههای SQL استفاده نمیکنند انتساب داد. برچسب NoSQL ساختار و مدل اطلاعاتی خاصی را اجبار نمیکند و به همین دلیل انعطافپذیری بسیار بالایی در این حوزه وجود دارد.
ذکر این نکته خالی از لطف نیست که پایگاههای NoSQL از مقیاس پذیری بسیار بالایی برخوردارند، حتی قویترین و سنگینترین پایگاهدادههای رابطهای در مقایسه با حجم دادهای که پایگاهدادههای NoSQL قادر به مدیریت هستند، ناچیز به حساب میآیند. پایگاهدادههای رابطهای جایگاه خود را حفظ خواهند کرد ولی NoSQL پرچمدار بخش عظیمی از اینترنت خواهد بود و مدیریت اطلاعات حجیم بدون آنها غیر ممکن است. در ادامه چند مورد از مشهورترین انواع پایگاهدادههای NoSQL آورده شده است.
پایگاهدادهی سند محور:
یک کلید با یک واحد اطلاعاتی پیچیده به نام سند مرتبط میشود، سندها میتوانند شامل اطلاعات متعددی از جمله زوج مرتب کلید – مقدار، زوج مرتب کلید – آرایه و یا حتی دربرگیرندهی سندی دیگر به عنوان فرزند باشند. MongoDB و CouchDB از جمله پایگاهدادههای سند محور هستند.
پایگاهدادهی گراف/درخت:
بخش بزرگی از اطلاعات در سیستمهای کامپیوتری شامل اطلاعات گراف هستند مانند اطلاعات مربوط به ارتباطات کاربران یک شبکهی اجتماعی. با استفاده از پایگاهدادههایی مانند Neo4J و Giraph میتوان این اطلاعات را ذخیره و مدیریت کرد.
پایگاهدادهی زوج مرتب:
سادهترین نوع پایگاهدادهی NoSQL است، در این نوع پایگاهداده هر واحد اطلاعاتی (مقدار) تحت یک نام (کلید) ذخیره خواهد شد. Redis از جمله پایگاهدادههای سند محور است.
پایگاهدادهی ستونی:
این نوع پایگاهداده از ستون و سطر برای ذخیرهی اطلاعات استفاده میکند ولی بر خلاف ساختار سنتی، نام و نوع دادهی هر سطر میتواند متفاوت از دیگری باشد. HBase، Accumulo و Sqrrl از این نوع هستند.
اگر هنوز مطمئن نیستید که به NoSQL نیاز دارید یا خیر مقایسه ای که در ادامه آمده است را نیز مطالعه کنید.
SQL در برابر NoSQL
پایگاهدادههای SQL و NoSQL کار یکسانی را به روشهای متفاوت انجام میدهند، میتوان بعد از انتخاب یکی از این دو مورد تصمیم را تغییر داد و به گزینهی دیگر کوچ کرد ولی مقداری تحقیق باعث میشود با تصمیم درست در زمان و هزینهی خود صرفهجویی کنید.
پروژههایی که NoSQL بهتر است:
– ساختار دادهها در زمان اجرا ممکن است تغییر کند و انعطاف پذیری بالایی مورد نیاز است.
– هزینهی اجرایی پایگاهدادهی رابطهای به دلیل حجم زیاد اطلاعات بالاست.
– نیاز به انجام تغییرات جزئی، بسیار زیاد و مداوم در دادهها.
– حجم وسیع اطلاعات نامرتبط، با ساختار نامشخص یا در حال پردازش.
– نیاز به ارائهی سریع نسخهی اولیهی نرمافزاری که تحلیل کاملی از آن ایجاد نشده است.
– سرعت و مقیاس پذیری بالا در اولویت باشند.
پروژههایی که ساختار سنتی رابطهای بهتر است:
– یکپارچگی دادهها (Data integrity) ضروری است.
– منابع اطلاعاتی مواردی استاندارد و تایید شده اند که برای ساختار سطر، ستون و جدول قابل تحلیل اند و یا تجربهی استفاده و پشتبانی از آن وجود دارد.
– برای ورود اطلاعات رابط کاربری منظم و دقیقی طراحی شده است.
– نیاز به گذراندن تست اسید (یکتایی، قابلیت اطمینان، انزوا و پایداری) وجود دارد.
چنانچه مشاهده میشود برای انواع مختلف حالاتی که پایگاهدادههای سنتی (رابطهای) پاسخ مناسبی نداشتند یا کارایی قابل قبولی چه از نظر سرعت، هزینه، کارایی، حجم اطلاعات مورد پذیرش و… ارائه نمیدادند، نمونههای متعدد NoSQL جایگزین ساخته شده است. اکنون وظیفهی برنامهنویس و مدیر پروژه است که گزینهی مناسبتر را انتخاب کند و از گزینههای ارائه شده به بهترین صورت جهت موفقیت پروژه سود ببرد.
منبع: parsish