NoSQL چیست؟ – معرفی، توضیح کاربردها و مقایسه با SQL
واژه NoSQL از عبارت «Non-SQL» به معنای پایگاه داده غیررابطهای گرفته شده است. NoSQL به نوعی «سامانه مدیریت پایگاه داده» (Database Management System | DBMS) میگویند که برای مدیریت حجم انبوهی از دادههای «بدون ساختار» (Unstructured) و «نیمهساختاریافته» (Semi-Structured) طراحی شده است. برعکس پایگاههای داده سنتی که از جدولها همراه با نماهای از پیشتعیین شده استفاده میکنند، پایگاههای داده NoSQL، مدلهای داده انعطافپذیری را به کار میبرند که قابل سازگار شدن با تغییرات پویای ساختارهای داده هستند. این مدلهای ذخیرهسازی داده میتوانند برای مدیریت حجم انبوه رو به رشد دادهها به صورت افقی گسترش پیدا کنند. به این ویژگی بهاصطلاح مقیاسپذیری افقی گفته میشود. برای مهندسین پایگاه داده لازم است که بدانند NoSQL چیست و با ساختار این نوع از پایگاههای داده آشنا باشند.
در این مطلب از مجله فرادرس میبینیم که NoSQL چیست و چه تفاوتهای با پایگاههای داده معمولی SQL دارد. با نقاط قوت و ضعف آن آشنا شده و بهترین زمانهای استفاده از آن را میشناسیم. برای طراحی نرمافزارهای حرفهای که با حجم انبوهی از دادهها کار میکنند یا ارتباطات بسیار پیچیده و زیادی بین دادههای آنها برقرار است، باید از ساختاری به جز پایگاههای داده رابطهای معمولی استفاده کنیم. به همین دلیل NoSQL به وجود آمده است.
NoSQL چیست؟
پایگاههای داده NoSQL که با نام «Not only SQL» نیز شناخته میشوند، دادهها را با روشی متفاوت از جدولهای رابطهای نگهداری میکنند. پایگاههای داده NoSQL بر اساس نوع دادههای آنها دارای تنوع بسیار زیادی هستند. نوع اصلی این پایگاههای داده شامل «مستند» (Document)، «کلید، مقدار» (Key-Value)، «ستون گسترده» (Wide-Column) و گراف میشود. این پایگاههای داده، الگوهای ذخیرهسازی انعطافپذیری را فراهم کردهاند. همچنین به سادگی با مقیاسهای بزرگ داده و تعداد کاربران زیادتری سازگار میشوند.
پایگاه داده NoSQL چیست؟
پایگاههای داده NoSQL، دادهها را در شکلی متفاوت از پایگاههای داده رابطهای یا RDBMS-ها ذخیره میکنند. با اینکه این پایگاههای داده نیز میتوانند دادههای مشابهی را ذخیره کنند. بنابراین انتخاب بین پایگاههای داده رابطهای و غیررابطهای بسته به احتیاجات خاص پروژه انجام میگیرد.
بر عکس پایگاههای داده سنتی که از جدول برای ذخیره اطلاعات استفاده میکنند، پایگاههای داده NoSQL معمولا دادهها را در ساختارهایی مانند اسناد JSON ذخیره میکنند. این طراحی نیازی به استفاده از الگوهای از پیش تعیین شده ندارد. در نتیجه مقیاسپذیری سریعتری پیدا کرده و میتوانند مجموعه دادههای غیرساختاریافته بزرگ را نیز مدیریت کنند.
NoSQL نوعی از پایگاههای داده توزیع شده و قابل اتکا است. در این روش، دادهها کپی شده و در چندین پایگاه داده مختلف ذخیره میشوند. بنابراین حتی اگر بعضی از سرورها از سرویس خارج شوند نیز میتوان از در دسترس بودن پایگاه داده مطمئن شد.
در حال حاضر، صنایع و تجارتهای مختلف نیاز به مدیریت حجم زیاد دادهها با سرعت بالا دارند. همچنین این سازمانها به توانایی مقیاسپذیری بالا برای پشتیبانی از سایتهای مدرن، اپلکیشنهای تحت وب و موبایل نیز احتیاج دارند. پایگاههای داده NoSQL به دلیل سرعت زیاد، مقیاسپذیری و سادگی در استفاده، بسیار محبوب شدهاند. بهخصوص در حوزههای «کلان داده» (Big Data) و «رایانش ابری» (Cloud Computing) استفاده از این نوع از پایگاههای داده گسترش بسیار زیادی پیدا کرده است.
آموزش انواع پایگاه داده با فرادرس
همینطور که دیدیم، دو دسته پایگاه داده کلی وجود دارند. پایگاههای داده SQL-محور و پایگاههای داده NoSQL. در این مطلب بررسی میکنیم که پایگاه داده NoSQL چیست و چه کاربردهایی دارد. سپس با مزایا و معایب آن آشنا میشویم. از طرف دیگر SQL به نسبت برای برنامهنویسان آشناتر است. زیرا در آموزشگاهها، مدارس و دانشگاه اولین پایگاه دادهای است که دانشجویان با آن آشنا میشوند. هر کدام از این گرایشهای مختص ذخیره داده، دارای نرمافزارها و سیستمهای مختلفی هستند. فرادرس تلاش کرده که برای انواع نرمافزارهای مرتبط با هر دو دسته کلی، فیلمهای آموزشی با کیفیت تولید کند.
زبان کوئری نویسی SQL مورد استفاده پایگاههای داده متنوعی است. در همه این پایگاههای داده اکثر توابع SQL با سینتکس شبیه هم استفاده میشوند. اما هر کدام از پایگاههای داده NoSQL، زبان کوئرینویسی مختص به خود را دارند. هر کدام از این پایگاههای داده، بسته به هدفی که از تولیدشان وجود دارد، برای کار در سناریوهای و با سختافزارهای متنوعی طراحی شدهاند. در پایین این بخش، فیلمهای آموزشی مربوط به چند مورد از این پایگاههای داده را معرفی کردهایم. با کلیک بر روی تصویر بالا به صفحه اصلی این مجموعه داده هدایت شده و از فیلمهای بیشتری نیز دیدن کنید.
- فیلم آموزش پایگاه داده MySQL در فرادرس
- فیلم آموزش رایگان پایگاه داده کلیک هاوس ClickHouse دوره مبانی و مقدمات با فرادرس
- فیلم آموزش مقدماتی «آپاچی کاساندرا» Apache Cassandra در فرادرس
- فیلم آموزش پایگاه داده مونگو دی بی MongoDB برای تحلیل، مدل سازی و پردازش داده ها با فرادرس
- فیلم آموزش پایگاه داده پیشرفته دوره جامع و کاربردی در فرادرس
مقایسه پایگاه داده NoSQL در مقابل SQL
«زبان کوئرینویسی ساختاریافته» (Structured Query Language | SQL) بیشتر از NoSQL به کار برده میشود. برای اینکه ببینیم تفاوت بین پایگاههای داده SQL با NoSQL چیست، بهتر است که در ابتدا با SQL به عنوان زبان برنامه نویسی آشنا شویم. این زبان کوئرینویسی برای فراخوانی اطلاعات خاصی از درون پایگاه داده جدولبندی شده به کار برده میشود.
NoSQL به جای SQL
در حالی که NoSQL به عنوان جایگزین SQL عرضه شده بود اما هیچ وقت جایگزین پایگاههای داده SQL محور نشد. برای مثال فرض کنیم که در حال مدیریت سفارشات خُردهفروشی شرکتی هستیم. در مدلهای رابطهای، جدولهای مجزایی برای مدیریت دادههای مشتریان، دادههای سفارشات و دادههای مربوط به محصولات به صورت جداگانه وجود دارند. این جدولها با استفاده از کلید عمومی و منحصر بهفردی مانند «شماره شناسایی مشتری» یا «شماره شناسایی سفارش» به یکدیگر متصل میشوند.
با اینکه این روش برای ذخیرهسازی و فراخوانی سریع دادهها روش بسیار خوبی است، اما به میزان چشمگیری از حافظه نیز استفاده میکند. در زمان نیاز به افزودن حافظه بیشتر، پایگاههای داده SQL را فقط میتوان به صورت عمودی گسترش داد، نه افقی. به این معنا که توانایی مدیران پایگاه داده فقط محدود به افزودن فضای حافظه بیشتر به سختافزار در دسترس است. در نتیجه، مقایسپذیری عمودی، میزان داده قابل ذخیره و بازیابی توسط شرکت را محدود میکند.
مقیاس پذیری افقی NoSQL
در مقابل با SQL، پایگاههای داده NoSQL غیر رابطهای هستند. یعنی اینکه این پایگاههای داده نیازی به برقرار کردن ارتباط بین جدولها ندارند. این نوع پایگاههای داده با استفاده از پارتیشنبندی درونی و مدیریت کوئریها به شکل بسیار کارآمدتر و با دسترسپذیری بیشتر، برای مقیاسپذیری افقی طراحی شدهاند. اگر سرور پایگاه دادهای به تنهایی برای نگهداری همه دادههای برنامه یا مدیریت کوئریها کافی نباشد، محیط کاری را میتوان بر روی دو یا چند سرور مختلف تقسیم کرد. در نتیجه شرکتها میتوانند دادههای خود را به شکل افقی گسترش دهند. به روش افزایش حجم پایگاه داده با استفاده از سرورهای موازی یکدیگر، مقیاسپذیری افقی گفته میشود.
از آنجا که هر نوع پایگاه دادهای دارای مزایای منحصربهفرد است، شرکتهای نرمافزاری به شکل رایجی از هر دو نوع پایگاههای داده NoSQL و رابطهای در اپلکیشنهای خود به صورت همزمان استفاده میکنند. امروز فراهم کنندگان فضای ابری برای ذخیره دادهها از هر دو نوع پایگاه داده SQL و NoSQL در کنار هم استفاده میکنند. در نتیجه هر کسی با توجه به هدفی که از طراحی برنامههای خود دارد، نوع خاصی از پایگاه داده را انتخاب میکند.
انواع پایگاه داده NoSQL چیست؟
NoSQL برای مدیریت دادهها در روشهای مختلف، گزینههای گوناگونی را ارائه میدهد. از طریق ارائه ساختارهای داده متنوع، NoSQL را میتوان در حوزههایی مانند تحلیل داده، مدیریت کلان دادهها، شبکههای اجتماعی و توسعه اپلیکیشنهای موبایل به کار برد.
پایگاههای داده NoSQL، اطلاعات را فقط با استفاده یکی از ۵ مدل اصلی ذخیرهسازی دادهها به روش زیر، مدیریت میکنند.
- «کلید-مقدار» (Key-Value)
- «مستندسازی» (Document)
- «ستون گسترده» (Wide-Column)
- «گراف» (Graph)
- «داخل حافظه» (In-Memory)
یکی از روشهای بالا مدل ذخیرهسازی «ستون گسترده» (Wide-Column) است. این مدل در کار با کلاندادهها بسیار خوب عمل میکند. کلان داده یکی از تازهترین حوزههای مطرح شده در حوزه فناوری اطلاعات به شمار میرود. این حوزه به شدت در حال گسترش و پیشرفت بوده و در شاخههای متفاوتی از علم کاربرد پیدا کرده است. یکی از بهترین گزینهها برای کار بر روی کلاندادهها نرمافزار مدیریت پایگاه داده «آپاچی کاساندرا» (Apache Cassandra) است. برای آموزش این نرمافزار میتوانید فیلم آموزش مقدماتی آپاچی کاساندرا Apache Cassandra را از فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
در ادامه این بخش از مطلب، تمام مدلهای بالا را به ترتیب بررسی کرده و توضیح دادهایم.
ذخیره سازی داده ها به روش Key-value
این روش، به طور معمول به عنوان سادهترین روش ذخیرهسازی اطلاعات در پایگاههای داده NoSQL شناخته میشود. این مدل از دادههای بدون شکل، طوری طراحی شده که اطلاعات را با ساختار جفتهای کلید-مقدار در دیکشنری، ذخیره کند. یعنی هر عنصری در این مدل، دارای کلید و مقدار است.
- کلید: کلیدها میتوانند مانند چیزهایی باشند که در پایگاههای داده SQL پیدا میشود. برای مثال میتوان به شماره شناسایی سبد خرید مشتریها اشاره کرد.
- مقدار: در حالی که مقدار، آرایهای از دادههاست. مانند هر چیز مجزایی که در آن سبد خرید کاربر وجود دارد.
پایگاه داده کلید-مقدار برای استفاده در وظایفی مانند گرفتن و ذخیرهسازی اطلاعات هر سشن کاربر - مانند همین سبد خرید - استفاده میشود. اگرچه این مدل از پایگاههای داده NoSQL در زمان احتیاج به فراخوانی چندین رکورد به صورت همزمان، گزینه ایدهآلی نیستند. به عنوان مثالهایی برای پایگاههای داده اوپن سورس با رویکرد ذخیرهسازی کلید مقدار میتوان از Redis و Memcached نام برد.
ذخیره سازی داده ها به روش Document
همینطوری که از نام این روش مشخص است، پایگاههای داده Document، از مستندسازی دادهها برای ذخیره کردن آنها استفاده میکنند. یعنی در این روش به دادهها به چشم سند نگاه میشود. این نوع از پایگاههای داده در مدیریت دادههای نیمهساختاریافته و دادههایی مفید هستند که به طور معمول با فرمتهای JSON یا XML یا BSON ذخیره شدهاند. این مسئله باعث میشود که دادهها به صورت سازماندهی شده برای اپلیکیشنها نگهداری شوند. همچنین باعث کاهش نیاز به ترجمه یا پردازش دادهها قبل از استفاده نیز میشود. از آنجا که طرحهای مربوط به دادهها نیازی به همسان شدن با باقی اسناد ندارند - شاید در طرحی از «name» استفاده شود و در طرح دیگر از «first_name» - توسعهدهندگان انعطافپذیری بیشتری را بدست میآورند. اگرچه این مسئله در تبادلهای پیچیده اطلاعات شاید منجر به بروز مشکل و خرابی دادهها شود.
کاربردهای بسیار رایج ذخیرهسازی دادهها به روش Document شامل سامانههای مدیریت محتوا و پروفایلهای کاربری میشوند. به عنوان مثالی از پایگاههای داده «مبتنی بر سند» (Document-Oriented) میتوان به MongoDB اشاره کرد.
ذخیره سازی داده ها به روش Wide-Column
این نوع از پایگاههای داده، اطلاعات را در ساختار ستون مانندی ذخیره میکنند. در نتیجه کاربران، بدون تلف کردن فضای حافظه برای نگهداری از دادههای نامربوط، فقط میتوانند به دادههای ستونهای خاص مورد نیاز خود دسترسی داشته باشند. این پایگاه داده سعی میکند به نقاط ضعف مدلهای ذخیرهسازی اطلاعات به روشهای کلید-مقدار و Document بپردازد. اما مدیریت این روشهم پیچیدهگی بیشتری دارد. در نتیجه استفاده از این تکنیک برای تیمها یا پروژههای جدید توصیه نمیشود. به عنوان مثالهایی از پایگاههای دادهای اوپن سورسی که از این تکنیک استفاده میکنند میتوان به Apache HBase و Apache Cassandra اشاره کرد.
- Apache HBase: این پایگاه داده بر اساس «سامانه فایلهای توزیعشده هادوپ» (Hadoop Distributed Files System | HDFS) ساخته شده که روشی را برای ذخیرهسازی مجموعه دادههای کمتراکم یا اسپارس فراهم کرده است. این روش، کاربرد بسیار گستردهای در اپلکیشنهای مربوط به «کلان دادهها» (Big Data) دارد.
- Apache Cassandra: از طرف دیگر، پایگاه داده Apache Cassandra برای مدیریت مقدارهای بزرگ از دادههایی طراحی شده است که بر روی چندین سرور مختلف پراکندهاند. همچنین از خوشهبندیهایی پشتیبانی میکند که چندین دیتاسنتر بزرگ را دربرمیگیرند. این پایگاه داده برای استفاده در طیف گستردهای از کاربردهای متنوع، مانند وبسایتهای مربوط به شبکههای اجتماعی و عملیات تحلیل داده بیدرنگ به کار برده میشود.
ذخیره سازی داده ها به روش Graph
این مدل برای ذخیرهسازی معمولا دادهها را درون ساختار گراف دانش، ذخیره میکند. عناصر داده به عنوان گرهها، لبهها و ویژگیها ذخیره میشوند. هر شیء، مکان یا انسانی میتواند یک گره باشد. لبهها رابطههای بین گرهها را تعریف میکنند. با کمک این ساختار میتوان ارتباطات بین دادهها را به شکل واضحی نمایش داد. پایگاههای داده گراف برای ذخیرهسازی و مدیریت شبکهای از اتصالات بین عناصر مختلف در گراف به کار برده میشوند. نرم افزار Neo4j پایگاه دادهای بر مبنای گراف است که توسط زبان جاوا طراحی شده. این پایگاه داده، جامعه کاربری فعالی دارد که معمولا نسخههای جدیدتر را به صورت اوپن سورس عرضه میکنند. همچنین نسخههای لایسنسدار این نرمافزار وجود دارند که با خرید آنها میتوان از امکاناتی مانند پشتیبانگیری آنلاین و دسترسیپذیری بالاتر نیز استفاده کرد.
ذخیره سازی داده ها به روش In-memory
این نوع پایگاه داده NoSQL، مانند نرم افزار solidDB از شرکت IBM، دادهها را بهجای نگهداری در دیسک، درون حافظه اصلی کامپیوتر ذخیره میکند. این پایگاه داده دسترسی بسیار سریعتری به دادهها نسبت به پایگاههای داده سنتی و دیسکمحور ایجاد میکنند.
مثال هایی از پایگاه های داده NoSQL
شرکتهای زیادی وارد حوزه طراحی و تولید پایگاههای داده NoSQL شدهاند. علاوه بر نرمافزارها و شرکتهایی که در بالا مورد اشاره قرار گرفتند، چند مورد از پایگاههای داده مشهور NoSQL را در فهرست زیر معرفی کردهایم.
- Apache CouchDB: پایگاه داده متن بازی که بر اساس ساختار مبتنی بر سند به شکل JSON کار کرده و از زبان جاوا اسکریپت به عنوان زبان کوئرینویسی خود استفاده میکند.
- Elasticsearch: پایگاه داده مبتنی بر سندی که شامل موتور جستوجوی Full-Text است.
- Couchbase: روش کار این پایگاه داده بر اساس مدلهای کلید-مقدار و به شکل مبتنی بر سند است. در نتیجه به توسعهدهندگان برای ساخت اپلیکیشنهای پاسخگو و انعطافپذیر کمک میکند. این اپلکیشنها برای انواع «رایانش مرزی» (Edge Computing) و Cloud به کار برده میشوند.
- MongoDB: نرمآفزار MongoDB سیستم پایگاه داده متنبازی است که از مدل داده و زبان پرسوجوی «غیرساختاری» (Non-Structured) استفاده میکند. در حال حاضر، MongoDB یکی از قویترین بانکهای اطلاعاتی و سیستمهای NoSQL به حساب میآید. برای آشنایی و کسب آموزشهای اولیه کار با این پایگاه داده میتوانید مطلب MongoDB چیست؟ راهنمای شروع با دیتابیس مانگو دی بی را از مجله فرادرس مطالعه کنید.
مزایا و معایب استفاده از NoSQL چیست؟
این نوع از پایگاه داده که از جدول برای نگهداری اطلاعات استفاده نمیکند، دارای مزایایی است که باعث شده در اپلیکیشنهای بسیار خاصی جایگزین استفاده از پایگاههای داده SQL محور شود. اما از طرفی معایبی هم دارد که اجازه نداده بتوانند همه جا خود را تثبیت کرده و استفاده از پایگاههای داده سنتی را منسوخ کند.
در این بخش از مطلب ابتدا میبینیم که مهمترین مزایا و معایب استفاده از NoSQL چیست. در بخش بعد هم به بررسی معایب این نوع از پایگاه داده پرداختهایم.
مزایای استفاده از NoSQL چیست؟
کارکردن با پایگاههای داده NoSQL مانند MongoDB و Cassandra دارای مزایای زیادی است. اصلیترین این مزایا مقیاسپذیری و دسترسیپذیری بالای دادهها است.
در فهرست زیر مهمترین مزایای استفاده از NoSQL را معرفی کرده و برای هر کدام توضیح کاملی را نوشتهایم.
- «مقیاسپذیری بالا» (High scalability): پایگاههای داده NoSQL برای مقیاسپذیری افقی از شاردینگ و پارتیشنبندی اختصاصی خود استفاده میکنند. به پارتیشنبندی دادهها و قراردادن تکههای مختلف داده در چندین ماشین یا سرور مختلف به روشی که نظم و ترتیب دادهها حفظ شود، شاردینگ گفته میشود. مقیاسپذیری عمودی به معنای آن است که برای ذخیرهسازی بیشتر دادهها به کامپیوتر موجود، منابع سختافزاری بیشتری اضافه کنیم. در حالی که مقیاسپذیری افقی به معنای اضافه کردن کامپیوترها یا سرورهای بیشتر برای مدیریت دادهها است. پیادهسازی مقیاسپذیری عمودی چندان ساده نیست اما پیادهسازی مقیاسپذیری افقی به شکل سادهتری انجام میشود. به عنوان مثالهایی از پایگاههای داده با توانایی مقیاسپذیری افقی میتوان به MongoDB و Cassandra اشاره کرد. پایگاه داده NoSQL میتوانند حجم انبوهی از دادهها را مدیریت کنند. این توانایی بخاطر مقیاسپذیری بالای این نوع از پایگاههای داده است. یعنی با بیشتر شدن دادهها پایگاه داده NoSQL هم به منظور مدیریت هرچه کار آمدتر به صورت خودکار، مقیاس خود را گسترش میدهد.
- «انعطافپذیری» (Flexibility): پایگاههای داده NoSQL برای مدیریت دادههای غیرساختاریافته و نیمهساختاریافته طراحی شدهاند. به این معنا که این پایگاههای داده میتوانند تغییرات را به صورت خودکار بر روی مدل داده اعمال کنند. در نتیجه پایگاههای داده NoSQL گزینه مناسبی برای اپلیکیشنهایی شدهاند که احتیاج به مدیریت نیازمندیهای متغیر دادهها در طول زمان دارند.
- «دسترسیپذیری بالا» (High availability): ویژگی «تکثیر خودکار» (Auto Replication) پایگاههای داده NoSQL باعث دسترسیپذیری بالای آنها میشود. زیرا هر وقت که اشکالی در کار باشد، دادهها به صورت خودکار خود را در حالت ثابتی کپی میکنند. این کار به دسترسی ثابت و بدون امکان بروز خطا به دادهها کمک میکند.
- «مقیاسپذیری» (Scalability): پایگاههای داده NoSQL به میزان زیادی مقیاسپذیر هستند. به این معنا که آنها میتوانند حجم انبوهی از دادهها و ترافیک را بهسادگی مدیریت کنند. این ویژگی باعث شده که NoSQL به گزینه مناسبی برای استفاده در اپلیکیشنهایی تبدیل شود که با حجم انبوهی از دادهها در ترافیک بالا سروکار دارند.
- «کارآمدی» (Performance): همینطور که اشاره شد، پایگاههای داده NoSQL برای مدیریت حجم بسیار زیاد داده و ترافیک شلوغ، طراحی شدهاند. به این معنا که آنها در مقایسه با پایگاههای داده سنتی و رابطهای میتوانند کارایی بسیار بیشتری را ارائه دهند.
- «مقرونبهصرفه بودن» (Cost-effectiveness): پایگاههای داده NoSQL، اغلب اوقات نسبت به پایگاههای داده سنتی رابطهای مقرونبهصرفهتر هستند. زیرا این نوع از پایگاههای داده به طور معمول پیچیدگی کمتری داشته و احتیاج زیادی به سختافزار و نرمافزارهای گرانبها ندارند.
- «چابکی» (Agility): این پایگاههای داده برای استفاده در فرایند توسعه چابک نرمافزار، گزینه بسیار مناسبی هستند.
معایب استفاده از NoSQL چیست؟
بعد از شمردن مزایای این پایگاه داده لازم است که ببینیم معایب استفاده از پایگاه داده NoSQL چیست. دانستن معایب تکنولوژیها همیشه به انتخاب بهتر در زمان فرایند توسعه نرمافزار یا اجرای پروژهها کمک بسیار زیادی میکند.
- کمبود استانداردسازی: انواع مختلفی از پایگاههای داده NoSQL وجود دارند، که هر کدام نقاط قوت و ضعف منحصر به خود را دارد. این کمبود استانداردسازی میتواند فرایند انتخاب پایگاهداده مناسب را برای اپلیکیشنهای مشخص، مشکل کند.
- عدم پیروی کامل از قواعد ACID: پایگاههای داده NoSQL به شکل کامل از قواعد ACID پیروی نمیکنند. به این معنا که این پایگاههای داده ثبات، یکپارچگی و ماندگاری دادهها را تضمین نمیکنند. این مسئله میتواند برای بعضی از اپلیکیشنها که به تضمین محکمی درباره ثبات دادهها نیاز دارند، به مشکل تبدیل شود . برای مثال میتوان به اپلیکیشنهای بانکداری اشاره کرد.
- تمرکز در حوزه محدود: از آنجا که پایگاههای داده NoSQL با هدف اصلی ذخیرهسازی داده طراحی شدهاند، اما کارآمدی محدودی را ارائه میدهند. در نتیجه میتوان گفت که این پایگاههای داده بیشتر بر روی حوزههای محدودی تمرکز کردهاند. بنابراین در بخشهای مربوط به مدیریت انتقال دادهها پایگاههای داده رابطهای نسبت به NoSQL-ها گزینه بهتری هستند.
- اوپن سورس: NoSQL-ها پایگاههای داده اوپن سورس هستند. بنابراین هنوز استاندارد قابل اتکایی برای پایگاههای داده NoSQL به وجود نیامده است. به عبارت دیگر دو سامانه پایگاه دادهای NoSQL به احتمال زیاد با یکدیگر مساوی نیستند.
- عدم پشتیبانی از کوئریهای پیچیده: پایگاههای داده NoSQL با هدف مدیریت کوئریهای پیچیده طراحی نشدهاند. به این معنا که استفاده از این پایگاههای داده برای اپلیکیشنهای نیازمند به گزارشگیریهای پیچیده یا تحلیل پیچیده دادهها گزینه مناسبی نیست.
- نابالغ بودن: پایگاههای داده NoSQL، نسبتا جدید هستند و هنوز به بلوغ پایگاههای داده سنتی رابطهای نرسیدهاند. در نتیجه استفاده از این پایگاههای داده منجر به امنیت کمتر و قابلیت اتکاپذیری کمتر برنامه نسبت به پایگاههای داده سنتی میشود.
- چالشهای مدیریتی: هدف اصلی از استفاده ابزارهای مربوط به کلاندادهها، مدیریت تا حد ممکن سادهتر حجم انبوهی از دادهها است. اما این کار خیلی هم ساده نیست. مدیریت دادهها در NoSQL نسبت به پایگاههای داده رابطهای بسیار پیچیدهتر است. به طور خاص، پایگاههای داده NoSQL به دلیل فرایند سخت نصب در سیستم، مشهور هستند. در ضمن استفاده روزانه از این پایگاههای داده سردرگم کنندهتر نیز هست.
- رابط کاربری گرافیکی وجود ندارد: ابزارهای مربوط به رابط کاربری گرافیکی «GUI» به صورت رایج در بازار وجود ندارند.
- پشتیبانگیری: پشتیبانگیری یکی از بزرگترین نقاط ضعف بعضی از پایگاههای داده NoSQL مانند MongoDB است. پایگاه داده MongoDB هیچ رویکردی برای پشتیبانگیری از دادهها به شیوه منسجم ندارد.
- اندازه بزرگ مستندات: بعضی از سامانههای پایگاه دادهای مانند MongoDB و CouchDB دادهها را به شکل JSON ذخیره میکنند. یعنی اینکه سندهای ساخته شده اندازه بسیار بزرگی دارند. این مسئله میتواند باعث بروز مشکلاتی در کار با «کلاندادهها» (Big Data)، پهنای باند شبکه و سرعت سیستم شود. همینطور استفاده از نامهای توصیفی و طولانی برای کلیدها نیز میتواند اندازه سندها را بزرگتر نیز بکند. در نتیجه روند کلی کار کندتر نیز خواهد شد.
آموزش پایگاه داده SQL Server
اگر بخواهیم بدانیم که خواستگاه NoSQL چیست، به طور خلاصه باید گفت که برای برطرف کردن کاستیهای SQL به وجود آمده است. در این مطلب درباره NoSQL صحبت کردهایم و چند مورد از پایگاههای دادهای پیرو این رویکرد را معرفی کردیم. اما در کنار آن لازم است که درباره SQL هم اطلاعات کافی داشته باشیم. SQL یا «زبان پرس و جوی ساختاریافته» (Structured Query Language)، زبانی است که برای مدیریت اطلاعات در پایگاههای داده رابطهای استفاده میشود. یکی از مشهورترین پایگاههای داده رابطهای که از SQL برای مدیریت اطلاعات استفاده میکنند، نرمافزار SQL Server است. در پایین چند مورد از فیلمهای آموزش SQL Server در فرادرس را معرفی کردهایم.
- فیلم آموزش کار با پایگاه داده اس کیو ال سرور SQL Server در فرادرس
- فیلم آموزش پروژه محور SQL Server درباره ساخت دیتابیس فروشگاه از صفر تا صد با فرادرس
- فیلم آموزش کوئری نویسی پیشرفته در SQL Server با فرادرس
- فیلم آموزش پروژه محور، ایجاد ویو سفارش فروشگاهی با SQL Server در فرادرس
- فیلم آموزش داکر با پایتون Python و SQL Server همراه با حل مثال های عملی فرادرس
در صورت تمایل با کلیک بر روی تصویر زیر، به صفحه اصلی این مجموعه آموزشی هدایت شده و از سایر فیلمهای آموزشی نیز دیدن کنید.
کاربردهای NoSQL چیست؟
ساختار و نوع پایگاه داده NoSQL که انتخاب میکنیم بسته به روش استفادهای دارد که سازمان برای اجرای پروژه برگزیده است. در این بخش از مطلب، چند مورد از کاربردهای خاص انواع گوناگون پایگاه داده NoSQL را فهرست کردهایم.
- مدیریت ارتباطات بین دادهها: مدیریت انبوه دادهها و ارتباطات بین آنها به طور معمول با استفاده از پایگاههای داده NoSQL گرافمحور انجام میشود. از این جمله میتوان به «موتورهای توصیهگر» (Recommendation Engines)، «گرافهای دانش» (Knowledge Graphs)، اپلیکیشنهای کشف تقلب و شبکههای اجتماعی اشاره کرد. در چنین سیستمهایی ارتباطات زیادی با استفاده از انواع مختلف دادهها بین مردم شکل میگیرد.
- «عملکرد با تاخیر کم» (Low-latency performance): بازیهای ویدئویی، اپلیکیشنهای ورزش خانگی و تکنولوژیهای تبلیغاتی، به دلیل خروجی بسیار بالا، نیاز به مدیریت دادهها با سرعت بسیار زیادی دارند. چنین زیرساختهایی باعث ارتقا تجربه کاربری مصرفکنندگان سیستم میشود. این سیستمها در سامانههایی برای بهروزرسانی سریع مناقصههای بازار یا انتخاب و نمایش سریع مرتبطترین تبلیغات بازرگانی به کار برده میشوند. اپلکیشنهای تحت وب، نیاز به پایگاههای NoSQL با رویکرد In-Memory دارند. به این طریق سرعت پاسخگویی آنها نسبت به حافظههای دیسکمحور، به میزان چشمگیری افزایش پیدا کرده و افزایشهای ناگهانی مراجعان به آنها بدون تاخیر و به بهترین شکل ممکن مدیریت میشود.
- مقیاسپذیری در حجم زیاد دادهها: سامانههای تجارت الکترونیک به توانایی مدیریت افزایش ناگهانی کاربری نیاز دارند. شاید برای فروش یکروزه یا فروش در فصلهای تعطیلات میزان مراجعان به طرز ناگهانی افزایش پیدا کند. برای چنین سیستمهایی اغلب اوقات از پایگاههای داده کلید-مقدار استفاده میشود. زیرا ساختار سادهای که این نوع از پایگاههای داده دارند به سادگی و در طول مدت ترافیکهای سنگین وبسایت، قابلیت مقیاسپذیری زیادی دارد. این چابکی نرمافزار برای مواردی مانند استفاده در بازیهای کامپیوتری، تکنولوژیهای تبلیغاتی و اپلیکیشنهای مربوط به «اینترنت اشیا» (Internet of Things | IoT) بسیار ارزشمند است.
میکروسرویس ها و پایگاه های داده NoSQL
در این قسمت از مطلب میبینیم که برای حل مشکلات مربوط به میکروسرویسها راهحل NoSQL چیست. احتیاج کمپانیهای بزرگ برای پیادهسازی میکروسرویسهای بدون تاخیر و با قابلیت مقیاسپذیری بالا روزبهروز بیشتر میشود. در نتیجه این شرکتهای بزرگ به دنبال پیدا کردن بهترین پایگاه داده برای استفاده توسط اپلیکیشنهای مختلف خود هستند.
این شرکتهای بزرگ متوجه شدهاند که استفاده از یک پایگاه داده رابطهای به شکل انحصاری، برای تمام اجزای سیستم باعث رویدادن محدودیتهای خاصی میشود. بهخصوص وقتی که برای بعضی از بخشهای سیستم جایگزینهای مناسبتری هم به وجود آمده باشند. در این شرایط میکروسرویسها به عنوان گزینه جذابی در نظر گرفته میشوند. میکروسرویسها با دوری کردن از ذخیرهسازی مجزا و اشتراکی دادهها چنین مشکلاتی را حل میکنند. در عوض، سامانه تولید شده دارای تعداد زیادی از بخشهای کوچک و مجزا از هم است که هر کدام مدل داده و پایگاه داده مخصوص به خود را دارند. این سرویسها با استفاده از API gateway-ها و پلتفرمهای یکپارچهسازی داده « iPaaS» با یکدیگر کار میکنند.
الگوی استفاده از چندین پایگاه داده مختلف در یک اپلیکیشن را به نام «Polyglot Persistence» نیز میشناسند. وجود این ویژگی به باز شدن فضای رشد و تقاضا در بازار برای عرضه پایگاههای داده NoSQL کمک کرد. در حال حاضر، توسعهدهندگان میتوانند از پایگاههای داده درست برای هر میکروسرویس استفاده کنند، بدون اینکه نیاز داشته باشند همه سرویسها را در فضای کاری «پایگاه داده رابطهای» جداگانهای راهاندازی کنند.
جمعبندی
برای جمع بندی باید بگوییم که پایگاه داده NoSQL چندین مزیت مختلف نسبت به پایگاههای داده سنتی رابطهای ارائه داده است. به عنوان مثال میتوان به مقیاسپذیری بیشتر، انعطافپذیری و مقرونبهصرفه بودن اشاره کرد. هرچند که این نوع از پایگاههای داده دارای نقاط ضعف مختص به خود نیز هستند. به عنوان مثال میتوانیم به عدم استانداردسازی، پیروی نکردن از قواعد ACID و عدم پشتیبانی از کوئریهای پیچیده اشاره کنیم. در زمان انتخاب پایگاه داده برای انجام پروژه خاص، بسیار مهم است که مزیتها و نقاط ضعف پایگاههای مورد نظر را با دقت بسنجیم.
در این مطلب از مجله فرادرس با پایگاههای داده NoSQL آشنا شدیم. در ابتدا به درک تفاوت SQL و NoSQL پرداختیم و سپس دیدیم که در مسئله ذخیرهسازی دادهها انواع رویکردهای NoSQL چیست. با مزایا و معایب این نوع از پایگاههای داده آشنا شدیم. در نهایت هم دیدیم که مهمترین دلایل استفاده از NoSQL چیست و چرا در بعضی از اپلیکیشنها به صورت همزمان از چندین پایگاه داده مختلف استفاده میشود.