اصطلاح NoSQL نامی عمومی است که به مجموعهای از پایگاههای داده اطلاق میشود که از زبان پرسوجوی ساختیافته SQL (سرنام Structured Query Language) یا مدل داده رابطهای استفاده نمیکنند. گاهی این اصطلاح را مخفف Not Only SQL میدانند تا تأکید کنند که طرفداران انواع پایگاههای داده غیررابطهای معتقدند که پایگاههای داده رابطهای سنتی تنها راه موجود برای ذخیرهسازی داده نیستند، اما این به آن معنا نیست که به خودی خود انتخاب نادرستی باشند. این اصطلاح نخستینبار توسط اریک اوانس از Rackspace به کار رفت. او که یکی از توسعهدهندگان کاساندرا است، پس از آن از به کار بردن این اصطلاح خودداری میکند و به جای آن مایل است اصطلاح BigData یا دادههای عظیم را به کار ببرد تا این گروه از پایگاههای داده را نه براساس چیزی که نیستند (سازگار با SQL) بلکه براساس کاری که میکنند (مدیریت مقادیر عظیم داده) تعریف کند. دوره استفاده از این اصطلاح کموبیش به پایان رسیده است چرا که بسیار گیجکننده است و به نظر میرسد باعث میشود راجع به مجموعهای از پایگاههای داده بحث کنیم که در عمل میزان شباهت میان اهداف، ایدههای طراحی و قابلیتهای آنها بسیار اندک است. بهتر است بگذاریم کاساندرا همان کاساندرا، CouchDB همان CouchDB و Riak همان Riak بماند.
اهمیت و کاربرد
عبارت NoSQL یک مفهوم برای مشخصسازی یک موج خلاقانه است که در دنیای پایگاههاي دادهاي در حال وقوع است. با مطرح شدن این مفهوم، طوفانی از تبادل نظر، هیجان و بحث و گفتوگو در محافل فنی به راه افتاد که به يقين تا مدتها باقی خواهد ماند. اما چرا NoSQL این همه سروصدا به پا كرده است؟ این مفهوم برای یک توسعهدهنده برنامههاي کاربردی چه معنايی دارد؟ همانطور که قبلاً نیز ذکرشد، زبان SQL و پیادهسازیهاي مختلف SQL RDBMS (Relational Database Management Systems) مانند MySQL، PostgreSQL، Oracle و... دهههاي متمادی برای تمام نیازهای ذخیرهسازی و بازیابی داده کاربران و توسعهدهندگان یک راه حل اساسی بودهاند. اما در سال 2010، نیازمندیهاييمطرح شده و مورد توجه قرارگرفتند که با استفاده از مدل رابطهاي سنتی قابل دستیابی نبودند. از آنجا که مسائل جدید به ابزارهای جدید نیازدارند، مجموعهاي بزرگ از ابزارها پا به عرصه وجود گذاشته و موردتوجه بسیاری قرارگرفتند. دسترسپذیری بالا، مقیاسپذیریافقی، قابلیت تکثیر (Replication)، طراحی بدون Schema و قابلیت Map Reduce از جمله زمینههايي هستند که توسط مجموعهاي جدید از پایگاههاي داده و تحت عنوان کلی NoSQL در حال توسعه و آزمایش هستند.
برای درک بيشتر اهمیت NoSQL بايد به چالشهاي موجود امروزی بر سر راه پایگاههاي داده بيشتر توجه کرد. هماکنون با توسعه فناوريهاي مختلف و قابلیت نمونهبرداری و تولید حجم عظیمی از دادهها، امکان ذخیرهسازی و تحلیل آنها چالشی بزرگ به شمار ميآيد. دادههايي مانند دادههاي هواشناسی، فعالیتهای آنلاین کاربران یا تحلیلهاي اقتصادی در قالب پایگاههاي دادهاي سنتی کارایی چندانی نخواهند داشت و در ذخیرهسازيهای بدون قالب و توزیع شدهاي مانند هادوپ به بهترین روش کار خواهندکرد. همچنين، امروزه سرویسدهندگان بسیاری به ذخیرهسازی و ارائه محتوای عظیم باینری به کاربران خود در شبکه نیاز دارند که در نوع خود، چالشی بسیار بزرگ به شمار ميآيد. کارایی بسیار بالا در ذخیرهسازی و ارائه دادههاي باینری مانند اسناد PDF و فایلهاي MP3، در مقیاس وسیع، یکی از بهترین کاربردهایی است که پایگاههاي دادهاي NoSQL شایستگی خود را در فراهمکردن آن به اثبات رساندهاند. یک نمونه مناسب در این زمینه، خدمات Amazon S3 است. با این اوصاف، موارد ذکر شده تنها چالش پیش روی توسعهدهندگان و سرویسدهندگان نیست. ذخیرهسازی، مدیریت و بازیابی دادههاي گذرا که در بعضی موارد در مقیاس بالایی در برنامههاي کاربردی امروزی تولید ميشوند نیز یکی دیگر از چالشهاي امروزی است که راه حل مدیریت مناسب آنها را پایگاههاي دادهاي NoSQL ارائهکردهاند. این پایگاههاي داده، در مدیریت دادههايي نظیر متغیرهای یک Session در وب، قفلهاي دادهاي و آمار کوتاه مدت، جایگاه بسیارخوبي کسب کردهاند. نمونه مناسبی برای این کاربرد، پایگاه دادهاي Memcached است. اما نکتهاي که باید در این میان به آن توجه کرد آن است که یک توسعهدهنده، باید برای کاری که ميخواهد انجام دهد، ابزار مناسب را انتخابکند. به این معنا که برای بسیاری از کاربردهای معمولی، هنوز پایگاههاي دادهاي سنتی بهترین راه حل هستند و نباید آنها را تمام شده تصور كرد. همانطور که قبلاً نیز گفته شد، پایگاههاي دادهاي NoSQL برای مواردی خاصمناسب هستند که در بالا به آنها اشاره شد و موجب افزایش کاراییکل مجموعه نرمافزاری ميشوند. در بسیاری از موارد، انتخاب یک پایگاه داده NoSQL برای کاربردی خاص موجب افت شدید عملکرد و عدم پایداری مجموعه و قابلیت اطمینان بسیار پایین ميشود. به همین دلیل و به علت تعدد ابزارهای توسعهداده شده در این زمینه، گاهی اوقات تشخیص محدودیتها و مصالحههايي که باید در استفاده از یک ابزار درنظر گرفت، بسیار مشکل شده و انتخاب راه حل مناسب در محیطهاي رابطهاي یا غیر رابطهاي یک یا چند سروری، سردرگم کننده خواهد بود. به همین منظور، یک دیاگرام مناسب برای انتخاب راه حل مناسب توسط ناتان هورست (Nathan Hurst ) براساس نظریه CAP طراحی شده که در شكل ۱ آن را مشاهده ميكنيد.
در این دیاگرام سه گوشه اصلی نشانگر ثبات (Consistency)، در دسترس بودن (Availability) و قابلیت بخش بخش سازی (Partition Tolerance) هستند. ثبات در اینجا يعني همه کلاینتها همواره به دادههاي مشابه دسترسی داشته باشند، در دسترس بودن يعني همه کلاینتها امکان خواندن و نوشتن را داشته باشند و قابلیت بخش بخش سازی نیز به معنای این است که سیستم کلی بتواند در تمام بخشهاي شبکه فیزیکی کارکند. بر اساس نظریه CAP، تنها دو عنصر از این سه عنصر در سیستمهاي واقعی قابل انتخاب هستند و بر همین اساس، برای داشتن هر جفت مشخصه، ميتوان راهحلی را که روي ضلع مشترک آنها آورده شده است، انتخاب كرد. بررسی کامل این دیاگرام خود محتاج توضیح و تبیین بسیاری است که در حوصله این مقاله نمیگنجد. راهکارهای NoSQL، برای مسائلی بسیار فراتر از دنیای سنتی پایگاههاي دادهاي بهکارميروند و عملکردی به شدت بهتر از همتایان سنتی خود ارائهميكنند. لازم به تأکید است که گذار به سمت راهکارهای NoSQL، به دلیل مشکلات و محدودیتهاي زبان SQL نبوده است، بلکه بهدليل محدودیتهاي مدل رابطهاي پایگاه دادهاي است. زمینههايي که این پایگاههاي دادهاي مناسب آنها هستند و از خود شایستگی بیشتری در آنها نشان ميدهند، به ترتیب در ادامه آورده شدهاند:
دادههاي با توالی نوشتن بالا و توالی خواندن کم:
همانند شمارندههای بازدید صفحات وب، دستگاههاي وقایعنگار یا تلسکوپهاي فضایی. در این حالت، ذخیره دادهها یا بهصورت جفتهاي دادهاي key-value (همانند آنچه در Redis اتفاق ميافتد) انجام ميگیرد یا به صورت Document Oriented (همانند مدل مورد استفاده MongoDB) صورت ميپذیرد.
دادههاي با توالی خواندن بالا و توالی نوشتن بسیارکم:
همانند دادههايگذرا و کش شدهاي از تصاویر، اسناد و HTML رندر شده با دسترسی تکراری. چنین دادههايي در پایگاهداده Memcached که برای ذخیره موقت دادههاي گذرا مورد استفاده قرار ميگیرد، به خوبی مورد پردازش قرار ميگیرند. پایگاههاي دادهاي Cassandra و HBase نیز در زمینه جستوجوي دادههاي عظیم شایستگیهاي بسیاری دارند و راهحلهاي پیشرفتهاي نظیر Hadoop و Hive نمونههايي مناسب برای استفاده در زمینه تحلیل دادهها به شمار ميروند.
کاربردهايی با نیازمندیهاي در دسترس بودن بالا (High Availability) و با توقف خدمات (Downtime) بسیارکم:
این موارد به شدت در مدل سنتی با کمبودهایی مواجه هستند و پایگاههاي دادهاي NoSQL از عهده اجرای آنها بهخوبی برميآیند. چنین سیستمهايي که از طریق مجموعههاي خوشهسازی شده و با پیکربندی Redundant پیاده سازی ميشوند، بیش از هر چیز به مقیاس پذیری افقی و امکان توسعه روی ماشینهاي مختلف شبکه نیاز دارند. با مدلهای ارائه شده جدید توسط پایگاههاي دادهاي مانند Riak و Cassandra انطباق بیشتری داشته و کارایی بالاتری ارائه ميكنند.
دادههايي که باید در نقاط مختلف جغرافیایی با هم همگامسازی شوند:
چنین دادههايي که در کلاسترهای مختلف یک شبکه بزرگسازمانی با دفاتر مختلف پراکنده در سطح جغرافیایی وسیع موجودند و نیاز است تا همواره و با بالاترین سرعت و کمترین هزینه ممکن با هم همگام سازی شوند، به خوبی در مجموعههاي سنتی رابطهاي قابل پیادهسازی نیستند و در صورت انجام این کار، هزینههاي بسیاری را در برخواهند داشت. در نقطه مقابل، پایگاه دادهاي Memcached به خوبی از عهده اجرای چنین عملیاتی با کمترین هزینه و بالاترین کارایی برميآید.
دادههاي بزرگ تجاری یا مرتبط با تحلیل وب که شما ( schema)ی خاصی ندارند:
چنین دادههايي تقریباً شکل و قالب از پیش تعیین شدهاي ندارند و براساس محتوای متغیر موجود روي وب تولید ميشوند و در بيشتر موارد به فعالیتکاربران و سیستمهاي نرمافزاری مرتبط وابستههستند. اغلب نیاز است تا چنین دادههايي به خوبی ذخیرهسازی شوند (ترجیحاً بهصورت موازی) و امکانات پرسوجوپذیری غنی در اختیار بگذارند تا به خوبی قابل تحلیل باشند. مشخص است که سیستمهاي سنتی دادهاي که برای ذخیرهسازی و بازیابی نیاز به داشتن یک شمای از پیش تعیین شده و ثابت دارند به خوبی از عهده چنینعملیاتی برنمیآیند و به استفاده از راهکارهای جدید در این زمینه نياز است. راه حل هادوپ یکی از بهترین گزینهها برای کارکرد بهعنوان مدیر چنین دادههايي است.
راهحلهاي NoSQL در بسیاری از شرکتهايي که خدمات «وب اجتماعی» ارائه ميكنند، به کار گرفته شده و به سرعت در حال گسترش است. این امر به دلیل سختی زیاد و محدودیتهاي سیستمهاي کاملاً رابطهاي در برآوردهکردن نیازهای دادهاي آنها است. با نگاهی به نیازمندیهاي مقیاس پذیری یکی از شبکههای اجتماعی به راحتی ميتوانیم به این امر واقف شویم. این نیازمندیها عبارتند از:
- 570 میلیون مشاهده صفحات در ماه
- آپلود بیش از سه میلیارد عکس در ماه
- پردازش و ارائه بیش از 1,2میلیون عکس در ثانیه
- ارائه 25 میلیون نوع محتوا که با استفاده از ۳۰ هزار سرور انجام ميپذیرد.
با این نیازمندیها، که به يقين با نیازمندیهاي یک دپارتمان حسابداری در دهه 1950 تفاوتهاي بسیاری دارد، این شبکه اجتماعی خود را با مجموعهاي غنی از ابزارها تطبیقداده است که هر کدام یکی از بهترین نمونههاي پیشرو در حوزه پایگاههاي دادهاي NoSQL محسوب ميشوند:
Memcached:
این شبکه اجتماعی با استفاده از هزاران سرور Memcached، دهها ترابایت داده کششده گذرا را در هر لحظه پردازشكرده و خدمات مرتبط را به کاربران خود ارائه ميكند.
Cassandra که هم اکنون با HBase جایگزینشده است:
با استفاده از این پایگاههاي دادهاي این شبکه اجتماعی عملیات ذخیرهسازی گسترده طیف وسیعی از دادهها بدون داشتن هیچ نقطه خطا دار یا مشکل داری در مجموعه عظیمی از ماشینهاي محاسباتی را به بهترین نحو به اجرا در ميآورد.
Hadoop و Hive:
با استفاده از این ابزارهای پیشرفته، این شبکه اجتماعی تحلیل دادههاي عظیم و تحلیلهاي بازاری و تبلیغاتی را با کارایی بالایی به انجام ميرساند.
با توجه به موارد ذکر شده در بالا، ميتوان معماری دادهاي جدید و کارا را کلید رشد و توسعه سریع این شبکه اجتماعی دانست که بهعنوان دلیل اصلی مقیاس پذیری خوب آن نیز به شمار آورد. عاملي که زمینه رشد و توسعه شرکتهاي بزرگ دیگری مانند یاهو، Foursquare و Twitter را نیز به ارمغان آورده است. با اینکه اینگونه شرکتها در زمینه استفاده از این فناوري پیشگام هستند، اما هسته اصلی فناوری NoSQL به کار گرفته شده در بسیاری از کاربردهای موجود بهصورت کلی در دسترس همگان قرار دارد که در بیشتر موارد بهصورت اپن سورس نیز توسعه داده شدهاند. به همین دلیل، طیف وسیعی از توسعه دهندگان در برنامههايکاربردی و تجاری خود در حال آزمایش و تطبیق با این فناوري نوپا هستند و به زودی شاهد موج عظیمی از بهکارگیری چنین فناوریهايي در گوشه و کنار دنیای نرم افزارها خواهیم بود.
منبع : ماهنامه شبکه
sosoft : نویسنده