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

این درس از مجموعه آشنایی با پایگاه داده های NoSQL است
پیش نیاز این درس:

بهتر است ابتدا درس پایگاه داده NoSQL را خوانده باشید

در درس قبلی آشنایی مختصری با پایگاه داده NoSQL پیدا کردیم. در این درس تمرکزمان را بیشتر بر روی ۴نوع پایگاه داده NoSQL معطوف میکنیم و میدانیم که نسبت به نوع مسئله و داده های موجود، میتوانیم هر یک از این پایگاه داده ها را انتخاب کنیم. اکثر پایگاه داده های NoSQL جزو یکی از این ۴دسته قرار میگیرند:

۱. پایگاه داده های مبتنی بر کلید/مقدار(Key/Value Store Databases)

شکل زیر را نگاهی بیندازید(این شکل اطلاعات مربوط به صفحات یک وب سایت را با کلید های مختلفی ذخیره کرده است):

همان طور که میبینید، در جدول بالا یک ستون کلید(Key) برای هر سطر وجود دارد که توسط آن میتوان مقدار مورد نظر در ستون Value را پیدا کرد. یک ستون مقدار(Value) نیز برای هر سطر داریم که بیانگر مقدار واقعی برای هر سطر است. مثلا میخواهیم اطلاعات مربوط به صفحه با کلید ‘۴۲۵‘ را پیدا کنیم. برای این کار کافیست این درخواست را به پایگاه داده ای که مبتنی بر Key/Value است فرستاده و این پایگاه داده، مقدار مورد نظر(که در ستون Value قرار دارد) را برای ما برمیگرداند.

در این نوع پایگاه داده ها، کلید ها(Keys) به صورت جدول درهم ساز(Hash Tables) ذخیره می شوند تا بتوان آن ها را ساده تر و سریع تر جستجو کرد. در کل این نوع پایگاه داده ها دارای سرعت فراخوانی بسیار بالایی هستند و کار کردن با پایگاه داده های Key/Value بسیار ساده است.

این پایگاه داده ها کاربردهای فراوان زیادی دارند. از جمله این کاربردها میتوان به ذخیره سازی Sessionهای کاربر(مثلا برای ذخیره سازی اطلاعات کاربری در یک وب سایت)، ذخیره سازی داده ها به صورت حافظه نهان(Cache)، ذخیره سازی سبد خرید در یک فروشگاه اینترنتی و… اشاره کرد.

البته که پایگاه داده های Key/Value، معمولا اشکالاتی نیز دارند. یکی از اشکالات غیر سازگار بودن آن هاست. سازگاری یا همان Consistency را در درس تئوری CAP در مورد آن بحث کرده ایم. همچنین اگر پایگاه داده شما دارای ارتباطات مختلفی(مثل Relationها در SQL که با JOIN میتوانستیم اطلاعات را دریافت کنیم) است، این نوع پایگاه داده نمیتواند کارا باشد. یا برای مثال اگر میخواهید یک کلید(Key) را در این نوع پایگاه داده ها زیاد تغییر دهید، باز هم کارایی بالایی دریافت نخواهید کرد.

از معروف ترین پایگاه داده های مبتنی بر کلید/مقدار(Key/Value) میتوان به موارد زیر اشاره کرد:

Redis, MemcacheDB, Riak و Amazon Dynamo

 

۲. پایگاه داده های مبتنی بر سند(Document Base Databases)

این نوع پایگاه داده ها که بیشتر توسط JSON یا XML پیاده سازی می شوند، شاید راحت ترین گزینه برای گزار از پایگاه داده های رابطه ای(مانند SQL) به پایگاه داده های NoSQL باشند. تمام چیزی که در این پایگاه داده ها ذخیره می شود، معمولا سند های JSON یا XML یا BSON است. پایگاه داده ای شبیه به کد زیر را در نظر بگیرید:

{
"name": "masoud",
"family": "kaviani",
"website": "chistio.ir"
},
{
"name": "ali",
"family": "ahmadi",
"website": "somewebsite.com"
},
{
"name": "ali",
"family": "tehrani",
"website": ""
}

فرض کنید کد بالا یک پایگاه داده مبتنی بر سند است. این پایگاه داده شامل سه عنصر است که هر عنصر نام، نام خانوادگی و وب سایت یک شخص را مشخص میکند. همان طور که می بیینید طراحی این پایگاه داده ها بسیار ساده و روان است. این پایگاه داده ها میتوانند به جای پایگاه داده های رابطه ای مانند Mysql یا Sql Server استفاده شوند و کاربردهای مشابه آن ها را دارند. MongoDB یا CouchDB از جمله این پایگاه داده های مبتنی بر هستند.

 

۳. پایگاه داده های مبتنی بر ستون(Column Family Databases)

پایگاه داده های رابطه ای مانند Sql Server به صورت پیش فرض داده ها را به صورت سطر(Row) ذخیره می کردند. اما در پایگاه داده های مبتنی بر ستون، داده ها ستونی ذخیره می گردند. ستون ها به صورت منتطقی در خانواده ای از ستون ها(Columns Family) ذخیره می شوند. در مقایسه با پایگاه داده های رابطه ای، این پایگاه داده ها برای تجمیع و جستجو در یک ستون خاص، سرعت به مراتب بالاتری دارند. فرض کنید در یک پایگاه داده رابطه ای میخواهید از جمع شارژ ۱۰میلیون کاربر را داشته باشید. برای هر کاربر، ستون شارژ در مکان های مختلفی از حافظه ذخیره شده است و این مکان ها، پشت سر هم نیستند. ولی در پایگاه داده های مبتنی بر ستون، تمام این ستون ها پشت سره هم در حافظه ذخیره شده و سرعت دسترسی را به صورت ستونی بیشتر می کنند.

بسیاری از پایگاه داده هایی که برای کار با مه داده(Big Data) طراحی شده اند جز این دسته از پایگاه داده ها هستند. برای مثال Big Table از شرکت گوگل و یا HBase و همچنین Cassandra از جمله پایگاه داده های مبتنی بر ستون هستند.

 

۴. پایگاه داده های مبتنی بر گراف(Graph Databases)

این پایگاه داده ها، نوع خاصی از دیدگاه را به داده ها و روابط بین آن ها دارند. این پایگاه داده ها را به طور دقیق تر در درس پایگاه داده گراف بحث کرده ایم.

منابع این بحث و اطلاعات بیشتر

» وب سایت 3pillarglobal

» وب سایت opensourceforu

» وب سایت DZone

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

پاسخ دهید

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