شبکه های سنسور بی سیم شامل نود های کوچکی با توانایی حس کردن، محاسبه و ارتباط به زودی در همه جا خود را می گسترانند. چنین شبکه هایی محدودیت منابع روی ارتباطات، محاسبه و مصرف انرژی دارند. اول اینکه پهنای باند لینکهایی که گرههای سنسور را به هم متصل می کنند محدود می باشد و شبکه های بیسیم ای که سنسورها را به هم متصل می کنند کیفیت سرویس محدودی دارند و میزان بسته های گم شده در این شبکه ها بسیار متغیر می باشد. دوم اینکه گره های سنسور قدرت محاسبه محدودی دارند و اندازه حافظه کم نوع الگوریتمهای پردازش داده ای که می تواند استفاده شود را محدود می کند. سوم اینکه سنسورهای بی سیم باطری کمی دارند و تبدیل انرژی یکی از مسائل عمده در طراحی سیستم می باشد.
داده جمع آوری شده می تواند در شبکه های سنسور ذخیره شود و یا به سینک منتقل شود وقتی داده در شبکه های سنسور ذخیره می شود مشکلات عدیده ای به وجود می آید:
سنسورها میزان حافظه محدودی دارند که این باعث می شود نتوانیم میزان زیادی داده که در طول ماه یا سال جمع آوری شده را ذخیره کنیم
چون منبع تغذیه سنسورها باطری می باشد با تمام شدن باطری داده ذخیره شده در آن از بین می رود.
جستجو در شبکه گسترده و پراکنده آن بسیار مشکل می باشد.
داده ها می توانند به سینک منتقل شوند و در آنجا برای بازیابی های بعدی ذخیره شوند این شما ایده آل می باشد چون داده ها در یک محل مرکزی برای دسترسی دائمی ذخیره می شوند. با این حال، ظرفیت انتقال به ازای هر نود در شبکه سنسور که به صورت تعداد بسته هایی که سنسور می تواند در هر واحد زمانی به سینک منتقل کند تعریف می شود، محدود می باشد. حجم زیادی از داده نمی تواند به صورت موثر از شبکه سنسور به سینک منتقل شود علاوه بر اینها انتقال داده از شبکه سنسور به سینک ممکن است انرژی زیادی مصرف کند و این باعث مصرف انرژی باطری شود.
بخصوص سنسور های اطراف سینک به طور وسیع مورد استفاده قرار می گیرند وممکن است سریع خراب شوند و این باعث پارتیشن شدن شبکه می شود. این امکان وجود دارد که با افزایش هزینه برخی از نودها با ظرفیت حافظه بیشتر و قدرت باطری بیشتر در شبکه های سنسور استفاده شود این سنسور ها از اطلاعات موجود در سنسورهای نزدیک Backup می گیرند و به Query ها جواب می دهند. داده جمع آوری شده در هر نود می تواند به صورت پریودیک توسط رباتها به Data ware house منتقل شود چون نودهای ذخیره داده را فقط از نودهای همسایه جمع آوری می کنند و از طریق فیزیکی منتقل می کنند، مشکل ظرفیت محدود حافظه، ظرفیت انتقال و باطری تا حدودی بهبود می یابد.
پرس و جوی کاربر ممکن است فرم های مختلفی داشته باشد برای مثال پرس و جوی کاربر ممکن است این باشد که چه تعداد نود رخداد های انتقال را تشخیص می دهند، میانگین دمای فیلدهای حسگر و یا ... ، در این سناریو هر سنسور علاوه بر حس کردن درگیر مسیریابی داده در دو زمینه می باشد: داده خامی که به نودهای ذخیره منتقل می شود و انتقال برای Query Diffusion و جواب به پرس و جو ، هر کدام از دو مورد ممکن است داده را به سینک منتقل کند و یا به صورت محلی در نود سنسور ذخیره کند، از طرف دیگر داده ای که منحصراً در سینک ذخیره شده است برای جواب به پرس و جو با صرفه تر است چون هیچ هزینه انتقال ندارد ولی تجمع داده در سینک هزینه زیادی دارد در طرف مقابل داده ای که به صورت محلی در سنسور ذخیره شده است هیچ هزینه ای برای تجمع داده ندارد ولی هزینه پرس و جو بسیار بالا می باشد نودهای ذخیره نه تنها یک محل ذخیره سازی دائمی فراهم می کنند یک بافر بین سینک و نودهای سنسور می باشند.
در اینجا ما دو نوع از سنسور ها را تعریف می کنیم :
نود های ذخیره ( Storage Node ) : این گره ها تمام داده هایی که از سایر دریافت کرده اند و نیز داده هایی که خود تولید کرده اند را ذخیره می کنند و هیچ چیزی را قبل از اینکه پرس و جو دریافت کنند نمی فرستند با توجه به تعریف پرس و جو آنها نتایج مورد دلخواه را از داده خام بدست می آورند و نتایج مربوطه را به سینک منتقل می کنند. سینک هم خودش به عنوان نود ذخیره تعبیر می شود.
نودهای فوروارد ( Forwarding Node ) : این نودها داده دریافتی از نودهای دیگر یا داده های تولیدی خود را دوباره از طریق مسیر های خاص به سینک منتقل می کنند این عمل تا زمانی که داده به یک نود ذخیره منتقل شود ادامه پیدا می کند عملیات ارسال دوباره مستقل از پرس و جو می باشد و بنابراین نیاز به هیچ پردازشی ندارد. شکلهای زیر این تعریف ها را به خوبی نمایان می کند.
(تصاویر در فایل اصلی موجود است)
در شبکه های سنسوری که در آن مقادیر زیادی داده جمع آوری و برای بازیابی در آینده ذخیره می شوند، ذخیره سازی به عنوان موضوع مهمی مطرح شده است .
اخیراً برای ذخیره داده در شبکه های حسگر ( سنسور ) مفهوم Storage Network ارائه شده است . Storage Node بار بالای انتقال تمام داده ها به یک مکان مرکزی برای ذخیره را تعدیل می کند . داده جمع آوری شده در شبکه سنسور یا باید به یک مکان مرکزی ( Sink ) انتقال داده شود یا اینکه در خود گره ها ذخیره شود .
مشکلاتی برای ذخیره داده در سنسور ها وجود دارد : اول اینکه یک سنسور تنها فضای حافظه محدودی در اختیار دارد که از ذخیره مقادیر زیادی داده جلوگیری می کند. دوم اینکه سنسور ها توسط باطری عمل می کنند و داده ذخیره شده هنگام اتمام باطری از بین می رود سوم اینکه جستجوی داده ها در شبکه ای با تجمع داده های پخش شده ( Scattered ) مستلزم صرف هزینه انتقال بالایی است.
روش دیگر یعنی ذخیره در Sink مستلزم انتقال تمام داده ها به گره مرکزی ( Sink ) است.
این یک روش ایده آل برای ذخیره داده ها است. زیرا که ذخیره به صورت دائمی است. با این حال قابلیت انتقال هر گره در شبکه بسیار محدود است و میزان زیادی داده نمی تواند به صورت کارا از شبکه به سینک انتقال داده شود. بعلاوه انتقال داده مستلزم صرف انرژی زیادی است و در نتیجه خالی شدن باطری سنسور به صورت سریع است به ویژه سنسورهای اطراف سینک بسیار استفاده می شود و در نتیجه با از بین رفتن آنها شبکه به سرعت تجزیه می شود.
می توان با افزایش کمی در هزینه های مالی بعضی گره های خاص با حافظه دائمی بیشتر مانند Flash Memory و همچنین با توان باطری بیشتر را در شبکه سنسور استفاده کرد. این گره ها از داده سنسور های نزدیک خود پشتیبان تهیه می کنند و جستجو ها را پاسخ می دهند.
داده ذخیره شده در هر Storage Node را می توان به صورت دوره ای و با استفاده از ربوت ها به یک Data Ware House انتقال داد. فرضیات ما درباره ویژگی تولید داده، پخش Query و پاسخ به Query ها به شرح زیر است
برای تولید داده فرض می کنیم هر گره نرخ rd داده در واحد زمانی می خواند و سایز داده ها در مرحله خواندن به اندازه sd است.
برای پخش Query ها ، rq جستجو در واحد زمانی از طرف کاربران ارائه می شود و سایز Query ها sq است.
برای پاسخ به Query ها فرض می کنیم که اندازه داده ها برای پاسخ به Query نسبت از داده خام است که به آن نرخ کاهش ( Reduction Rate ) می گوییم. نشانگر پاسخ به Query برای جستجوهایی از نوع تجمعی ( Aggregate ) است که جستجوی غالب در Sensor Network است.
مسائل مطرح شده در این زمینه عبارتند از :
مسئله قرار دهی گره های Storage در شبکه
نحوه گزینش بهترین گره Storage ( از لحاظ هزینه ) توسط گره های دیگر که به آنها Forwarding Node می گوییم
این نحوه گزینش با توجه به شرایط پویای شبکه های سنسوری از قبیل خرابی یا اتمام باطری گره ها و یا سرعت تولید داده تاثیر مستقیم در میزان مصرف انرژی و در نتیجه بازه حیات شبکه دارد در این پروژه الگوریتم ارائه شده در مقاله Adaptive and Decentralized Data Storage Selection In Sensor Network پیاده سازی شده است در این مقاله الگوریتم ADSS ارائه شده است و هر Forwarding Node به صورت پیوسته شرایط محیط را چک می کند و با توجه به آن بهترین گره Storage را برای خود به صورت Local انتخاب می کند.
اولین بخش برنامه تولید گراف آغازین ( اولیه ) برای کارگذاری سنسورها در محیط است. محیط به شکل دایره و با مرکزیت گره Sink می باشد. سنسورها با فرآیند تصادفی پوواسن دوبعدی در محیط قرار داده می شوند. پس از قرار دادن سنسورها با توجه به انتقال داده سنسورها و یالها بین گره ها رسم می شوند. بدین ترتیب که ابتدا با مرکزیت هر یک از سنسورها دایره ای با شعاع طول انتقال فرض می شود گره هایی که درون مساحت یک دایره قرار می گیرند به هم متصل می شوند این فرایند را در شکلهای زیر مشاهده می کنید:
شکل 2: رسم دایره های با شعاع طول انتقال
شکل1: گره های شبکه
شکل 3: تشکیل گراف اتصال
به منظور منطبق شدن با شرایط تغییر ( نرخ داده، تعداد ارسال مجدد در اطراف نودهای ذخیره ) الگوریتم توزیع شده ما استراتژی شناسایی همسایه را به کار می برد به این صورت که ابتدا هزینه انتقال داده به نود فعال را محاسبه می کند سپس هزینه انتخابهای جایگزین را تخمین می زند و بعد هزینه نودهای فعال و جایگزین را مقاسیه می کند و در نهایت انتخاب را به نود ذخیره با کمترین هزینه تغییر می دهد و این نود به عنوان نود فعال انتخاب می شود.
استراتژی شناسایی ( Exploration )
این ایده به این صورت می باشد که نود فعال نرخ داده خود را به نودهای دیگر می فرستد برای اینکه هزینه ها مقایسه شوند از آنجائیکه یک مجموعه از نودهای جایگزین به هر ند فعال مربوط می باشد ما این نودها را به عنوان tentative node معرفی می کنیم هزینه درست به همان روشی که برای نودهای فعال محاسبه می شود تعیین می گردد ما نیاز داریم که موارد زیر را تعریف کنیم :
سیاست شناسایی ( Exploration Policy ) برای انتخاب اینکه کدام نودها به عنوان tentative node بایستی انتخاب شوند. پیچیدگی ظریف فضای راه حل مانع از در نظر گرفتن کسر کم می شود بنابراین سیاست بایستی برای انتخاب tentative node هیوریستکی انتخاب کند که به راه حل بهینه نزدیک باشد بر طبق استراتژی شناسایی همسایه نودهای همسایه نود فعال به عنوان tentative node انتخاب می شوند.
ما همچنین نیاز به سیاست اقتباس ( Adoption Policy ) برای انتخاب نود فعال از بین ندهای tentative node داریم در انجا ما فقط دو عمل ممکن را در نظر می گیریم : یا اینکه اجرای پرس و جو را با نود فعال ادامه دهیم و یا اینکه به یک نود فعال جدید برویم و برای این انتخاب از الگوریتمهای حریصانه استفاده می کنیم طوری که هزینه این انتقال کمترین باشد.