خانه --> پایگاه داده غیر رابطه ای (NOSQL) --> درآمدی بر بانک های اطلاعاتی غیر رابطه ای (NoSql)

درآمدی بر بانک های اطلاعاتی غیر رابطه ای (NoSql)

پایگاه داده های NoSQL ها در واقع همان بانک های اطلاعاتی غیر رابطه ای و توزیع شده هستند که لزوما برای نگهداری داده ها نیازی به ساختار جدول ندارد و میتواند به سادگی عملیات Replication را انجام دهد. البته ایده پایگاه داده NoSQL تقریبا بیش از ۱۰سال است که در محافل اینترنتی بوجود آمده است. این بانک اطلاعاتی در سالهای اخیر توجه زیادی را به سوی خود جلب کرده است. این پایگاه داده را دو شرکت بزرگ پیاده سازی کرده اند و همین باعث جلب توجه به چنین پایگاه دادهایی شده است:

آمازون دینامو و گوگل بیگتیبل از دیتابیس هایی هستند که از پدران NoSQL به شمار میروند. البته بانک های اطلاعاتی غیر رابطه ای انواع منبع باز مختلفی نیز دارد که میتوان از میان آنها به Cassandra، CouchDB Hbase MongoDB،Redis ،Riak و CouchDB اشاره کرد.

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

یکی از تحلیلگران موسسه ۴۵۱ معتقد است:

NoSQL  پایگاه داده ای است که توسط امثال گوگل، آمازون، فیسبوک و تویتر به کار گرفته میشود.« به گفته او گوگل و دیگر شرکتهایی که نام برده شدند، از NoSQL برای بالابردن بازدهی و میزان گسترش پذیری سیستم استفاده میکنند و در مقایسه با دیتابیسهای سنتی، صرفه جویی زیادی در هزینه و انرژی خواهند کرد.»

دمین کتز، یکی از موسسان شرکت Couchio و توسعه دهنده پایگاه CouchDB  معتقد است: شرکتها و توسعه دهندگان از NoSQL به این دلیل استفاده میکنند که تفکرات خود را با SQL نمیتوانند پیاده کنند. یکی از توسعه دهندگان پایگاه داده Riak که مشتریانی همچون Comcast و Electronic Arts را در کارنامه خود دارد، معتقد است: دسترسی به پایگاه های داده NoSQL چیزی است که در دیتابیسهای سنتی نمیتوان آنها را یافت. این دسترسی به این صورت که اجازه خواندن و نوشتن همزمان را به دیتابیس NoSQLمیدهد. گفتنی است Riak در الکترونیک آرتز، به منظور ذخیره سازی اطلاعات هفت میلیون کاربر بازی آنلاین Warhammeدر فیسبوک به کار میرود که هر نیم دقیقه اطلاعات تک تک کاربران را به روز میکند.

از سوی دیگر، در پایگاه داده CouchDB به جای دسترسی بالا، مساله کنترل توزیع بهتر پیاده شده است و میتوان پایگاه داده سندگرای کامل توزیع شده ای ایجاد کرد که به سادگی کنترل میشود.برخلاف پایگاههای داده SQL که داده ها را در ساختارهای بسیار منظمی ذخیره میکردند و گزارش می دادند، CouchDB تراکنش دارد این اطلاعات را در سندهای مجزایی که ساختاری نصفه و نیمه دارند، ذخیره و بازیابی کند. به عبارت دیگر CouchDB برای نرم افزارهای وب چندنفره )Collaborative( که مبتنی بر سندها و پروندهها هستند، بسیار مفید خواهد بود.

یکی از مشتریان این پایگاه داده،BBC  است که روزانه ۱۵میلیون درخواست را پاسخگو است. یکی دیگر از ویژگیهای CouchDB و در کل دیتابیس های NoSQL، ارتقاپذیری بهتر آنها نسبت به پایگاههای دادهای قدیمی تر است. ارتقای دیتابیس در سیستم های SQL به منظور ارتقای ساختار (Schema) و داده ها است که امکان رخ دادن خطا در آن زیاد میشود. در صورتی که در دیتابیس های سندگرا، اسکیمایی وجود ندارد و داده ه ای جدید در کنار داده های قدیمی قرار میگیرند و نیازی به تغییر ساختار وجود ندارد.

در جدول زیر مقایسه مختصری بین پایگاه داده ­های رابطه ­ای و NoSQL ارائه شده است:

  RDBMS NoSQL
انواع یک نوع با امکانات مختلف Key-Value , Column Store , Document Store, Graph
تاریخچه توسعه در دهه ۱۹۷۰ برای مقابله با اولین موج از برنامه‌های ذخیره داده، توسعه داده شدند در دهه ابتدایی هزاره سوم برای مقابله با محدودیت های پایگاه‌های داده SQL خصوصاً نگرانی حول مقیاس، تکرار و ذخیره داده بدون ساختار، توسعه یافتند
نمونه SQL Server, MySQL, Oracle Aerospike, Sophia, BigTable, MongoDB, Cassandra, HBase, Neo4j

 

 

مدل نگهداری داده

جداول – ستون‌ها و ردیف‌ها بر اساس نوع پایگاه داده متفاوت است. برای مثال، انبارهای key-value مشابه پایگاه‌های داده SQL عمل می‌کنند، اما تنها دو ستون دارد (key و Value) به همراه اطلاعات پیچیده­تری که برخی مواقع درون ستون value ذخیره می‌شود. پایگاه‌های داده مبتنی بر سند، تمامی داده های مرتبط با یکدیگر را در یک “سند” در JSON، XML و یا سایر فرمت‌ها که مقدارها را به صورت سلسله‌مراتبی در خود جای می‌دهند، ذخیره می‌کنند.
شما با حرکت از رکورد یک به رکورد دو، ساختار داده‌ای یکسان می‌باشد. با حرکت از رکورد یک به رکورد دو،  ممکن است با دو ساختار داده‌ای متفاوت مواجه شوید.
مقیاس‌پذیری عمودی؛ به این معنی که یک سِرور تنها به‌منظور غلبه بر تقاضای افزایش یافته، باید به میزان زیادی تقویت شود. امکان دارد که پایگاه‌های داده SQL در میان سرورهای متعددی توزیع شود، اما عموماً نیاز به مهندسی مازاد قابل‌توجهی است. افقی؛ به این معنی که برای افزایش ظرفیت، یک راهبر پایگاه داده به‌راحتی می‌تواند سِرور و یا مواردی همچون فضای ابری را اضافه نماید. پایگاه داده، در صورت لزوم به طور خودکار داده را در میان سرور توزیع می‌کند.
مدل توسعه

ترکیبی از منبع باز (مانند MySQL و Postgres)

و منبع بسته (مانند پایگاه داده Oracle)

اکثراً منبع باز
پشتیبانی تراکنش‌ها اکثراً به صورت کامل پشتیبانی می‌کنند

در شرایط خاص و در سطوح خاص

(سطح سند در مقابل سطح پایگاه داده)

زبان تغییرات زبان برنامه‌نویسی SQL  – در برخی انواع مختلف مانند: T-SQL , PL-SQL, …

 سمت برنامه‌نویسی – زبان‌های مختلف

مانند : xml – Json – Java Script , …

پایایی امکان پیکربندی برای پایایی زیاد و قوی وابسته به محصول، برخی پایایی زیاد را فراهم می‌آورند (برای مثال MongoDB) در حالی که برخی پایایی مشروط و نسبی فراهم می‌آورند.

مزایای بانک های اطلاعاتی غیر رابطه ای (NOSQL)

تغییر مقیاس ارتجاعی (Elastic scaling)

پیش از این با پایگاه‌داده‌ی رابطه‌ای یا RDBMS، مدیران پایگاه داده با افزایش بار پایگاه داده، به جای تغییر مقیاس افقی (scaling out) یا همان توزیع پایگاه داده بر روی چندین سرور، همواره متکی به تغییر مقیاس به صورت عمودی (scaling up) یا همان خرید سرورهای بزرگتر، گران‌تر و یا خرید چندین سرور بودند. نسل جدید پایگاه‌های داده‌ی NoSQL به‌گونه‌ای طراحی شده‌اند تا با گسترش به‌طور شفاف (transparently) و افقی (horizontally)، گره‌های جدید را بهبود ببخشند. علاوه‌براین، آنها معمولاً با کم‌هزینه‌ترین کالاهای سخت‌افزاری که به‌ذهن می‌رسد طراحی شده‌اند. برای NoSQL، سرورها می‌توانند از لایه‌ی داده‌ها (data layer) حذف یا اضافه شوند بدون آن‌که خرابی در نرم‌افزار به‌وجود آید.

قابلیت حمل داده‌های بزرگتر

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

نگهداری از از سرورهای بانک های اطلاعاتی غیر رابطه ای ارزان‌تر تمام می‌شود

نگهداری از سامانه‌های RDBMS گران‌قیمت و پیشرفته، پرهزینه بوده و تنها به کمک مدیران پایگاه‌داده‌ که در سطح بالا آموزش‌ دیده‌اند میسر است. از سوی دیگر پایگاه‌های‌داده‌‌ی NoSQL نیاز به مدیریت کمتری دارند. ویژگی‌هایی نظیر ترمیم خودکار (automatic repair)، توزیع آسان‌تر داده‌ها و مدل‌های ساده‌تر داده‌‌ای، مدیریت و تنظیم (tuning) کمتری را طلب می‌کند.

ارزان‌تر بودن سرور

پایگاه‌داده‌های NoSQL عموماً از گروه‌هایی از سرورهای ارزان‌قیمت برای مدیریت توده‌های تراکنش (transaction) و داده‌های در حال گسترش استفاده می‌شوند، درحالی‌که RDBMS برای نگهداری، نیازمند سرورها و سامانه‌های ذخیره‌سازی اختصاصی گران‌قیمت می‌باشد. بنابراین هزینه پردازش داد‌ه‌ها برای هر گیگابایت، در NoSQL به مراتب کم‌تر از هزینه‌ی نگهداریِ RDBMS است.

عدم وجود شِما یا مدل داده‌ای ثابت در بانک های اطلاعاتی غیر رابطه ای

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

امکان ذخیره‌سازی مجتمع (Integrated Caching Facility)

برای افزایش بازدهی داده‌ها و پیشرفت عملکرد، NoSQL تکنیک‌هایی پیشرفته برای ذخیره‌سازی (cache) داده‌ها در سامانه‌ی حافظه اعمال کرده است. در حالی‌که این کار در SQL بایست به‌کمک زیرساختتی جداگانه انجام بپذیرد.

محدودیت های بانک های اطلاعاتی غیر رابطه ای (NOSQL)

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

در سامانه‌های RDBMS، پشتیبانی از مشتری و پشتیبانی تجاری، توسط فروشندگان در سطح بالاتری ارایه می‌شود. در مقابل، پشتیبانی NoSQL توسط شرکت‌های نوپا و کوچک، بدون اهداف و منابع جهانی ارایه می‌شود؛ شرکت‌هایی فارغ از اعتبارِ شرکت‌های نام‌آشنایی همچون Oracle، Microsoft یا IBM که نام آن‌ها با SQL گره خورده است.

بانک های اطلاعاتی غیر رابطه ای سیر تکاملی را طی کرده‌اند تا پاسخگوی نیازهای وب‌افزارهای امروزی که برپایه Web 2.0 هستند باشند و در همین جهت در حال حرکت هستند. آنها امکاناتی جهت پرس‌و‌جوی موقت (ad-hoc query) و تجزیه و تحلیل (analysis) ارایه می‌دهند. نوشتن پرس‌وجوی SQL بسیار ساده‌تر است، اما در NoSQL حتی یک پرس‌وجوی ساده نیز نیاز به دانش برنامه‌نویسی قابل‌توجهی دارد و ابزارهای BI متداول که مورد استفاده قرار می‌گیرند اتصالی برای NoSQL ارایه نمی‌دهند.

خصوصیات بانک های اطلاعاتی غیر رابطه ای

  • NOSQL مدل رابطه ای داده را استفاده نمی کند بنابراین زبان SQL را استفاده نمی کند.
  • NOSQL حجم زیادی از داده ها را ذخیره می کند.
  • در محیط های توزیع شده ما NOSQL، را بدون هیچ تناقضی استفاده می کنیم.
  • اگر خطا یا خرابی در هر ماشینی بوجود بیاید بدون توقف به کارش ادامه می دهد.
  • NOSQL یک پایگاه داده متن باز است به طور مثال سورس کد آن برای هر کسی در دسترس است و استفاده از آن رایگان است.
  • NOSQL اجازه می دهد که داده ها در هر رکورد ذخیره شوند که دارای شمای ثابتی نیست.
  • NOSQL مفهوم ACID را استفاده نمی کند.
  • NOSQL مقیاس پذیر است و دارای عملکرد بالایی است.
  • دارای ساختار انعطاف پذیری است.

آدرس کانال تلگرام سایت بیگ دیتا:

t.me/bigdata_channel

آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel

جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.

دیدگاهتان را بنویسید

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