انواع مختلف پایگاه‌ داده NoSQL

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

دیتابیس های NoSQL، که Not Only SQL هم نامیده می‌شوند ، یک رویکرد برای مدیریت داده ها و طراحی پایگاه‌داده است که برای مجموعه بسیار زیادی از داده‌های توزیع‌شده مفید است. NoSQL، که طیف وسیعی از فن‌آوری‌ها و معماری‌های گوناگون را در بر می‌گیرد، به دنبال حل مقیاس پذیری و مشکلات عملکرد BigData است که پایگاه‌ داده های رابطه‌ای برای این منظور طراحی نشده اند NoSQL به ویژه زمانی مفید است که یک شرکت نیاز به دسترسی و تجزیه و تحلیل حجم عظیم داده‌های ساختارنیافته یا داده‌هایی را دارد که از راه دور بر روی سرورهای مجازی چندگانه در فضای ابری (cloud) ذخیره شده اند.

 

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

 

مزایای دیتابیس های  NoSQL

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

: Schema agnostic-  پایگاه‌های داده NoSQL ، agnostic schema (ساختارنیافتگی)هستند. لازم نیست قبل از ذخیره داده‌ها در پایگاه‌داده‌های NoSQL  کار زیادی را برای طراحی schema انجام دهید. شما می‌توانید کدزدن را شروع کنید ، و داده‌ها را ذخیره و بازیابی کنید بدون این که بدانید پایگاه‌داده چگونه عملیات ذخیره را انجام خواهد داد. اگر به قابلیت پیشرفته نیاز دارید، می‌توانید آن را بصورت دستی قبل از شاخص گذاری داده‌ها شخصی سازی کنید. Schema agnosticism بارزترین تفاوت بین NoSQL و پایگاه‌های داده رابطه‌ای می باشد.

 

-مقیاس پذیری: دیتابیس های NoSQL از روش مقیاس بندی افقی پشتیبانی می‌کنند که به آسانی می توان ظرفیت را بدون    وصل کردن به سخت‌افزار مناسب ، به سرعت اضافه یا کاهش داد. این کار هزینه و پیچیدگی شدید حالت دستی را حذف می‌کند که در هنگام تلاش برای اندازه‌گیری (سیستم مدیریت دیتابیس رابطه ای) RDBMS ضروری است.

 

-عملکرد: برخی دیتابیس ها به گونه ای طراحی شده اند که برای ارائه بهترین عملکرد نیاز به محل ذخیره‌سازی و سخت‌افزارهای پردازش ویژه  نیاز دارند. با یک پایگاه‌داده NoSQL، می‌توانید با اضافه کردن سرورهای ارزان‌تر، عملکرد را افزایش دهید که comoodity servers نامیده می شوند. این امر به سازمان‌ها کمک می‌کند تا به ارائه سریع و قابل اطمینان خود برای تجربه کاربری بهتر ادامه دهند با پیش بینی بازگشت سرمایه‌ برای اضافه کردن دوباره منابع، بدون سربار مربوط به manual sharding.

 

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

 

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

 

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

 

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

 

پایگاه‌داده NoSQL از نوع  ذخیره سازی Key-value

از دید یک API، ذخیره سازی  key-value ساده‌ترین ذخیره سازی داده در NoSQL برای استفاده هستند. کلاینت یا می‌تواند مقدار یک کلید را دریافت کند ، یک مقدار برای کلید معین کرده یا یک کلید را از محل ذخیره سازی داده حذف کند . مقادیر یک حباب هستند که محل ذخیره سازی داده‌ها فقط آنها را ذخیره می‌کند ، بدون توجه به اینکه چه چیزی درون آن است؛ این مسئولیت برنامه است برای درک آنچه که در آن ذخیره شده‌است. از آنجا که محل های ذخیره سازی key-value همیشه از دسترسی کلید primary استفاده می‌کنند، معمولا عملکرد عالی دارند و می‌توانند به راحتی مقیاس بندی شوند. پایگاه‌داده key-value از یک جدول هش برای ذخیره کلیدها و پوینترهای منحصر به فرد استفاده می‌کند ( در برخی از پایگاه‌های داده شاخص معکوس نامیده می‌شود ) با توجه به هر مقدار داده که در آن  ذخیره می‌شود . هیچ نوع column در پایگاه‌داده وجود ندارد بنابراین اجرای آن آسان است. پایگاه‌های داده key-value عملکرد عالی دارند و می‌توانند به راحتی با توجه به نیازهای کسب‌وکار مقیاس بندی شوند.

 

موارد استفاده: در اینجا چند مورد از موارد استفاده عمومی از پایگاه‌های داده key-value وجود دارد:

برای ذخیره داده‌های session کاربر

نگهداری پروفایل کاربری با schema-less

ذخیره تنظیمات کاربر

ذخیره‌سازی داده‌های سبد خرید

 

با این حال ، پایگاه‌داده‌های key-value گزینه ایده‌آلی برای هر مورد استفاده نیستند: مثلا زمانی که:

 

ما باید پایگاه‌داده را با مقدار داده خاص پرس و جو کنیم.

ما به روابط بین مقدارهای اطلاعاتی نیاز داریم.

ما باید بر روی چندین کلید منحصر به فرد عمل کنیم.

کسب‌وکار ما نیازمند به روز رسانی بخشی از مقادیر به صورت مرتب است.

مثال‌هایی از این پایگاه‌داده عبارتند از Redis،MemcacheDB  و  Riak

 

پایگاه‌داده NoSQL از نوع Document store

پایگاه داده Document store NoSQL  شبیه پایگاه‌های داده key-value هستند که در آن یک کلید و یک مقدار وجود دارد. داده‌ها به عنوان یک مقدار ذخیره می‌شوند. کلید مربوطه آن شناسه منحصر به فرد برای آن مقدار است. تفاوت این است که در یک پایگاه‌داده document، مقدار شامل داده‌های ساختاریافته یا نیمه ساختاریافته است. این مقدار ساختار یافته یا نیمه ساختار یافته به عنوان یک document شناخته می‌شود و می‌تواند در فرمت XML، JSON یا BSON باشد.

 

موارد استفاده: پایگاه‌های داده document store برای موارد زیر ارجحیت دارند:

 

سکوهای تجارت الکترونیک

سیستم‌های مدیریت محتوا

سکوهای تجزیه و تحلیل

سکوهای بلاگ نویسی

 

اگر بخواهید کوئری های جستجوی پیچیده را اجرا کنید و یا اگر درخواست شما نیاز به تراکنش های پیچیده عملیاتی داشته باشد، پایگاه‌های داده‌ای  Document store NoSQL گزینه مناسبی نیستند.

 

نمونه‌هایی از پایگاه‌های داده Document store NoSQL ، MongoDB، Apache CouchDB و Elasticsearch هستند.

 

پایگاه‌داده های NoSql مبتنی بر Column (Column store NoSQL)

 

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

 

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

 

هر خانواده ستون می‌تواند با یک کانتینر ردیف در جدول RDBMS مقایسه شود که در آن کلید ردیف را شناسایی می‌کند و یک ردیف متشکل از چندین ستون است. تفاوت این است که ردیف‌های مختلف نباید ستون‌های یکسانی داشته باشند، و ستون‌ها می‌توانند در هر زمانی بدون نیاز به اضافه کردن آن‌ها به ردیف‌های دیگر اضافه شوند.

 

موارد استفاده: توسعه‌دهندگان عمدتا از پایگاه‌های داده ستونی استفاده می‌کنند در:

سیستم‌های مدیریت محتوا

سکوهای بلاگ نویسی

سیستم‌هایی که  شمارنده ها را حفظ می‌کنند

خدماتی که تاریخ انقضا دارند

سیستم‌هایی که نیاز به درخواست‌های نوشتن سنگین دارند  مانند log aggregators

 

اگر شما مجبور به استفاده از کوئری  پیچیده هستید و یا اگر الگوهای کوئری  شما به طور مرتب تغییر می‌کنند ، باید از پایگاه‌های داده Column store اجتناب شود. همچنین اگر موارد مورد نیاز یک پایگاه داده را نداشتید، از آن‌ها دوری کنید، تمایلی که ما در سیستم‌های جدید می بینیم .

 

نمونه‌هایی از پایگاه‌های داده column store NoSQL، Cassandra  ، Apache و Hadoop Hbase می‌باشد.

 

پایگاه‌داده های Graph مبتنی بر NoSQL

 

دیتابیس های مبتنی بر Graph به طور اساسی بر روی مدل"Entity – Attribute – Value" (مقدار -صفت موجودیت) بنا شده‌اند. موجودیت‌ها به عنوان گره‌ (Node) شناخته می‌شوند که دارای ویژگی هستند. این روش بسیار انعطاف‌پذیر برای توصیف چگونگی ارتباط داده‌ها با داده‌های دیگر است. گره‌ها داده های مربوط به هر موجودیت را در پایگاه‌داده ذخیره میکنند، روابط ، رابطه بین گره‌ها را توصیف می‌کنند و یک ویژگی به سادگی گره ای در نقطه مقابل رابطه است. در حالی که یک پایگاه‌داده قدیمی، توصیفی از هر رابطه ممکن در فیلدهای کلید خارجی (Foreign Key) یا جداول الحاق(junction table) را ذخیره میکنند، در حالی که پایگاه‌ داده های مبتنی بر گراف، به هرنوع رابطه ای که میتوان ایجاد کرد، اجازه تعریف شدن می دهند.

 

موارد استفاده: پایگاه داده Graph مبتنی بر NoSQL معمولا در موارد زیر استفاده می‌شود:

 

-تشخیص تقلب یا شناسایی کلاه برداری آنلاین

-جستجوی مبتنی بر گراف

-عملیات شبکه و فن‌آوری اطلاعات

-شبکه‌های اجتماعی و غیره

 

 از جمله دیتابیس های NoSQL مبتنی بر Graph می توان به Neo4j، ArangoDB و OrientDB اشاره کرد.