آشنایی با پایگاه داده‌های NoSQL (بخش دوم)

ٔNoSQL

در بخش اول به بررسی انواع پایگاه‌ داده‌های NoSQL پرداختیم. در این قسمت به بررسی ویژگی‌های مشترک این نوع از پایگاه داده‌ها می‌پردازیم.

مزایای NoSQL

در مقایسه با پایگاه داده‌های رابطه‌ای، پایگاه داده‌های NoSQL، مقیاس پذیرتر بوده و عملکرد بالاتری را فراهم می‌آورند. همچنین مدل داده‌‌ آن‌ها، موضوعات مختلفی را که توسط مدل‌ رابطه‌ای مغفول مانده‌اند، مورد توجه قرار می‌دهد، مواردی از قبیل:

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

ویژگی‌های مهم پایگاه داده‌های NoSQL

شِمای پویا

در پایگاه‌ داده‌های رابطه‌ای، همواره پیش از اینکه بتوانید داده‌ای را اضافه نمایید، شِما‌ها باید تعریف شده باشند. برای مثال؛ ممکن است در نظر داشته باشید اطلاعاتی از قبیل نام، شماره تلفن، استان، شهر و آدرس مشتریان خود را ذخیره نمایید. در یک پایگاه داده‌ رابطه‌ای باید از ابتدا بدانید چه داده‌هایی را می خواهید ذخیره کنید. این وضعیت تناسب بسیار ضعیفی با رویکرد توسعه چابک (Agile) دارد، چراکه هر بار که یک ویژگی جدید را کامل می‌نمایید، اغلب شِمای پایگاه داده نیاز به تغییر دارد. برای مثال؛ اگر تصمیم گرفتید که کمی دایره داده‌ها را توسعه دهید و علاوه بر نام و آدرس مشتریان، اطلاعات اضافی دیگری را نیز ذخیره کنید، نیازمند افزودن ستون به پایگاه داده و سپس مهاجرت کل پایگاه داده به یک شِمای جدید هستید.

اما در پایگاه‌ داده‌های NoSQL می‌توان داده‌ها را به راحتی و بدون نیاز به شِمای از پیش تعریف شده، ذخیره کرد. در واقع این نوع از پایگاه داده‌ها، ایجاد تغییرات وسیع و در لحظه را بدون نگرانی از ایجاد اختلال در خدمت رسانی تسهیل می کنند؛ و این به این معنی توسعه سریع‌تر، یکپارچه سازی کد با اطمینان بیشتر و نیاز به صرف زمان راهبری کمتر پایگاه داده است.

توزیع خودکار داده‌ها

پایگاه‌ داده‌های رابطه‌ای معمولا به صورت عمودی ساختاردهی می‌شوند؛ که در این صورت یک سِرور باید تمامی پایگاه داده را میزبانی کند تا از پایایی و تداوم دسترسی به داده‌ها، اطمینان حاصل شود. این امر موجب افزایش هزینه‌ها، محدودیت مکان در مقیاس‌های بالاتر و ایجاد نقاط شکست نسبتا کوچک برای زیرساخت پایگاه داده می‌شود. راه حل، ساختاردهی به صورت افقی است، یعنی افزودن سرور به جای تمرکز بر افزایش ظرفیت یک سرور یکتا.

به این ترتیب می‌توان به جای استفاده از یک پایگاه داده، بخش‌های مختلف داده را روی پایگاه‌های مختلف نگهداری کرد. به علاوه هنگام بازیابی اطلاعات نیز، اسناد مرتبط را که ممکن است بر روی پایگاه‌ داده‌های مختلف ذخیره شده باشند، در یک زمان فراخوانی کرد. پایگاه‌ داده‌های NoSQL به صورت خودکار می‌توانند داده‌ها را میان چندین سرور توزیع و بازخوانی کنند.

تکرار

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

نوشته آشنایی با پایگاه داده‌های NoSQL (بخش دوم) اولین بار در پدیدار شد.

آشنایی با پایگاه داده‌های NoSQL (بخش اول)

ٔNoSQL

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

NoSQL که خلاصه شده عبارت Not only sql است، شامل گستره‌ بزرگی از پایگاه‌های داده‌ مختلف بوده که برای پاسخگویی به نیازها و مشکلات موجود در ساخت اپلیکیشن‌های مدرن گسترش یافته‌اند. به عبارت دیگر می‌توان گفت دلیل اصلی گسترش بانک‌های اطلاعاتی NoSQL، پاسخگویی به نیازهایی است که مدل رابطه‌ای در برآورده کردن آن‌ها ناتوان بوده است. به عنوان مثال می‌توان ادعا کرد که مدل رابطه‌ای در اکثر موارد در مدیریت داده‌های حجیم (Big data) به مشکل برخورده و کارایی لازم را ندارد اما NoSQL را می‌توان بهترین مدل برای کار با این نوع از داده‌ها دانست. تفاوت اصلی NoSQL با پایگاه داده‌های رابطه‌ای را می‌توان در روش مدل کردن داده‌ها دانست که به روش‌هایی غیر از روش روابط بین جداول صورت می‌گیرد.

انواع پایگاه داده‌های NoSQL

از منظر روش مدل کردن داده‌ها، NoSQL را به چهار دسته کلی تقسیم بندی می‌کنند که به بررسی اجمالی هریک می پردازیم:

سند‌ محور (Document-oriented): در پایگاه‌های داده‌‌ سند محور، واحد اصلی ذخیره و کار با داده‌ها سندها هستند که از انعطاف پذیری بالایی برخوردار هستند. در این مدل، هر‌سند یک شناسه منحصر‌بفرد داشته که آن را از سایر اسناد جدا می‌کند. CouchDB و MongoDB از جمله پایگاه داده‌های معروف سند محور هستند.

کلید-‌مقدار (Key-Value store): این نوع ساده‌ترین گونه از پایگاه داده‌ NoSQL بوده به طوری که هر آیتم داخل پایگاه داده، توسط یک خصیصه (Attribute) به همراه مقدار (Value) آن خصیصه ذخیره می‌شود. پایگاه داده Riak در این دسته‌بندی قرار می‌گیرد.

گراف محور (Graph-oriented): یکی از چهار گروه اصلی بانک‌های اطلاعاتی NoSQL، بانک‌های اطلاعاتی مبتنی بر گراف هستند. ساختاری که اطلاعات در آن به صورت گره و یال ذخیره می‌شوند. معمولا مثالی که برای کاربردهای این نوع از پایگاه اطلاعاتی بیان می‌شود شبکه‌های اجتماعی مانند فیس بوک و توئیتر است که در آن هر فرد یک گره در نظر گرفته می‌شود و رابطه دوستی بین افراد، یال‌های این گراف را تشکیل می‌دهند. معروفترین پایگاه داده‌ گراف محور Neo4j است.

ستون محور (Column-oriented): این نوع برای اجرای پرس و جو در مجموعه داده‌های بزرگ بهینه سازی شده و به جای ردیف‌ها، ستون‌های داده را در کنار یکدیگر نگهداری می کنند. از مهمترین پایگاه‌ داده‌‌های ستون محور می‌توان به Cassandra اشاره کرد.

نوشته آشنایی با پایگاه داده‌های NoSQL (بخش اول) اولین بار در پدیدار شد.