مقایسه SQL و NoSQL در قلمرو اینترنت اشیا
دیتابیس SQL : دیتابیس های SQL از مدل رابطه ای برای ذخیره داده ها تبعیت می کنند . در این مدل ، داده ها در سطر ها و ستون ها و به صورت جداول نگه داری می شوند. جدول ها می توانند با هم رابطه نیز داشته باشند. دیتابیس های رابطه ای مختلفی همانند MySQL ، PostgresQL ، SQLServer و …در حال حاضر دسترس هستند.
دیتابیس NoSQL: از مدل غیر رابطه ای استفاده می کنند. در این مدل به جای اینکه داده ها در جداول و ردیف ها ذخیره شوند ، در اسناد ذخیره می شوند و هر کدام از این اسناد میتوانند از نظر ساختاری با هم تفاوت داشته باشند در حالی که هر دو ردیف جدول در یک مدل رابطه ای باید ساختاری مشابه هم داشته باشند.دیتابیس های غیر رابطه ای از ویژگی مقیایس پذیری افقی بهره مند نیز هستند. محبوبیت این نوع دیتابیس ها به خاطر ویژگی هایی نظیر مقیاس پذیری بالا ، درسترسی آسان و و معماری توزیع شده ای است که آن ها فراهم می کنند. MongoDB ، Redis دو مورد از دیتابیس های غیر رابطه ای هستند.
از دیدگاه اینترنت اشیا ، انتخاب درست از میان این دو نوع دیتابیس می تواند در سرانجام پروژه مهم باشد. تفاوت های این دو نوع دیتابیس در ادامه بحث خواهند شد.
مقیاس پذیری: دیتابیس های SQL از مقیاس پذیری عمودی پشتیبانی می کنند در حالی که NoSQL از مقیاس پذیری افقی بهره مند هستند. مقیاس پذیری عمودی به توانایی در افزایش کارایی یک گره با اضافه کردن منابع مانند حافظه و پردازشگر اطلاق می شود. در مقیاس پذیری افقی برای توزیع بار روی سیستم ، تعداد گره ها (سرورها) افزایش داده می شود. برای یک پروژه که در مرحله توسعه قرار دارد ، استفاده از دیتابیسی که قابلیت توسعه داشته باشد بسیار می تواند مفید واقع باشد به این خاطر که گسترش منابع فقط در هنگامی که مورد نیاز است باعث می شود که نیازی به سرمایه گذاری اولیه بالایی نباشد.
بازیابی داده ها: ویژگی بازیابی داده سریعتر در مواقعی که کاربر برای پردازش داده باید داده را از دیتابیس بگیرد مورد نیاز است. در SQL ، جداول مختلف به همدیگر متصل هستند . برای جستجوی داده از جداول متفاوت متصل به همدیگر ، کاربر باید از دستور JOIN که باعث ساختن VIEW می شود استفاده کند.این فرایند یک فرایند زمانگیر هست . در طرف مقابل ، در NoSQL داده ها به صورت اشیایی هستند که که حاوی داده های مرتبط به هم هستند.
بالغ بودن سیستم: SQL تکنولوژی است که آزمون خود را پس داده و بیشتر مسائل و مشکلات آن رفع شده اند. ویژگی های امنیتی همانند : اعتبارسنجی کاربران ، محرمانگی ، یکپارچگی و درستی داده ها در SQL به خوبی به کار گرفته شده اند.اما چنین ویژگی های امنیتی برای NoSQL هنوز به تکامل نرسیده اند که همین نابالغ بودن سیستم، عاملی است برای بروز مسایل و روزنه های امنیتی که تاکنون رفع نشده اند. در بعضی از پروژه های IoT ، یک کانال ارتباطی امن برای انتقال داده ها نیاز است. در این پروژه ها ، بهتر است از یک سیستم ذخیره سازی امن نیز در کنار کانال ارتباطی امن استفاده شود.
مقایسه عملی
برای مقایسه عملی، یک پروژه آبیاری باغچه طراحی شده است. نمودار زیر دیاگرام بلوکی سیستم را نشان میدهد.
دما ، رطوبت هوا و رطوبت خاک در کنار سنجش سطح آب به کار گرفته شده اند. روشن شدن موتور آب پاش به مقادیر ورودی ازرطوبت خاک و سطح آب در مخزن بستگی دارد. اگر سطح رطوبت خاک از مقدار معینی کمتر شود و همچنین آب در تانک موجود باشد ، موتور آبپاش روشن می شود. داده های دریافتی از سنسور ها جمع آوری می شود و به دیتابیس سرور و شناسه ایمیل کاربر فرستاده می شود. هدف نهایی، تحلیل داده های تولید شده با استفاده از ابزار های تحیلل داده است. این پروژه IoT جریان پیوسته ای از داده ها را تولید می کند و این داده ها در دو دیتابیس MySQL (رابطه ای ) و MongoDB (غیررابطه ای) برای انجام مقایسه ذخیره می شوند.
برای این سیستم آب پاش از Arduino Uno استفاده شده است. داده ها ی خوانده شده از این حسگر ها به پین های آنالوگ ان فرستاده می شوند. نسخه مورد استفاده MySQL ، نسخه 5.5 است. داده های دریافتی در جدولی با ساختار زیر ذخیره می شود.
برای MongoDB از mongo booster 1.6.2 برای ساختن collection ها و document ها استفاده شده است . کالکشنی شبیه جدول MySQL با نام sensor_data شده است که اسناد در آن ذخیره می شوند.
از Jmeter Apache برای اندازه گیری کارایی دو دیتابیس استفاده شده است.
نتایج
در این مطالعه مقایسه ای ، زمان پاسخ دو دیتابیس برای عملیات های مختلف اندازه گیری می شود. جزییات مقایسه در زیر بحث می شود.
1- پرس و جوی SELECT با تعداد مختلفی از thread ها.
نمودار زمان پاسخ در مقابل تعداد thread ها برای پرس و جوی SELECT برای تعداد متغیری از thread ها در زیر قابل مشاهده است. فرایند خواندن با استفاده از پرس و جوی SELECT است که 1000 رکورد از 10000 رکورد را واکشی می کند. زمان پاسخ برای MySQL و MongoDB تا هنگامی که تعداد thread ها کمتر از 5 هست مشابه است. همانطور که از نمودار قابل مشاهده است در تعداد 10 thread ، شاهد رشد افزایشی در زمان پاسخ MongoDb در مقایسه با MySQL هستیم. بنابر این در MongoDB تعداد زیاد thread باعث کاهش کارایی (به نسبت MySQL ) می شود.
2- پرس و جوی INSERT با تعداد متغیری از thread ها.
نمودار زمان پاسخ در مقابل تعداد thread برای تاخیر نوشتن در زیر مشاهده می شود.برای عملیات پرس و جوی INSERT ، نرخ افزایش زمان پاسخ برای MySQL در مقایسه با MongoDB بیشتر است و این خود بیانگر این است که MongoDB به طور واضحی در عملیات نوشتن در تعداد thread های بالا سریعتر از MySQL عمل می کند.
3- پرس و جوی SELECT با تعداد رکورد های متغیر
در زیر نمودار زمان پاسخ به ازای تعداد رکوردها برای پرس و جوی SELECT ، مشاهده می شود. از نمودار ، این مطلب هویدا می شود که MySQL در زمینه زمان پاسخ در پرس و جوی SELECT با رکوردهای متغیر ، بهتر از MongoDB عمل میکند. به طور کلی و از روی نمودار SELECT با tread های مختلف و نمودار SELECT با تعداد رکوردهای مختلف می توان به این نتیجه رسید که در جست و جوی SELECT ، زمان پاسخ MongoDB بیشتر است و MySQL در این نوع پرس و جو برگ برنده را داراست.
4- پرس و جوی INSERT با تعداد متغیری از رکورد ها
در نمودار زیر که نشان دهنده زمان پاسخ به تعداد رکورد ها است ، خط زمان پاسخ MySQL به صورت تقریبا ثابت دیده می شود اما در سوی مقابل خطی با تغییرات سریع برای MongoDB مشاهده می شود.در هنگام عملیات INSERT در MongoDB تغییرات سریع در هنگامی رخ می دهندکه صف نوشتن پراست و عملیات های INSERT برروی هم انباشته می شوند و بدین سبب زمان پاسخ یا تاخیر افزایش پیدا می کند. همچنین هنگامی که اعمال INSERT همزمان در حال رخ دادن است ، دیتابیس در آن بازه زمانی قفل می شود و این نیز عاملی است بر اینکه عمل INSERT با تاخیر مواجه شود.
نتیجه گیری
در این تحقیق کارایی هر دو نوع دیتابیس در یک پروژه عملی اینترنت اشیا سنجیده و مقایسه شد. هر کدام از دیتابیس های موافقان و مخالفان خود را دارد. از این مطالعه مشاهده شد که در برخی موارد ، MongoDB زمان پاسخ کمتری نسبت به MySQL را دارا بود .اما پاسخ های MySQL به نسبت MongoDB ، پایداری بیشتری داشتند. بنابراین انتخاب یک دیتابیس مناسب برای پروژه اینترنت اشیا، به این بستگی دارد که کدام پرس و جو بیشتر اتفاق می افتد و احتیاجات پروژه بستگی دارد.
Source: https://ieeexplore.ieee.org/document/7887957
Translate: Hosein Eftekhahri manesh