تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

NoSQL چیست؟


۴ مرداد ۱۳۹۹

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

در ادامه خواهیم خواند:

  • دیتابیس NoSQL چیست و چه ویژگی‌هایی دارد؟
  • مزایای استفاده از دیتابیس‌های NoSQL
  • معایب استفاده از دیتابیس‌های NoSQL
  • انواع دیتابیس‌های NoSQL
  • چه زمانی باید از دیتابیس‌های NoSQL استفاده شود؟
  • جمع بندی
معرفی nosql

دیتابیس NoSQL چیست و چه ویژگی‌هایی دارد؟

در اصل NoSQL به non SQL یا غیر رابطه‌ای (non relational) بودن این دیتابیس اشاره دارد که مکانیسمی برای ذخیره و بازیابی داده‌ها ارائه می‌دهد و این داده‌ها، متفاوت با روابط جدولی (tabular relations) در دیتابیس‌های رابطه‌ای، مدل سازی می‌شوند.

این دیتابیس‌ها در اواخر دهه ۱۹۶۰ میلادی به‌وجود آمدند، اما اوایل قرن بیست‌ویکم شهرت پیدا کردند و نام NoSQL را برای این نوع دیتابیس قرار دادند. از دیتابیس‌های NoSQL در برنامه‌های بلادرنگ (real-time) و آن‌هایی که با بیگ‌دیتا کار می‌کنند، استفاده می‌شود و استفاده از این دیتابیس به مرور زمان در حال افزایش است. برخی اوقات NoSQL را Not only SQL می‌نامند تا تایید کنند که این دیتابیس ممکن است از زبان‌های کوئری مشابه SQL پشتیبانی کند.

دیتابیس NoSQL را می‌توان با ویژگی‌های: سادگی در طراحی، مقیاس‌پذیری horizontal با افزایش cluster و کنترل بر روی دسترسی‌ها دانست. ساختار داده‌هایی که در دیتابیس NoSQL ذخیره می‌شوند با ساختار داده‌هایی که به صورت پیش‌فرض در دیتابیس‌های رابطه‌ای مورد استفاده قرار می‌گیرند، متفاوت است و این موضوع باعث می‌شود، عملیات‌ در NoSQL سریع‌تر انجام شوند.

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

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

بیشتر دیتابیس‌های NoSQL فاقد خاصیت ACID transactions یا به عبارت دیگر Atomicity, Consistensy, Isolation, Durabiility هستند اما چند دیتابیس مانند MarkLogic, Aerospike, FairCom c-treeACE, Google Spanner, Symas LMDB و OrientDB در طراحی خود این خاصیت را افزوده‌اند.

5 دلیل برای انتخاب NoSQL
NoSQL

همچنین در اکثر دیتابیس‌های NoSQL، بر اساس مفهوم سازگاری نهایی (eventual consistency)، تغییرهای ایجاد شده در دیتابیس به تمام nodeها فرستاده می‌شود، ممکن است هنگام کوئری زدن به دیتابیس، داده‌های به روز شده، سریعا برگردانده نشوند یا منجر به خواندن داده‌هایی شود که دقیق و صحیح نیستند که این مشکل تحت عنوان stale reads شناخته می‌شود.

همچنین در بعضی سیستم‌های NoSQL مشکل از دست دادن داده‌ها وجود دارد. برخی از سیستم‌های NoSQL هم از مفاهیمی مانند write-ahead logging استفاده می‌کنند تا از رخ دادن این مشکل جلوگیری کنند. سازگاری داده‌ها، در پردازش transactionهای توزیع شده در چندین دیتابیس، یک چالش بزرگ‌تر است. البته باید گفت این مورد در هر دو دیتابیس NoSQL و رابطه‌ای دشوار است.

تعداد کمی سیستم وجود دارد که هم استاندارد X/Open XA و ACID transactionها را برای پردازش transaction توزیع شده، دارا باشند.

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

مزایای بسیاری برای استفاده از دیتابیس‌های NoSQL مانند: MongoDB و Cassandra وجود دارد که مزایای اصلی را می‌توان مقیاس‌پذیری بالا و اطمینان از در دسترس بودن این تکنولوژی به شمار آورد.

  1. مقیاس‌پذیری بالا: دیتابیس‌ NoSQL از sharding برای مقیاس‌پذیری horizontal بهره می‌برد، به این صورت که داده‌ها بر روی چندین ماشین تقسیم می‌شوند اما ترتیب داده‌ها هم حفظ می‌شود. انواع افزایش مقیاس در دیتابیس دو نوع horizontal و vertical هستند. که در نوع horizontal با اضافه کردن تعداد سرورها و در نوع vertical به سرور موجود، منابعی مانند RAM, CPU و … اضاف می‌کنند. افزایش مقیاس به صورت vertical، کار چندان ساده‌ای نیست اما تغییر مقیاس horizontal برای اجرا، آسان است. نمونه‌هایی از دیتابیس‌هایی که به صورت horizontal scaling هستند: MongoDB و Cassandra را می‌توان نام برد. دیتابیس‌های NoSQL به دلیل مقیاس‌پذیری آسان، می‌توانند حجم عظیمی از داده‌ها را مدیریت کنند. هر چه داده‌ها افزایش پیدا می‌کنند، NoSQL مقیاس داده‌ها را می‌سنجد تا از داده‌ها به بهترین شیوه استفاده کند.
  2. اطمینان از در دسترس بودن: این مزیت را می‌توان به‌خاطر ویژگی تکثیر خودکار داده‌ها در NoSQL، دانست و با رخ دادن هر گونه خرابی، داده‌ها به حالت قبلی در دسترس قرار می‌گیرند.
مقایسه SQL و NoSQL، کدام را انتخاب کنیم؟
مقایسه SQL و NoSQL

معایب استفاده از دیتابیس‌های NoSQL

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

  1. Narrow focus: دیتابیس‌های NoSQL با تمرکز بر روی ذخیره داده‌ها ساخته شده‌اند، اما عملکرد (functionality) بسیار کمی را ارائه می‌دهند. دیتابیس‌های رابطه‌ای انتخاب بهتری در زمینه مدیریت transactionها هستند.
  2. متن‌باز بودن: NoSQL یک دیتابیس متن‌باز است و هیچ استاندارد قابل اعتمادی برای این دیتابیس وجود ندارد.
  3. چالش مدیریتی: بیشتر ابزاری که برای کار با بیگ‌دیتا توسعه داده شده‌اند برای این است که مدیران به ساده‌ترین شکل ممکن، داده‌ها را مدیریت کنند. اما این موضوع خیلی هم راحت نیست. مدیریت داده‌ها در NoSQL بسیار پیچیده‌تر از دیتابیس رابطه‌ای است. چالش‌های NoSQL از زمان نصب آن شروع می‌شود و برای کارهای روزمره بسیار گیج کننده است.
  4. نبود رابط کاربری گرافیکی (GUI): ابزارهای گرافیکی مفیدی برای اتصال به دیتابیس NoSQL در فروشگاه‌های نرم‌افزاری موجود نیست.
  5. پشتیبان‌گیری (Backup): نداشتن قابلیت پشتیبان‌گیری از داده‌ها، یکی از نقاط ضعف دیتابیس‌هایی مانند MongoDB است. هیچ روشی برای تهیه نسخه پشتیبان از داده‌ها به شیوه عادی در MongoDB موجود نیست.
  6. اندازه بزرگ اسناد (document): برخی از دیتابیس‌ها مانند: MongoDB و CouchDB داده‌ها را با فرمت JSON ذخیره می‌کنند. این یعنی اسنادی با حجم زیاد، مانند: بیگ‌دیتا، پهنای باند شبکه، سرعت آن و داشتن descriptive key names، حجم اسناد را بیشتر می‌کنند.

انواع دیتابیس‌های NoSQL

انواع دیتابیس‌های NoSQL و نام سیستم‌ دیتابیس‌ها عبارتند از:

  • MongoDB در دسته دیتابیس‌های NoSQL قرار می‌گیرد که داده‌ها به صورت document based ذخیره می‌کند.
  • key value store مانند: Memcached, Redis, Coherence
  • Tabular مانند: Hbase, Big Table, Accumulo
  • Document based مانند: MongoDB, CouchDB, Cloudant
با هاست ابری MongoDB لیارا، پایگاه داده‌تان را در کمترین زمان و با بالاترین امنیت راه‌اندازی کنید.
✅ اتصال سریع و آسان به اپلیکیشن‌ها✅ پشتیبان‌گیری خودکار روزانه✅ امنیت، مقیاس‌پذیری و عملکرد عالی
خرید و راه‌اندازی دیتابیس MongoDB

چه زمانی باید از دیتابیس‌های NoSQL استفاده شود؟

  • در صورت نیاز به ذخیره و بازیابی مقدار زیادی از داده‌ها.
  • ارتباط بین داده‌هایی که ذخیره می‌کنید، مهم نباشد.
  • ساختار داده‌ها به مرور زمان تغییر می‌کند.
  • پشتیبانی از Joins و Constraints در دیتابیس، لازم نباشد.
  • داده‌ها به مرور زمان، افزایش پیدا می‌کنند و باید منظم، مقیاس دیتابیس را بیشتر کنید.

جمع بندی

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

منبع: https://www.geeksforgeeks.org/introduction-to-nosql

به اشتراک بگذارید