صفحه اصلی |     جستجوی پیشرفته  |     درباره ما  |     تماس با ما  |     راهنمای کاربران

اخبار

 

مقایسه SQL  و NoSQL  در قلمرو اینترنت اشیا


 

دیتابیس SQL  : دیتابیس های  SQL از مدل رابطه ای برای ذخیره داده ها تبعیت می کنند . در این مدل ، داده ها در سطر ها و ستون ها و به صورت جداول نگه داری می شوند. جدول ها می توانند با هم رابطه نیز داشته باشند. دیتابیس های رابطه ای مختلفی  همانند MySQL  ، PostgresQL ، SQLServer   و ...در حال حاضر دسترس هستند.

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

از دیدگاه اینترنت اشیا ، انتخاب درست از میان این دو نوع دیتابیس می تواند در سرانجام پروژه مهم باشد. تفاوت های این دو نوع دیتابیس در ادامه بحث خواهند شد.

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

بازیابی داده ها: ویژگی بازیابی داده سریعتر در مواقعی که کاربر برای پردازش داده باید داده را از دیتابیس بگیرد مورد نیاز است. در SQL  ، جداول مختلف به همدیگر متصل هستند . برای جستجوی داده از جداول متفاوت متصل به همدیگر ، کاربر باید از دستور JOIN که باعث ساختن VIEW می شود استفاده کند.این فرایند یک فرایند زمانگیر هست . در طرف مقابل ، در  NoSQL داده ها به صورت اشیایی هستند که که حاوی داده های مرتبط به هم هستند.

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

مقایسه عملی

برای مقایسه عملی، یک پروژه آبیاری باغچه طراحی شده است. نمودار زیر دیاگرام بلوکی سیستم را نشان میدهد.

مقایسه SQL  و NoSQL  در قلمرو اینترنت اشیا

دما ، رطوبت هوا و رطوبت خاک در کنار سنجش سطح آب به کار گرفته شده اند. روشن شدن موتور آب پاش  به مقادیر ورودی ازرطوبت خاک و سطح آب در مخزن بستگی دارد. اگر سطح رطوبت خاک از مقدار معینی کمتر شود و همچنین آب در تانک موجود باشد ، موتور آبپاش روشن می شود. داده های دریافتی از سنسور ها جمع آوری می شود و به دیتابیس سرور و شناسه ایمیل کاربر فرستاده می شود. هدف نهایی، تحلیل داده های تولید شده با استفاده از ابزار های تحیلل داده است. این پروژه 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 ) می شود.

MongoDB

2- پرس و جوی INSERT  با تعداد متغیری از thread  ها.

نمودار زمان پاسخ در مقابل تعداد thread  برای تاخیر نوشتن در زیر مشاهده می شود.برای عملیات پرس و جوی INSERT ، نرخ افزایش زمان پاسخ برای  MySQL در مقایسه با MongoDB  بیشتر است  و این خود بیانگر این است که  MongoDB  به طور واضحی در عملیات نوشتن در تعداد thread  های بالا سریعتر از MySQL  عمل می کند.

mysql

3- پرس و جوی SELECT   با تعداد رکورد های متغیر

در زیر نمودار زمان پاسخ به ازای تعداد رکوردها برای پرس و جوی SELECT ، مشاهده می شود. از نمودار ،  این مطلب هویدا می شود که MySQL  در زمینه زمان پاسخ در پرس و جوی SELECT  با رکوردهای متغیر ، بهتر از MongoDB عمل میکند. به طور کلی و از روی نمودار SELECT با tread های مختلف و نمودار SELECT با تعداد رکوردهای مختلف می توان به این نتیجه رسید که در جست و جوی SELECT  ، زمان پاسخ MongoDB  بیشتر است و MySQL  در این نوع پرس و جو برگ برنده را داراست.

 select query

4- پرس و جوی  INSERT با تعداد متغیری از رکورد ها

در نمودار زیر که نشان دهنده زمان پاسخ به تعداد رکورد ها است ، خط زمان پاسخ MySQL  به صورت تقریبا ثابت دیده می شود اما در سوی مقابل خطی با تغییرات سریع برای MongoDB  مشاهده می شود.در هنگام عملیات INSERT  در MongoDB  تغییرات سریع در هنگامی رخ می دهندکه صف نوشتن پراست و عملیات های INSERT  برروی هم انباشته می شوند و بدین سبب زمان پاسخ یا تاخیر افزایش پیدا می کند. همچنین هنگامی که اعمال INSERT  همزمان در حال رخ دادن است ، دیتابیس در آن بازه زمانی قفل می شود و این نیز عاملی است بر اینکه عمل INSERT  با تاخیر مواجه شود.

insert query

نتیجه گیری

در این تحقیق کارایی هر دو نوع دیتابیس در یک پروژه عملی اینترنت اشیا سنجیده و مقایسه شد. هر کدام از دیتابیس های موافقان و مخالفان خود را دارد. از این مطالعه مشاهده شد که در برخی موارد ، MongoDB  زمان پاسخ کمتری نسبت به MySQL  را دارا بود .اما پاسخ های MySQL  به نسبت MongoDB  ، پایداری بیشتری داشتند. بنابراین انتخاب یک دیتابیس مناسب برای پروژه اینترنت اشیا، به این بستگی دارد که کدام پرس و جو بیشتر اتفاق می افتد و احتیاجات پروژه بستگی دارد.

Source: https://ieeexplore.ieee.org/document/7887957

Translate: Hosein Eftekhahri manesh

تازه ها

ارتباط با ما

راه­ های ارتباطی  :
ایمیل دبیرخانه: Office[at]IoTiran.com
ایمیل دبیر مرکز: Info[at]IoTiran.com
ارتباط تلگرامی:@iotrcadmin
تلفن: 77199154-021
فکس: 77274337-021

تفاهم نامه ها

Iran presidential 90 90  satba 90 90  modiriat sanati 90 90  zand 90 90  lorestan 90 90  yazd 90 90  shahr bank 90 90  AVA 90 90  civilica 90 90  Hamrasta 90 90 linkap white 300 300TADBIR