آشنایی با پایگاه داده‌های NoSQL

آشنایی با پایگاه داده‌های NoSQL

نوشته شده توسط: وحید امیری
۱۵ مهر ۱۳۹۷
زمان مطالعه: 10 دقیقه
۰
(۰)

مقدمه

محبوبیت رو به رشد انبوه برنامه‌های کاربردی وب نظیر نمونه‌های برجسته‌ای چون فیسبوک، توییتر و گوگل که مقدار زیادی داده را ذخیره، تجزیه و تحلیل می‌کنند، نیازهای جدید ذخیره اطلاعات امروزی ، پایگاه‌های داده‌ای با معماری جدیدی را طلب می‌کند.
مدل سنتی پایگاه داده‌های رابطه‌ای با همه مزایا و معایب آن دیگر پاسخگوی داده‌های کلان تجاری و برنامه‌های تحت وب با رشد روز افزون و تغییرات فراوان نمی‌باشد. به همین دلیل پایگاه داده جدیدی با معماری کاملا متفاوت با نام NoSql پا به عرضه وجود گذاشت و علاوه بر رفع برخی از نواقص مدل رابطه ای، برای سیستم‌های پایگاه داده قابل گسترش و توزیع شده امکانات جدیدی را برای سیستم‌ها معرفی نمود که از جمله این امکانات دسترسی پذیری بالا و بخش پذیری و ثبات می‌باشند. مواردی که اهمیت و کاربرد NoSql را در پردازش ابری به خوبی نمایان می‌سازد. بر اساس همین اهمیت و بخاطر متن باز بودن ایده اولیه NoSql نمونه‌های بسیاری از پایگاه داده‌ای NoSql با اهداف و ساختارهای متفاوت نسبت به هم ایجاد گردید که از جمله آنها می‌توان بهCassandra ، CouchDB،Mongo DB ، BigTable ، Redis، Hbase، vertica، Simple DB و … اشاره کرد.برای درک بیشتر اهمیت NoSQL باید به چالش‌های موجود امروزی بر سر راه پایگاه‌های داده بیشتر توجه کرد. هم‌اکنون با توسعه فناوری‌‌های مختلف (از جمله اینترنت اشیاء) قابلیت دریافت و تولید حجم عظیمی از داده‌ها، امکان ذخیره‌سازی و تحلیل آنها چالشی بزرگ به شمار می‌آید. داده‌هایی مانند داده‌های هواشناسی، فعالیت‌های آنلاین کاربران، اشیاء متصل شده به اینترنت و یا تحلیل‌های اقتصادی در قالب پایگاه‌های داده‌ای سنتی کارایی چندانی نخواهند داشت و در ذخیره‌سازی‌‌های بدون قالب و توزیع شده‌ای مانند هادوپ به بهترین روش کار خواهند کرد.

کارایی بسیار بالا در ذخیره‌سازی و ارائه داده‌های باینری مانند اسناد، در مقیاس وسیع، یکی از بهترین کاربردهایی است که پایگاه‌های NoSQL شایستگی خود را در فراهم‌کردن آن به اثبات رسانده‌اند. با این اوصاف، موارد ذکر شده تنها چالش پیش روی توسعه‌دهندگان و سرویس‌دهندگان نیست. ذخیره‌سازی ، مدیریت و بازیابی داده‌های گذرا که در بعضی موارد در مقیاس بالایی در برنامه‌های کاربردی امروزی همچون اینترنت اشیاء تولید می‌شوند نیز یکی دیگر از چالش‌های امروزی است که راه حل مدیریت مناسب آنها را پایگاه‌های دادهای NoSQL ارائه کرده‌اند.

این نوع پایگاه داد‌ه‌ها دارای ویژگیهایی هستندکه برخی از این ویژگیها عبارتند از

۱- طراحی بدون شمای اولیه

با توجه به برنامه‌های وبی فعلی ممکن است شمای نگهداری داده‌ها (ساختار کلی) مرتبا و یا گهگاهی تغییر کند. لذا در این سیستمها اصولا داده‌ها بدون شمای اولیه طراحی و ذخیره می‌شوند. (به عنوان مثال می‌توان در یک سیستم که مشخصات کاربران وارد سیستم می‌شود، برای یک کاربر یک سری اطلاعات اضافی و برای کاربری دیگر از ورود اطلاعات اضافی صرف‌نظر کرد و در مقایسه با RDBMS به این ترتیب از ورود مقادیر Null و یا پیوندهای بی مورد جلوگیری کرد.

۲- پشتیبانی آسان از تکرارها

در این سیستم، نحوه گرفتن نسخه‌های پشتیبان و هماهنگ‌سازی و همگام‌سازی نسخه‌های مختلف بسیار ساده و سر راست می‌باشد و سرور پایگاه داده به محض عدم توانایی خواندن و یا نوشتن از روی دیسک سراغ نسخه پشتیبان می‌رود و آن نسخه را به عنوان نسخه اصلی در نظر می‌گیرد.

۳- رابط کاربردی برنامه نویسی ساده

به دلیل متن باز بودن این سیستم‌ها، معمولا APIهای ساده و بهینه‌ای برای اکثر زبان‌های برنامه‌نویسی محبوب ایجاد شده است.

۴- سازگاری مشروط

در سیستم‌های RDBMS که داده‌ها خاصیت ACID را (در قالب تراکنش) پیاده می‌کنند، در این سیستم‌ها داده‌ها در وضعیت BASE قرار دارند که سرنام کلمات Basically Available، Soft State و Eventual Consistency می‌باشد.

۵- حجم زیادی از داده‌ها

این سیستم‌ها به منظور کار با داده‌های با حجم بالا ایجاد شده‌اند و در مواردی که سیستم‌های RDBMS به دلیل عدم پشتیبانی از مقیاس‌پذیری دارای محدودیت مدیریت حجم بالا هستند، بخوبی می‌توانند نقش خود را ایفا کنند.
از سوی دیگر سازگاری داده‌ها و در دسترس‌پذیر بودن سیستم‌ها از جمله مواردی است که در پایگاه داده‌های غیر رابطه‌ایی بسیار اهمیت دارد. از اینرو در طراحی سیستم‌های توزیع شده تئوریی وجود دارد که بیان می‌کند در یک سیستم توزیع‌ شده باید از بین سه ویژگی سازگاری داده، در دسترس بودن و تحمل در برار تقسیم خوشه دو مورد را انتخاب کرد. این محدودیت ذاتی سیستم‌های توزیع شده، که با نام تئوری CAP یا تئوری بروور شناخته می‌شود، بیان می‌کند که غیرممکن است ویژگی‌های زیر را در یک سیستم توزیع شده به صورت همزمان داشته باشیم. از آنجاییکه پایگاه داده‌های غیر‌رابطه‌ایی NoSql نیز نوعی سیستم توزیع‌شده بحساب می‌آیند، در نتیجه این تئوری در مورد پایگاه داده‌های غیر رابطه‌ایی نیز صدق می‌کند. شکل زیر دسته بندی کلی این پایگاه‌های داده‌ای را بر اساس نظریه‌ی CAP نشان می‌دهد.تعدد ابزارها و سیستم‌ها‌ی مبتنی بر NoSql ، انتخاب یک روش مناسب برای کاربر خاص را مشکل می‌کند. در این مقاله به بررسی اجمالی انواع ساختارهای داده‌ای در پایگاه داده‌های NOSQL پرداخته و هر یک از آنها را به اختصار شرح می‌دهیم.

انواع پایگاه داده NOSql

همانطور که گفته شد، معماری سیستم‌ها‌ی مبتنی بر NoSql بخاطر تفاوت در نوع عملکرد و کاربرد آنها متفاوت است. انواع پایگاه داده NoSql از نظر معماری به چند دسته مهم تقسیم می‌شود:

  • پایگاه‌های کلید/مقدار
  •  پایگاه‌های داده‌ای اسنادی
  • پایگاه‌های داده‌ای ستون‌گرا
  • پایگاه‌های داده‌ای گرافی

در ادامه به معرفی اجمالی هر یک از این انواع می‌پردازیم.

پایگاه‌ داده‌های کلید/مقدار

این سرویس در واقع یک سرویس بازیابی اطلاعات، مشابه با HashTable می‌باشد که راهی بهینه برای ذخیره داده‌های ساده اما در مقیاسی بسیار وسیع می‌باشد. در این روش داده‌ها تنها با کلیدها‌ی اولیه و بدون ارتباطات پیچیده نگه‌داری می‌شوند.
تاخیر کم، توزیع پذیری و جایگزین پذیری بالا از مزایای این نوع پایگاه داده‌ای NoSql می‌باشد. هر چند که در این نمونه پایگاه NoSql ، Shema برای محتوی ذخیره شده وجود ندارد.
این می‌تواند به عنوان یک نقطه ضعف برای آن مطرح شود اما همین شکل ساده و استفاده از ساختمان HashTable در سرعت مراجعه به اطلاعات نقش بسزایی دارد و در کاربرهایی که جستجو اطلاعات Cashe شده در اولویت و اهمیت می‌باشد، پایگاه‌های داده‌ای کلید/مقدار می‌توانند بهتر و مفید‌تر عمل کنند. از نمونه‌های پایگاه داده NoSql که با این روش طراحی شده اند، می‌توان به Oracle Berkeley DB ، Voldmort ، Redis اشاره کرد.

پایگاه‌های داده‌ای اسنادی

این نوع پایگاه داده در اصل نوعی از پایگاه داده کلید/مقداری است که داده‌ها و مقادیر را در قالب اسناد ذخیره می‌شوند و هر سند در این روش حاوی مقادیر داده‌ای دلخواه به همراه Metadata‌های آن سند می‌باشد. در این روش نوع داده‌ای مقادیر اسناد می‌تواند متفاوت و متغیر باشد و هیچ محدودیت خاصی در اندازه متن یا تعداد المانهای آن وجود ندارد. هر تغییری که روی اسناد صورت گیرد می‌تواند در بانک اطلاعاتی ذخیره شود و یا تغییر کند.
نمونه‌ای از این نوع، پایگاه داده‌ای MongoDB می‌باشد که داده‌ها را با فرمت Json که برای برنامه نویسان جاوا اسکریپت آشنا است به عنوان سند ذخیره خواهد کرد. علاوه برا این در MongoDB پرس و جوها به شکل توابع معمولی جاوا اسکریپت است. به همین دلیل این پایگاه داده‌ای مورد توجه بسیاری از توسعه‌دهندگان وب واقع شده است.

یکی دیگر از نمونه پایگاه داده‌های اسنادی، CouchDB می‌باشد که کتابخانه‌های مورد نیاز برای همه زبانها‌ی برنامه نویسی مهم را ارائه داده و مورد توجه بسیاری از توسعه دهندگان قرار گرفته است. ضمن اینکه شرکت Cloudant سرویس میزبانی این نوع پایگاه داده‌ای را در ابر ارائه می‌دهد و استفاده از این پایگاه داده به صورت سرویس روز به روز ساده‌تر و کم هزینه‌تر شده است.

پایگاه‌های داده‌ای ستون‌گرا

برای مدیریت میلیونها بروز رسانی داده‌ای از افراد مختلف در یک شبکه اجتماعی بزرگ با سریعترین روش و ارزانترین راهکار باید با ایده‌های پایگاه‌های توزیع شده NoSql آشنا شویم. این موضوع وقتی از درجه اهمیت بالایی برخوردار می‌گردد که قرار باشد حجم عظیمی‌از داده‌ها روی شبکه بزرگی با سرورها‌ی متصل به هم قرار گیرد.

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

پایگاه داده‌های گرافی

این پایگاه داده امکان پر کردن انبار داده‌ای با نودهای مختلف و برقراری ارتباط میان آن‌ها را برای ایجاد معانی و مفاهیم پیچیده‌تر و یا اشیاء ایجاد می‌کند. پایه این نوع پایگاه داده‌ای با مجموعه‌ای از الگوریتمها‌ی محاسباتی مرتبط با گراف عرضه شده است که برای مثال امکان تعیین کوتاهترین مسیر را فراهم می‌سازد. از نمونه‌های بارز این نوع پایگاه داده NoSql میتوان Neo4j را نام برد که مهمترین نوع پایگاه داده‌ای گرافی می‌باشد. هرچند که توسعه این پایگاه داده‌ای در ابتدای راه قرار دارد و یک نمونه بسیار جوان از این دسته است، ولی هر روز قابلیت‌های بیشتری به آن اضافه می‌گردد که افزایش سرعت کارکرد با استفاده از روشهای Caching و استفاده از یک زبان پرس و جو‌ی جدید شبیه XSL از جمله این قابلیت‌های اضافه شده جدید به این پایگاه داده می‌باشد.

چه رتبه ای می‌دهید؟

میانگین ۰ / ۵. از مجموع ۰

اولین نفر باش

title sign
دانلود مقاله
آشنایی با پایگاه داده‌های NoSQL
فرمت PDF
5 صفحه
حجم 1 مگابایت
دانلود مقاله
شروع کار با Power Start – Domain Driven Design
دوره آموزشی پایتون نیک آموز
دوره آموزش زبان برنامه نویسی GO
title sign
معرفی نویسنده
وحید امیری
مقالات
1 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
وحید امیری
پروفایل نویسنده
title sign
دیدگاه کاربران

    • مطلب خوبی بودش فقط مونگو دی بی اسناد در قالب bson ذخیره میکنه و برای راحتی از json برای وارد کردن اسناد و نشان دادن اون ها استفاده میکنه

    • ساده و روان
      ممنون

    • ساده و روان
      ممنون

    • بسیار عالی.. امیدوارم آموزش مباحث NoSql ادامه پیدا کنه

    • خیلی عالی … ممنون بابت ورود به مبحث NOSQL

    • ممنونم از مطلبتون..استفاده کردم

    • وحید جان تشکر
      بسیار عالی

    • وحید جان تشکر
      بسیار عالی