خانه / NoSQL / مفاهیم پایه / جنبش NoSQL : پیدایش، کاربردها و چشم‌انداز
NoSQL2

جنبش NoSQL : پیدایش، کاربردها و چشم‌انداز

اين مطلب يكي از مقالات بخش ويژه نشريه ماهنامه شبكه در شماره ۱۳۳ با عنوان جنبش NoSQL مي‌باشد.

پیدایش
مدت زمانی نه چندان دور، برنامه‌نویسی رویه‌اي (Procedural) بسیار رونق گرفته بود و زبان‌هاي برنامه‌نویسی C و پاسکال، دانشگاه‌ها و محافل علمی را به شدت تحت سیطره خود داشتند. با این حال، این محبوبیت دیری نپایید و با ارائه راه‌حل‌هاي بهتر با افول مواجه شد. مشکل اصلی اين بود که در آن زمان، مسائل جذاب مختلفی وجود داشت که دستور زبان C و Pascal راه‌حل‌های مناسبی برای برطرف‌كردن آن‌ها نداشتند و تلاش برای پیاده‌سازی آن‌ها، بسیار مشکل و طاقت‌فرسا بود. در این برهه از زمان بود که برنامه نویسی شیء‌گرا پا به عرصه وجود گذاشت و همه به این نتیجه رسیدند که پاسکال و C به نقطه انتهایی خدمت خود نزدیک ‌مي‌شود. پس از مدتی، با وجود این‌که این دو زبان تغییراتی را برای تطبیق با دنیای جدید تجربه‌کردند، اما بالاخره دوره آن‌ها به پايان رسيد و دنیا به استفاده از مدل‌هاي پیشرفته‌تر برنامه‌نویسی روی آورد.

با این‌که در عصر اینترنت و کلان داده، یک پایگاه‌داده قوی و غنی سنتی‌مي‌تواند کاربردی‌باشد، اما مدلی که برای حسابداری‌هاي ساده در دهه ۱۹۵۰ طراحی شده، نمی‌تواند به خوبی پاسخ‌گوی نیازهای امروزی باشد. به همین دلیل و برای جواب دادن به نیازهای امروزی، پایگاه‌هاي داده‌اي جدیدی پا به عرصه وجود گذاشته‌اند

این داستان هم اکنون، در حوزه سیستم‌هاي مدیریت‌داده‌اي تجاری و وب در حال‌وقوع است. مدل‌هاي رابطه‌ای، برای بیش از بيست‌سال بر سیستم‌هاي مدیریت داده‌اي در سازمان‌هاي بزرگ حکمرانی‌کرده‌اند، به طوری که برای نسل‌هاي مختلفی از توسعه‌دهندگان، تصور مدل داده‌اي بدون سطر و ستون‌امری غیر‌ممکن به نظر می‌رسد. با این حال، این مدل سنتی و کارایی پایین آن در‌داده‌هاي عظیم تجاری و برنامه‌هاي بزرگ تحت وب، بسیار مورد هجمه واقع شده و بسیاری را به فکر ارائه راه‌حل‌هاي جایگزین انداخته است. بسیاری معتقدند، با این‌که مدل قدیمی ارسال و دریافت سطر و ستون‌ها خود را با نیازهای امروز تطبیق مي‌دهد، اما این کار همانند تلاش برای جای دادن یک مکعب مستطیل در یک شكاف استوانه‌اي است! به بیان دیگر، با این‌که در عصر اینترنت و کلان داده، یک پایگاه‌داده قوی و غنی سنتی‌مي‌تواند کاربردی‌باشد، اما مدلی که برای حسابداری‌هاي ساده در دهه ۱۹۵۰ طراحی شده، نمی‌تواند به خوبی پاسخ‌گوی نیازهای امروزی باشد. به همین دلیل و برای جواب دادن به نیازهای امروزی، پایگاه‌هاي داده‌اي جدیدی پا به عرصه وجود گذاشته‌اند که با عنوان Not Only SQL یا NoSQL شناخته مي‌شوند. کارلو استروزی (Carlo Strozzi) نخستين‌بار در سال ۱۹۹۸عبارت NoSQL را برای اشاره به پایگاه‌هاي داده‌اي سبک و اپن‌سورس رابطه‌اي به كار گرفت که از رابط SQL استفاده نمی‌کردند. هرچند بعدها وی به این نکته اشاره کرد که این عبارت و مفهوم پشت آن، کاملاً از مدل رابطه‌اي جدا شده و دیگر بهتر است آن را NoREL یا Not Only Relational بنامیم.
در سال ۲۰۰۰ ميلادي، اریک بریور (Eric Brewer) با ارائه نظریه CAP به کمبودها و محدودیت‌هاي مدل رابطه‌اي در سیستم‌هاي بخش بخش شده (Partitioned) اشاره‌کرد و توضیح داد که ثبات (Consistency) و دسترس پذیری بالا (High Availability)، هر دو در یک پایگاه داده‌ای موجود در یک شبکه گسترده و وسیع قابل فراهم‌ شدن نیستند.

این نظریه، باعث شد تا توجه‌ها به سمت داده‌هاي گسترده در سطح شبکه جلب شده و مدل‌هايي با تأکید بر بخش بخش‌سازی (Partitioning) و دسترس پذیری بالا (High Availability) به‌عنوان نیازمندی اصلی و با در نظر‌گرفتن ثبات به‌عنوان اولویت بعدی، که امکان به تأخیر انداختن آن در مقایسه با سایر اولویت‌ها نیز وجود دارد، معرفی شوند. به همین دلیل، عبارت NoSQL مفهومی است که برای مشخص کردن پایگاه‌هاي داده‌اي به‌کار مي‌رود که به شدت با پایگاه‌هاي داده‌اي رابطه‌اي سنتی متفاوت هستند. این پایگاه‌هاي داده‌اي اغلب با مفاهیم سنتی نظیر جدول‌ها، سطر و ستون‌هاي ثابت بیگانه هستند و در بيشتر موارد، عملیات Join در آن‌ها بی‌معنی بوده و به‌صورت افقی مقیاس‌پذیر‌هستند.
محققان دانشگاهی این پایگاه‌هاي داده‌اي را با عنوان ذخیره‌سازی ساخت یافته یا Structured Storage مي‌شناسند که مفهومی‌کلی بوده و در‌برگیرنده پایگاه‌هاي داده‌اي رابطه‌اي نیز هست. در سال ۲۰۰۹، یکی از کارمندان Rackspace این عبارت را «باز-معرفی» کرد و از آن برای اشاره به مجموعه‌اي از پایگاه‌هاي داده‌اي غیر‌رابطه‌اي و گسترده در شبکه استفاده کرد که در نقطه مقابل پایگاه‌هاي داده‌اي رابطه‌اي قدیمی مانند IBM DB2, MySQL, Microsoft SQL Server, PostgreSQL, Oracle RDBMS, Informix, Oracle Rdb و… قرار مي‌گرفتند. پس از بروز نیازهای جدید و معرفی تئوری‌هاي مورد نیاز برای پیاده‌سازی چنین پایگاه‌هاي داده‌اي نوظهوری، محصولات مختلفی در این زمینه پا به عرصه وجود نهادند که هر یک از جهاتی مهم بوده و قابلیت‌هاي بسیار سودمندی به همراه دارند. درباره این محصولات در قسمت‌هاي بعدی بیشتر توضيح خواهیم داد. فعالیت‌هاي مرتبط با توسعه پایگاه‌هاي داده‌اي NoSQL در محافل علمی و عملی به شدت افزایش یافت تا جایی که در سال جاری میلادی، کار روی پروژه‌اي با نام UnQL (سرنام Unstructured Query Language) آغاز شده که هدف آن، تدوین استاندارد زبان پرس‌و‌جو در پایگاه‌هاي داده‌اي NoSQL است. این زبان به گونه‌ای طراحی خواهد شد تا به‌جای جدول‌هاي سنتی و سطر و ستون‌هاي داده‌ای، به ترتیب مجموعه‌ها (collection)، اسناد (Documents) و فیلدهای مشخصی را مورد پرس‌و جو قرار دهد. این زبان در اصل مجموعه‌اي ورای SQL به شمار آمده و زبان SQL را مي‌توان نمونه بسیار محدود شده آن به شمار آورد. با این حال، زبان UnQL عبارت‌هاي DDL یا Data Definition Language (عبارت‌هايي مانند CREATE TABLE یا CREATE INDEX)را پوشش نخواهد داد.

اهمیت و کاربرد
عبارت NoSQL یک مفهوم برای مشخص‌سازی یک موج خلاقانه است که در دنیای پایگاه‌هاي داده‌اي در حال وقوع است. با مطرح شدن این مفهوم، طوفانی از تبادل نظر، هیجان و بحث و گفت‌وگو در محافل فنی به راه افتاد که به يقين تا مدت‌ها باقی خواهد ماند. اما چرا NoSQL این همه سروصدا به پا كرده است؟ این مفهوم برای یک توسعه‌دهنده برنامه‌هاي کاربردی چه معنايی دارد؟ همان‌طور که قبلاً نیز ذکر‌شد، زبان SQL و پیاده‌سازی‌هاي مختلف SQL RDBMS (Relational Database Management Systems) مانند MySQL، PostgreSQL، Oracle و… دهه‌هاي متمادی برای تمام نیازهای ذخیره‌سازی و بازیابی داده کاربران و توسعه‌دهندگان یک راه حل اساسی بوده‌اند. اما در سال ۲۰۱۰، نیازمندی‌هايي‌مطرح شده و مورد توجه قرار‌گرفتند که با استفاده از مدل رابطه‌اي سنتی قابل دستیابی نبودند. از آنجا که مسائل جدید به ابزارهای جدید نیاز‌دارند، مجموعه‌اي بزرگ از ابزارها پا به عرصه وجود گذاشته و مورد‌توجه بسیاری قرار‌گرفتند. دسترس‌پذیری بالا، مقیاس‌پذیری‌افقی، قابلیت تکثیر (Replication)، طراحی بدون Schema و قابلیت Map Reduce از جمله زمینه‌هايي هستند که توسط مجموعه‌اي جدید از پایگاه‌هاي داده و تحت عنوان کلی NoSQL در حال توسعه و آزمایش هستند.
برای درک بيشتر اهمیت NoSQL بايد به چالش‌هاي موجود امروزی بر سر راه پایگاه‌هاي داده بيشتر توجه کرد. هم‌اکنون با توسعه فناوري‌هاي مختلف و قابلیت نمونه‌برداری و تولید حجم عظیمی از داده‌ها، امکان ذخیره‌سازی و تحلیل آن‌ها چالشی بزرگ به شمار مي‌آيد.

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

کارایی بسیار بالا در ذخیره‌سازی و ارائه داده‌هاي باینری مانند اسناد PDF و فایل‌هاي MP3، در مقیاس وسیع، یکی از بهترین کاربردهایی است که پایگاه‌هاي داده‌اي NoSQL شایستگی خود را در فراهم‌کردن آن به اثبات رسانده‌اند. یک نمونه مناسب در این زمینه، خدمات Amazon S3 است. با این اوصاف، موارد ذکر شده تنها چالش پیش روی توسعه‌دهندگان و سرویس‌دهندگان نیست. ذخیره‌سازی، مدیریت و بازیابی داده‌هاي گذرا که در بعضی موارد در مقیاس بالایی در برنامه‌هاي کاربردی امروزی تولید مي‌شوند نیز یکی دیگر از چالش‌هاي امروزی است که راه حل مدیریت مناسب آن‌ها را پایگاه‌هاي داده‌اي NoSQL ارائه‌کرده‌اند. این پایگاه‌هاي داده، در مدیریت داده‌هايي نظیر متغیرهای یک Session در وب، قفل‌هاي داده‌اي و آمار کوتاه مدت، جایگاه بسیار‌خوبي کسب کرده‌اند. نمونه مناسبی برای این کاربرد، پایگاه داده‌اي Memcached است. اما نکته‌اي که باید در این میان به آن توجه کرد آن است که یک توسعه‌دهنده، باید برای کاری که مي‌خواهد انجام دهد، ابزار مناسب را انتخاب‌کند. به این معنا که برای بسیاری از کاربردهای معمولی، هنوز پایگاه‌هاي داده‌اي سنتی بهترین راه حل هستند و نباید آن‌ها را تمام شده تصور كرد. همان‌طور که قبلاً نیز گفته شد، پایگاه‌هاي داده‌اي NoSQL برای مواردی خاص‌مناسب هستند که در بالا به آن‌ها اشاره شد و موجب افزایش کارایی‌کل مجموعه نرم‌افزاری مي‌شوند. در بسیاری از موارد، انتخاب یک پایگاه داده NoSQL برای کاربردی خاص موجب افت شدید عملکرد و عدم پایداری مجموعه و قابلیت اطمینان بسیار پایین مي‌شود. به همین دلیل و به علت تعدد ابزارهای توسعه‌داده شده در این زمینه، گاهی اوقات تشخیص محدودیت‌ها و مصالحه‌هايي که باید در استفاده از یک ابزار در‌نظر گرفت، بسیار مشکل شده و انتخاب راه حل مناسب در محیط‌هاي رابطه‌اي یا غیر رابطه‌اي یک یا چند سروری، سردرگم کننده خواهد بود. به همین منظور، یک دیاگرام مناسب برای انتخاب راه حل مناسب توسط ناتان هورست (Nathan Hurst ) بر‌اساس نظریه CAP طراحی شده که در شكل ۱ آن را مشاهده مي‌كنيد.

capTheorem

شکل ۱- دیاگرام انتخاب پایگاه‌هاي داده بر اساس نیازمندی‌ها

 

در این دیاگرام سه گوشه اصلی نشانگر ثبات (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 در بسیاری از شرکت‌هايي که خدمات «وب اجتماعی» ارائه مي‌كنند، به کار گرفته شده و به سرعت در حال گسترش است. این امر به دلیل سختی زیاد و محدودیت‌هاي سیستم‌هاي کاملاً رابطه‌اي در برآورده‌کردن نیازهای داده‌اي آن‌ها است. با نگاهی به نیازمندی‌هاي مقیاس پذیری یکی از شبکه‌های اجتماعی به راحتی مي‌توانیم به این امر واقف شویم. این نیازمندی‌ها عبارتند از:
– ۵۷۰ میلیون مشاهده صفحات در ماه
– آپلود بیش از سه میلیارد عکس در ماه
– پردازش و ارائه بیش از ۱,۲میلیون عکس در ثانیه
– ارائه ۲۵ میلیون نوع محتوا که با استفاده از ۳۰ هزار سرور انجام مي‌پذیرد.
با این نیازمندی‌ها، که به يقين با نیازمندی‌هاي یک دپارتمان حسابداری در دهه ۱۹۵۰ تفاوت‌هاي بسیاری دارد، این شبکه اجتماعی خود را با مجموعه‌اي غنی از ابزارها تطبیق‌داده است که هر کدام یکی از بهترین نمونه‌هاي پیشرو در حوزه پایگاه‌هاي داده‌اي NoSQL محسوب مي‌شوند:
Memcached:
این شبکه اجتماعی با استفاده از هزاران سرور Memcached، ده‌ها ترابایت داده کش‌شده گذرا را در هر لحظه پردازش‌كرده و خدمات مرتبط را به کاربران خود ارائه مي‌كند.
Cassandra که هم اکنون با HBase جایگزین‌شده است:
با استفاده از این پایگاه‌هاي داده‌اي این شبکه اجتماعی عملیات ذخیره‌سازی گسترده طیف وسیعی از داده‌ها بدون داشتن هیچ نقطه خطا دار یا مشکل داری در مجموعه عظیمی از ماشین‌هاي محاسباتی را به بهترین نحو به اجرا در مي‌آورد.
Hadoop و Hive:
با استفاده از این ابزارهای پیشرفته، این شبکه اجتماعی تحلیل داده‌هاي عظیم و تحلیل‌هاي بازاری و تبلیغاتی را با کارایی بالایی به انجام مي‌رساند.

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

پاسخ دهید

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

Time limit is exhausted. Please reload CAPTCHA.