خانه مهندسی داده آشنایی با انواع پایگاه داده NoSQL و ویژگی های آن مهندسی داده NoSQL نوشته شده توسط: وحید امیری تاریخ انتشار: ۱۵ مهر ۱۳۹۷ آخرین بروزرسانی: ۱۱ شهریور ۱۴۰۳ زمان مطالعه: 11 دقیقه ۵ (۱) انواع پایگاه داده NoSQL در دسترس قرار دارند که میتوان از مزیتهای آنها شامل مقیاسپذیری، کارایی مناسب، انعطافپذیری و توسعه سریع آنها به بهترین شکل استفاده کرد. در گذشته، به بررسی کامل سیستم مدیریت پایگاه داده رابطه ای (RDBMS) پرداختهایم و اکنون در این مطلب، قصد داریم نوع دیگری از دیتابیسها، یعنی NoSQL Database ها را موردتوجه شما قرار دهیم. محبوبیت رو به رشد انبوه اپلیکیشنهای وب، مانند فیسبوک، توییتر و گوگل، که مقدار زیادی داده را ذخیره، تجزیهوتحلیل میکنند، نیازهای جدید را در زمینه ذخیره اطلاعات امروزی مطرح خواهد کرد. مدل سنتی پایگاه دادههای رابطهای با تمامی مزایا و معایب آن، لزوماً پاسخگوی دادههای کلان تجاری و برنامههای تحت وب نیست. به همین دلیل، پایگاه داده جدیدی با معماری کاملاً متفاوت تحت عنوان NoSQL ، پا به عرضه وجود گذاشته است و علاوهبر رفع برخی از نواقص مدل رابطهای، برای سیستمهای پایگاه داده، قابل گسترش و توزیعشده، امکانات جدیدی را برای سیستمها معرفی کرده است. پایگاه داده NoSQL چیست؟ پایگاه داده NoSQL برگرفته از واژه Not Only SQL است و ساختار متفاوتی در مقایسه با دیتابیسهای رابطهای دارا است. برخلاف دیتابیسهای سنتی که دادهها در سطر و ستونهای جداول ذخیرهسازی میشوند، در انواع پایگاه داده NoSQL ، ذخیرهسازی دادهها، انعطافپذیری بیشتری دارد. در این نوع Database، دادهها بر اسکیماهای منعطف اکتفا میکنند و میتوان آنها را در قالب فرمتهای مختلف، ازجمله داکیومنت (JSON)، زوجهای کلید – مقدار (Key-Value Pairs)، گرافها و Wide-Column Store ها ذخیرهسازی کرد. بهطور کلی، میتوان با افزایش سرور به سیستم، دیتابیسهای NoSQL را بهصورت افقی Scale کرد. این ویژگی برای رسیدگی به دیتاستهای وسیع مناسب خواهد بود. دلایل اهمیت پایگاه داده NoSQL چیست؟ برای درک اهمیت انواع پایگاه داده NoSQL باید به چالشهای موجود امروزی بر سر راه پایگاههای داده بیشتر توجه کرد. درحال حاضر، با توسعه فناوریهای مختلف، ازجمله اینترنت اشیا (IOT)، قابلیت دریافت حجم عظیمی از دادهها، ذخیرهسازی و تحلیل آنها، همگی به چالشهای بزرگی در این حوزه بدل شدهاند. بهعنوان مثال، ذخیرهسازی دادههایی مانند دیتای هواشناسی، فعالیتهای آنلاین کاربران، اشیای متصلشده به اینترنت یا تحلیلهای اقتصادی در قالب دیتابیسهای سنتی، کارایی چندانی نخواهند داشت. هرچند پایگاه دادههای رابطهای ابزار قدرتمند و مطلوبی در اپلیکیشنهای مختلف بهشمار میروند، اما در مواجه با کلان داده (Big Data)، دادههای بدونساختار یا نیازمندیهای با مقیاس بالا، محدودیتهایی دارد. برای رسیدگی به این نوع از محدودیتها، دیتابیسهای NoSQL و سایر راهحلهای ذخیرهسازی دیتا ارائه شدهاند. کارایی بسیار بالا در ذخیرهسازی و ارائه دادههای باینری مانند اسناد، در مقیاس وسیع، یکی از کلیدیترین کاربردهایی است که انواع پایگاه داده NoSQL از خود به نمایش گذاشته است. ویژگی های پایگاه داده NoSQL ۱- طراحی بدون شمای اولیه با توجه به وباپلیکیشنهای فعلی، ممکن است اسکیمای مربوط به نگهداری دادهها (ساختار کلی) بهطور مستمر دستخوش تغییر باشد یا این تغییرات گاهاً رخ دهند. لذا در این سیستمها، اصولاً دادهها بدون شِمای اولیه طراحی و ذخیرهسازی میشوند. بهعنوان مثال، میتوان در یک سیستم که مشخصات کاربران وارد سیستم میشود، برای یک کاربر یکسری اطلاعات اضافی و برای کاربری دیگر از ورود اطلاعات اضافی صرفنظر کرد. بدین شیوه، برخلاف سیستم مدیریت پایگاه داده رابطهای، از ورود مقادیر Null یا پیوندهای بیمورد جلوگیری میشود. ۲- پشتیبانی آسان از تکرارها در این سیستم، نحوه گرفتن نسخههای پشتیبان، هماهنگسازی و همگامسازی نسخههای مختلف بسیار ساده و سرراست است. بهطوری که سرور پایگاه داده به محض عدم توانایی خواندن یا نوشتن از روی دیسک، سراغ نسخه پشتیبان میرود و آن نسخه را بهعنوان نسخه اصلی درنظر میگیرد. ۳- رابط کاربردی برنامه نویسی ساده به دلیل متنبازبودن این سیستمها، معمولاً API های ساده و بهینهای برای انواع زبان های برنامه نویسی یا اغلب آنها ایجاد شده است. ۴- سازگاری مشروط در سیستمهای RDBMS، دادهها همراه خاصیت ACID و در قالب تراکنش پیاده میشوند؛ اما در انواع پایگاه داده NoSQL ، دادهها از مدل BASE پیروی میکنند. واژه BASE برگرفته از کلمات Basicall Available، Soft State و Eventual Consistency است. بدین شیوه، در دسترس بودن (Availability) به سازگاربودن اولویت داده میشود و میتوانید آن را در سناریوهایی استفاده کنید که با دیتاستهای وسیع سروکار دارید؛ البته این موضوع، به نیازمندیهای اپلیکیشن بستگی دارد. ۵- حجم زیادی از داده ها این سیستمها بهمنظور کار با دادههای با حجم بالا ایجاد شدهاند و در مواردی که سیستمهای RDBMS به دلیل عدم پشتیبانی از مقیاسپذیری، دارای محدودیت مدیریت حجم بالا هستند، انواع پایگاه داده NoSQL میتوانند نقش خود را به بهترین شکل ایفا کنند. طبق تئوری موجود برای سیستمهای توزیعشده، در یک سیستم توزیعشده باید ازبین سه ویژگی مختلف، یعنی سازگاری داده، در دسترس بودن و تحمل در برابر تقسیم خوشه (CAP)، دو مورد را انتخاب کرد. این محدودیت ذاتی سیستمهای توزیعشده، که با نام تئوری CAP یا تئوری بروور شناخته میشود، بیان میکند که غیرممکن است ویژگیهای زیر را در یک سیستم توزیعشده بهصورت همزمان داشته باشیم. از آنجایی که پایگاه دادههای غیررابطهای NoSql نیز نوعی سیستم توزیعشده محسوب میشوند، درنتیجه، این تئوری درمورد پایگاه دادههای غیر رابطهای نیز صدق میکند. شکل زیر، دستهبندی کلی این پایگاههای داده را براساس نظریهی CAP نشان میدهد. تعدد ابزارها و سیستمهای مبتنیبر NoSql ، انتخاب یک روش مناسب برای کاربر خاص را دشوار میکند. در این مقاله، به بررسی اجمالی انواع پایگاه داده NoSQL پرداخته و هریک از آنها را به اختصار شرح میدهیم. انواع پایگاه داده NoSQL همانطور که گفته شد، معماری سیستمهای مبتنیبر NoSql ، بهعلت تفاوت در نوع عملکرد و کاربرد آنها متمایز است. انواع پایگاه داده NoSQL به شرح زیر است: پایگاه داده کلید / مقدار پایگاه داده کلید – مقدار یا اصطلاحاً Key-Value Store، یک سرویس بازیابی اطلاعات، مشابه HashTable است که رویکردی بهینه برای ذخیره دادههای ساده اما در مقیاسی بسیار وسیع قلمداد میشود. در این روش، دادهها تنها با کلیدهای اولیه و بدون ارتباطات پیچیده نگهداری میشوند. این نوع از انواع پایگاه داده NoSQL ، بهدلیل سرعت استخراج سریع و مبتنیبر کلید، برای دسترسی مستمر به دیتا مطلوب است. دیتابیس کلید مقدار، در Caching، مدیریت Session ها، تجزیهوتحلیل بلادرنگ، مدیریت پیکربندی و سایر موارد کاربرد دارد. این دیتابیس مزیتهایی همچون خواندن و نوشتن سریع، گزینهها In-Memory، مقیاسپذیری، انعطافپذیری در نوعهای داده، دسترسی بالا و امکان مدیریت را شامل میشود. البته بهدلیل عدم وجود اسکیما در این نوع پایگاه دادهها، ساختاری برای دادهها تعریف نمیشود. این امر میتواند مدیریت و تجزیهوتحلیل دادهها را دشوار کند. با این وجود، سادگی و امکان استفاده از ساختمان HashTable در سرعت مراجعه به اطلاعات نقش بسزایی دارد. Redis ،DynamoDB و Memcached ، نمونههای از دیتابیسهای NoSQL کلید – مقدار هستند. پایگاه داده اسنادی تصور کنید یک قفسه بایگانی دیجیتال دارید که در آن، هر پوشه حاوی یک سند کامل با خواص و مقادیر مختلف است؛ این ساختار، جوهره و پایه پایگاه داده اسنادی است. هر سند بهعنوان یک رکورد یا مجموعهای از کلید / مقدار عمل میکند و تمام اطلاعات مربوط به یک موجودیت خاص، بهعنوان مثال، یک مشتری، یک محصول یا یک پست رسانه اجتماعی را دربرمیگیرد. این اسناد میتوانند ساختاری انعطافپذیری داشته باشند؛ به این معنی که لازم نیست همه آنها از یک شِمای از پیشتعریفشده پیروی کنند. شایان ذکر است که در این دیتابیس، هر سند حاوی مقادیر دادهای دلخواه بههمراه Metadata های آن سند خواهد بود. ضمن اینکه نوع دادهای مقادیر اسناد میتواند متفاوت و متغیر باشد و هیچ محدودیت خاصی در اندازه متن یا تعداد عناصر آن وجود ندارد. هر تغییری که روی اسناد صورت گیرد، میتواند در بانک اطلاعاتی ذخیره شده یا تغییر کند. پایگاه داده سندی مزیتهایی مانند انعطافپذیری، عدم وجود اسکیما محدود و سختگیرانه، کوئریهای مشخص برای بهبود کارایی، سادگی استفاده و مقیاسپذیری را دارا است. این نوع از انواع پایگاه داده NoSQL ، در اموری همچون سیستمهای مدیریت محتوا (CMS)، اپلیکیشنهای تجارت الکترونیک (E-Commerce)، پلتفرمهای شبکههای اجتماعی، اپلیکیشنهای بلادرنگ و اینترنت اشیا (IOT) کاربردی است. MongoDB ،Couchbase ،Amazon DocumentDB ، برخی از نمونههای پایگاه داده سندی بهشمار میروند. هریک از موارد مذکور، کاربردها و مزیتهای خود را دارند. دیتا در پایگاه داده MongoDB در قالب فرمت JSON و بهعنوان سند، ذخیرهسازی خواهد شد. علاوهبراین، در MongoDB پرسوجوها به شکل توابع معمولی جاوااسکریپت هستند. به همین دلیل، این پایگاه داده مورد توجه بسیاری از توسعهدهندگان وب واقع شده است. میتوان Elasticsearch را بهعنوان دیتابیس مبتنیبر سند NoSQL ای درنظر داشت؛ چراکه این ماشین جستجو، دادهها را در قالب اسناد JSON ذخیرهسازی میکند و یکی از بهترین گزینههای موجود برای جستجو در اسناد Self-Contained درنظر گرفته میشود. ElasticSearch بهدلیل قابلیت مطلوب آن در سرچ تماممتنی توسط بسیاری از سازمانها به کار میرود. پایگاه های داده ستون گرا از میان انواع پایگاه داده NoSQL ، دیتابیس Wide-Column Store یا همان ستونگرا، بهعنوان یک راه حل قدرتمند برای مدیریت دیتاستهای گسترده با ساختارهای درحال تکامل بهحساب میآیند. در این روش، هر سطر یا همان رکورد، نمایانگر یک موجودیت است اما ستونها میتوان متفاوت باشند. Apache Cassandra و ScyllaDB از نمونههای این دیتابیس محسوب میشوند. برای مدیریت آپدیت میلیونها دیتا از افراد مختلف در یک شبکه اجتماعی بزرگ، لازم است با سریعترین و مقرونبهصرفهترین روش NoSQL آشنا شد. این موضوع وقتی از درجه اهمیت بالایی برخوردار میگردد که قرار باشد حجم عظیمی از دادهها روی شبکه بزرگی با سرورهای متصل به هم قرار گیرند. در این روش، هر ماشین باید در شبکه P2P داخل خود عملکرد باثباتی داشته و هر ماشین دقیقاً حاوی دادههای یکسانی باشد. کاساندرا (Cassandra) نمونه بنیادیای از این نوع دیتابیس است که عملکرد نسبتاً پیچیدهتری نسبت به نمونههای دیگر از انواع پایگاه داده NoSQL دارد. در این پایگاه داده میتوان سرعت همگامسازی ستونها و مجموعههایی از مقادیر را تعیین کرد و با توجه به شرایط بستر شبکهای موجود، برای هماهنگی و مدیریت کلاسترهای این پایگاه داده تنظیمات مختلفی را اعمال کرد. بهطورکلی، انعطافپذیری اسکیما، مقیاسپذیری، کارایی بالا برای کوئریهای خاص و همچنین، بهینگی برای برخی دیتاتایپهای خاص از مزیتها و نقاط مثبت Wide-Column Database محسوب میشود. پایگاه داده گرافی از میان انواع پایگاه داده NoSQL ، پایگاه داده گرافی بهعنوان یک ابزار منحصربهفرد و قدرتمند برای مدلسازی و کار با دیتای متصلبههم، مورد استفاده قرار میگیرد. در این نوع از دیتابیس، دادهها در قالب گره (Node) نمایش داده میشوند و روابط میان این گرهها یا همان موجودیتها ازطریق یالهایی (Edges) قابل درک خواهد بود. این ساختار برای مواقعی مناسب است که روابط بین نقاط دادهها متعدد و وسیع است. به بیان دیگر، در دیتابیس گرافی Node ها و ارتباط میان آنها، برای ایجاد معانی و مفاهیم پیچیدهتر ایجاد میشوند. پایه این نوع پایگاه داده با مجموعهای از الگوریتمهای محاسباتی مرتبط با گراف عرضه شده است که برای مثال، امکان تعیین کوتاهترین مسیر را فراهم میسازد. Neo4j ،OrientDB و Amazon Neptune از نمونههای بارز این نوع از انواع پایگاه داده NoSQL محسوب میشوند. پایگاه داده گرافی برای ذخیرهسازی دادههای مرتبط با یکدیگر، ایدهآل بهشمار میرود و در آن، از پرسوجوهای پیچیده برای پیمایش گراف و یافتن اطلاعات موردنیاز پشتیبانی میشود. ضمن اینکه میتوان آن را برای تحلیل شبکههای اجتماعی، شبکههای علمی و سایر شبکههای پیچیده به بهترین نحو به کار برد. معمولاً پایگاه دادههای گرافی، در تسکهایی مانند سیستمهای پیشنهاددهنده، تشخیص کلاهبرداری، مدیریت زنجیره تأمین کالا کاربردی است. سخن پایانی: چه زمانی از پایگاه داده NoSQL استفاده کنیم؟ در این مقاله انواع پایگاه داده NoSQL معرفی شدند تا آشنایی با آنها به بهترین نحو انجام شود. در عمل، دیتابیسهای NoSQL در سناریوهایی مانند کار با Big Data، دادههای بدونساختار، اپلیکیشنهای بلادرنگ کارایی بالا برای کوئریهای خاص، انتخاب مناسبی است. با این وجود، باید به جزئیات توجه کرد؛ زیرا انتخاب بهترین راه حل دیتابیسی، به نیازمندیها و شرایط پروژه شما بستگی دارد و نمیتوان SQL یا NoSQL را بهعنوان یک راه حل همهمنظوره برای تمامی پروژهها درنظر داشت. شما میتوانید برای آشنایی با اهمیت و کاربردهای دیتابیسهای رابطه و T-SQL، به آموزش جامع SQL Server مراجعه کنید. چه رتبه ای میدهید؟ میانگین ۵ / ۵. از مجموع ۱ اولین نفر باش معرفی نویسنده مقالات 1 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده وحید امیری معرفی محصول مجتبی بنائی دوره آموزش مهندسی داده [Data Engineering] 2.380.000 تومان مقالات مرتبط ۰۴ مهر مهندسی داده معماری Data Lakehouse چیست و چگونه کار میکند؟ نگین فاتحی ۲۴ شهریور مهندسی داده ردیس چیست و انواع آن کدامند؟ نگین فاتحی ۱۸ شهریور مهندسی داده مراحل ساده برای تحلیل داده با ChatGPT و پایتون نگین فاتحی ۱۰ شهریور مهندسی داده NoSQL چیست؟ هر آن چیزی که درباره پایگاه داده NoSQL باید بدانید تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ میلاد ۱۰ / ۰۶ / ۹۹ - ۰۹:۰۹ مطلب خوبی بودش فقط مونگو دی بی اسناد در قالب bson ذخیره میکنه و برای راحتی از json برای وارد کردن اسناد و نشان دادن اون ها استفاده میکنه پاسخ به دیدگاه ارسلان ۰۲ / ۰۸ / ۹۷ - ۰۷:۳۴ ساده و روان ممنون پاسخ به دیدگاه ارسلان ۰۲ / ۰۸ / ۹۷ - ۰۷:۳۴ ساده و روان ممنون پاسخ به دیدگاه Alireza ۲۳ / ۰۷ / ۹۷ - ۰۹:۴۲ بسیار عالی.. امیدوارم آموزش مباحث NoSql ادامه پیدا کنه پاسخ به دیدگاه افشین عباسپور ۲۰ / ۰۷ / ۹۷ - ۱۰:۴۱ خیلی عالی … ممنون بابت ورود به مبحث NOSQL پاسخ به دیدگاه ho.mehdi@gmail.com ۱۶ / ۰۷ / ۹۷ - ۰۱:۲۹ ممنونم از مطلبتون..استفاده کردم پاسخ به دیدگاه مسعود طاهری ۱۵ / ۰۷ / ۹۷ - ۰۳:۲۰ وحید جان تشکر بسیار عالی پاسخ به دیدگاه مسعود طاهری ۱۵ / ۰۷ / ۹۷ - ۰۳:۲۰ وحید جان تشکر بسیار عالی پاسخ به دیدگاه