Advance DB
Advance DB
مقابل NoSQL
مقایسه دیتابیس های MongoDBو Cassandraو PostgreSQL
مقاله ۲۰۲۳ژورنال IEEE
ســـینا قادری
۲۹آذر ۱۴۰۳ارائه کالس پایگاه داده پیشرفته
چکیده مـقاله
این مطالعـه بـا هـدف بررسـی روشهـای پیشـرفته بـرای مـدیریت پایگـاه داده مقیاسپـذیر و
تمرکـز بـر مقـرون بـه صـرفه بـودن انجـام شـده اسـت .در این تحقیـق ،دو پایگـاه داده NoSQL
رایج MongoDBو Cassandraبـا یـک سیسـتم مـدیریت پایگـاه داده رابطهای سـنتی،
یهـای عملکـردی انجـام شـده یشـوند .این مقایسـه از طریـق ارزیاب PostgreSQLمقایسـه م
یهـا شـامل عملیـاتیگـیرد .ارزیاب
روی چنـدین کالسـتر در محیطهـای ابـری و محلی صـورت م
پایگـاه دادهای همچـون INSERTو SELECTو DELETEاسـت .نتـایج مطالعـه نشـان میدهـد
کـه هـر سیسـتم مـدیریت پایگـاه داده بـرای مـوارد اسـتفاده خاصـی بهینهسـازی شـده اسـت.
انتخـاب پایگـاه داده بایـد بـر اسـاس ارزیـابی جـامع چنـدین عامـل ،نـه تنهـا مقیـاس پـذیری و
عملکـرد ،انجـام شـود .نـوآوری این مطالعـه در مقایسـه مقیـاس پـذیری سـه سیسـتم مـدیریت
پایگـاه داده محبـوب و تأکیـد آن بـر مقـرون بـه صـرفه بـودن هنگـام ارزیـابی عملکـرد در محیطهـای
مختلف است
دوران مـدرن بـا وظـایفی مشـخص میشـود کـه نیازمنـد پـردازش دادههـای وسـیع و مـدیریت
سـطوح بـاالی بـار کـاری اسـت .یـک مثـال رایج از این نـوع وظـایف ،برنامههـای وب ماننـد
لهـای خـبری و سـایر برنامههـا هسـتند. شـبکههای اجتمـاعی ،پلتفرمهـای تجـارت الکترونیـک ،پورتا
نهـا بهطـور مشـترک بـه مـدیریت در حـالی کـه هـر برنامـه نیازهـای خـاص خـود را دارد ،همـه آ
ههـا دسترسـی پیـدا ههـا و تعـداد زیـادی کـاربر نیـاز دارنـد کـه میتواننـد بـه داد
حجم وسـیعی از داد
ههـا و پایگـاه کـاربران چالشهـایی کـرده ،آنهـا را تغیـیر داده یـا پـردازش کننـد .افـزایش حجم داد
نهـا ایجـاد میکنـد .دررا در زمینـه مقیـاس پـذیری برنامههـا و راهحلهـای دادهای زیرسـاخت آ
سـه تـا چهـار سـال گذشـته ،مـیزان اطالعـات تولیدشـده توسـط بشـر از مجمـوع تمـام سـالهای
گذشـته پیشـی گرفتـه و همچنـان بهطـور نمـایی در حـال رشـد اسـت .این رونـد نیـاز بـه گسـترش
ههـا برجسـته ظرفیتهـای ذخیرهسـازی دادههـا را بـرای همگـامی بـا جریـان رو بـه افـزایش داد
میکنـد .در حـال حاضـر ،جریـان وسـیعی از اطالعـات هـر روز از طریـق سیسـتمهای مختلـف
عبور کرده و تمام این اطالعات در پایگاههای داده جمعآوری میشود.
انعطافپذیری در مدل داده :نیازی به تعریف ساختار ثابت مانند جداول نیست ●
عملکرد باال :برای حجمهای عظیم داده و نیازهای بالدرنگ بسیار مناسب است ●
نبود استاندارد واحد :هر سیستم NoSQLمعماری خاص خود را دارد ●
نوع دیتا در این دیتابیس به صورت جفت کلید و مقدار است ●
●
install Redis on Linux: apt install redis-server
●
connect to Redis: redis-cli
●
set a key: >set <key> <value
●
delete a key: >del <key> <value
●
show all keys: * keys
این اسـناد میتواننـد شـامل سـاختارهای سلسـلهمراتبی باشـند و هـر سـند میتوانـد دارای ●
جداول SQLنیست
ههـا بین چنـدین سـرور از طریـق Shardingو امکـان مـدیریت حجم عظیمی قابلیت توزیـع داد ●
ههـا در سـرورهای متعـدد و امکـان اسـتفاده از Replica Setsبـرای اطمینـان از در از داد
دسترس بودن دادهها و بازیابی از خرابی وجود دارد
●
Install on Linux: official MongoDB Documentation
دادهها بهطور خودکار در چندین گره ( )Nodeدر یک کالستر توزیع میشوند ●
هیچ گـرهای نقش خاصـی نـدارد (مـدل )MasterLessکـه بـاعث کـاهش نقـاط Single Point ●
Of Failureمیشود
امکان اضافه یا حذف گرهها در کالستر بدون نیاز به توقف سیستم ●
دادههـا در چنـدین گـره بهصـورت خودکـار Replicateمیشـوند ،حـتی در صـورت خـرابی ●
یک پایگـاه داده Relationalاوپن سـورس و قدرتمنـد اسـت کـه بـه دلیـل قابلیتهـای پیشـرفته
و پایـداری خـود شـناخته میشـود .این پایگـاه داده کـه بـه اختصـار Postgresنـیز نامیـده
یشـود ،از اسـتاندارد SQLپـیروی کـرده و بـرای برنامههـای مختلـف از سیسـتمهای کوچـک تـا م
برنامههـای پیچیـده سـازمانی مناسـب اسـت و بـه دلیـل قـابلیت توسـعهپذیری توسـط
توسعهدهندگان و شرکتهای بزرگ استفاده میشود
پسـتگرس هماننـد دیتـابیس هـای MySQLو MariaDBو MS SQLاز دیتـابیس هـای رابطهای
به شمار میآید
تراکنشها کامًال مطابق با اصول ACIDهستند که موجب صحت و پایداری دادهها میشود ●
امکـان اضـافه کـردن توابـع جدیـد ،انـواع دادههـا ،اینـدکس هـا ،و حـتی زبانهـای برنامهنویسـی ●
نظریـه CAPکـه بـه اصـل CAPنـیز معـروف اسـت ،یـک مفهـوم مهم در طـراحی سیسـتمهای
توزیعشـده اسـت .این نظریـه توسـط اریـک بروئـر ( )Eric Brewerدر سـال 2000معـرفی و
بعـدها بهطـور رسـمی اثبـات شـد .نظریـه CAPبیـان میکنـد کـه یـک سیسـتم توزیعشـده
نمیتواند بهطور همزمان سه ویژگی زیر را تضمین کند
است)
دسترسپذیری ()Availability ●
یکـــــپارچگی
تمـام گرههـای سیسـتم در هـر لحظـه دادههـای یکسـان و
بهروزی را مشـاهده میکننـد و بهعبـارت دیگـر ،وقـتی دادهای
بهروزرسانی میشود ،همه گرهها نسخه جدید را میبینند
دسترسپذیری
هر درخواسـت از یـک گـره در سیسـتم حتمـًا بـا پاسـخ مواجـه
میشـود (حـتی اگـر بـرخی از گرههـا دچـار خـرابی باشـند) پس
سیسـتم همیشـه فعـال اسـت و درخواسـتها را بـدون توقـف
پاسخ میدهد
تحمل پارتیشن
سیسـتم میتوانـد در مواجهـه بـا پارتیشـنبندی شـبکه
شهـایی از سیسـتم) همچنـان(یعـنی قطـع ارتبـاط بین بخ
بـه عملکـرد خـود ادامـه دهـد ،در سیسـتمهای واقعی،
احتمال بروز پارتیشنبندی شبکه غیرقابلاجتناب است
ههـای
ههـای داده NoSQLماننـد Cassandra، MongoDB، HBaseو همچـنین پایگا از پایگا ●
میکند
قابلیت اندازهگیری تاخیر ( )Latencyو توان عملیاتی ( )Throughputرا دارد ●
در این مطالعـه ،پرفـورمنس عملیـات پـایهای دیتـابیس شـامل Insertو Deleteو Select
بین Cassandraو MongoDBو PostgreSQLمقایسـه شـد .از PostgreSQLبهعنـوان
هسـازی کلیـد مقـدار و بـا مجمـوعهای
یـک پایگـاه داده رابطهای اسـتفاده شـد کـه در حـالت ذخیر
ثابت از فیلدها عمل میکرد
نتـایج ارائهشـده در جـدول زیـر مربـوط بـه عملیـات درج در یـک پایگـاه داده خـالی شـامل
۱,۰۰۰,۰۰۰ ،۱۰,۰۰۰و ۵,۰۰۰,۰۰۰رکـورد انـدازهگیری شـد کـه این انـدازهگیریها بـر حسـب
ثانیـه و تعـداد عملیـات در هـر ثانیـه میباشـد ،بـرای انجـــام این تسـت از ۱۰۰نخ (در پـایتون)
استــفاده شده است
نتـایج نشـان میدهنـد کـه عملیـات INSERTوابسـته بـه تعـداد ردیفهـای نوشتهشـده در پایگـاه
داده نیست
MongoDBسـریعترین عملکـرد را در میـان دیتـابیس هـای مـورد آزمـایش نشـان داد،
Cassandraکمی کنـــدتر بـود و PostgreSQLبـا سرعـــتی تقریبـًا دو برابـر کنــدتر از این
دو پایگاه داده عمل کرد
عملیـات INSERTبـا سـطوح مختلـف ُپری پایگـاه داده بـه بررسـی تـأثیر تعـداد رکوردهـای
موجـود در پایگـاه داده بـر سـرعت درج پـرداخت .این آزمـایش نشـان داد کـه درج داده در
ههـای موجـود در آن تحت تـأثیر قـرار
ههـای مختلـف ممکن اسـت بـا تغیـیر حجم داد
پایگـاه داد
گیرد
نتـایج نشـان میدهنـد کـه عملیـات INSERTرکوردهـا بـه مـیزان ُپری پایگـاه داده وابسـته نیسـت
MongoDBسـریعترین عملکـرد را در این آزمایشهـا نشـان داد Cassandra ،کمی کنـدتر
بود ،و PostgreSQLبا سرعتی تقریبًا دو برابر کندتر از این دو پایگاه داده عمل کرد
زمـان جسـتجوی یـک شـیء در دیتـابیس مطـابق جـدول زیـر در شـرایط مختلـف محتـوا
اندازهگیری شد این اندازهگیریها بر اساس ثانیه و تعداد عملیات در هر ثانیه انجام شدند
این آزمـایش مشـخص کـرد کـه سـرعت جسـتجو ممکن اسـت بـا افـزایش حجم دادههـای پایگـاه
داده تغییر کند
نتـایج نشـان میدهنـد کـه بـا افـزایش حجم دیتـا ،زمـان جسـتجوی یـک رکـورد در MongoDB
بهسـرعت افـزایش مییابـد در حـالی کـه Cassandraبهـترین عملکـرد را در این شـرایط
نشان داده و زمان جستجوی آن کمتر تحت تأثیر حجم داده قرار میگیرد
زمـان حـذف یـک شـیء از پایگـاه داده ،مطـابق جـدول زیـر بـا محتـوای مختلـف دیتـابیس
انـدازهگیری شـد این انـدازهگیریها بـر حسـب ثانیـه و تعـداد عملیـات در هـر ثانیـه انجـام شـدند تـا
تأثیر حجم دادههای موجود در دیتابیس بر سرعت عملیات حذف بررسی شود
نتـایج نشـان میدهنـد کـه بـا افـزایش حجم دیتـا ،عملکـرد MongoDBبهطـور قـابلتوجهی
کـاهش مییابـد در حـالی کـه Cassandraبهـترین عملکـرد را نشـان میدهـد و زمـان حـذف
کمتری نسبت به سایر پایگاه دادهها دارد
سپـذیر ارائـه
این مقالـه پژوهشـی یـک مـرور جـامع بـر دو سیسـتم مـدیریت پایگـاه داده مقیا
کـرده و عملکـرد عملیـات پایـه در هـر سیسـتم را ارزیـابی و مقایسـه کـرده اسـت .ظهـور این
سیسـتمها بـه رشـد سـریع فناوریهـای اینـترنت و نیـاز بـه مـدیریت حجم بـاالی داده در
یشـود .سیسـتمهای NoSQLبـر مقیـاس پـذیری برنامههـای بـا بـار کـاری سـنگین نسـبت داده م
و تحمـل خطـا تمرکـز دارنـد ،هرچنـد اغلب بـه قیمت کـاهش سـازگاری داده و ویژگیهـای
تراکنشی
یشـوند ،سـادهتر از مـدلهایمدلهای دادهای کـه توسـط سیسـتمهای NoSQLپشـتیبانی م
رابطهای هسـتند و فاقـد اسـکیماهای داده سـختگیرانه و محـدودیتهای جـامعیت میباشـند،
که این امر میتواند توسعه برنامهها را سادهتر کند