У зв'язку з бурхливим розвитком Всесвітньої павутини, з кожним днем все більш актуальною стає проблема автоматизованого збору та аналізу інформації, що розміщується на різних веб-ресурсах. Ще на початку 90-х років минулого століття Всесвітня павутина являла собою величезна кількість слабо структурованої інформації, проводити пошук в якій стало для людини практично непосильним завданням. Саме в цей час стали з'являтися перші розробки в сфері автоматизованих агентів, що полегшують завдання пошуку необхідної інформації в павутині. Основною частиною таких систем є пошуковий робот - програмний комплекс, що здійснює навігацію по веб-ресурсів та збір інформації для бази даних програми-агента[11].У загальному випадку, що збирається роботом інформація складається з веб-сторінок і посилальної структури вебу.
Об'єктом дослідження даної роботи є розподілений пошуковий робот. Основними завданнями розробки пошукового робота є:
Основною метою роботи є поліпшення масштабованості та продуктивності пошукових роботів шляхом використання гнучкої схеми паралелізації завдань.
Для формалізації архітектури пропонується використовувати π-числення [4], а для оцінки - метрики, запропоновані для веб-краулерів в [3]. Ці концепції описані більш детально в наступних розділах.
Наукова новизна роботи полягає у формальному підході до дослідження конкурентних і паралельних процесів в пошуковому роботі, що дозволить виявити шляхи поліпшення політик паралелізації в пошукових роботах.
Практична цінність роботи полягає в тому, що розробляється система може використовуватися для швидкої розгортки розподілених і легко масштабованих веб-краулерів, вирішальних користувальницькі завдання. Також, дослідження конкурентних процесів з даної роботи можуть використовуватися і для побудови інших розподілених систем, відмінних від веб-краулери.
У національному масштабі не було виявлено активних досліджень за темою пошукових роботів.
Дослідження в області пошукових роботів ведуться з самого моменту зародження Всесвітньої павутини. Можна виділити кілька основних напрямів досліджень:
У контексті даної роботи, найбільш цікавими є дослідження в області архітектур пошукових роботів і алгоритмів роботи P2P систем.
Однією з найбільш цитованих та фундаментальних робіт в області пошукових роботів є стаття Сергія Бріна і Ларрі Пейджа «The Anatomy of a Large-Scale Hypertextual Web Search Engine» [2], який описує архітектуру Googlebot за станом на 1998 рік. Безсумнівно, з тих пір Googlebot зазнав масу змін, однак у зв'язку з комерційною природою Google відкритих даних про це немає.
В роботі Junghoo Cho and Hector Garcia-Molina. «Parallel crawlers» [1]представлена класифікація архітектур паралельних пошукових роботів і метрики, використовувані для їх оцінки. Дана магістерська робота багато в чому базується на цих дослідженнях.
Завдання побудови ефективного пошукового робота є досить нетривіальною, з кількох причин:
Завдяки величезним обсягам і гетерогенності Всесвітньої павутини, архітектура пошукового робота і зокрема політики паралелізму, закладені в ній, є цікавим об'єктом досліджень. На сьогоднішній день ключовим моментом, що визначає продуктивність пошукового робота є горизонтальна масштабованість його архітектури, тобто властивість системи збільшувати продуктивність при додаванні нових вузлів (комп'ютерів). Досить цікаве дослідження і спроба класифікації різних архітектур паралельних пошукових роботів представлені в[1].
Однак, існуючі архітектури пошукових роботів досить складні, і їх масштабованість часто далека від лінійної. Також, при масштабуванні можливе погіршення значень метрик якості збираної роботом інформації. Можна зробити висновок, що додаткові дослідження політик паралелізації пошукових роботів можуть поліпшити масштабованість і продуктивність робота, а також підвищити якість зібраних ним даних.
Враховуючи зазначені вище складності, пов'язані з обходом Всесвітньої павутини, архітектури та політики паралелізації пошукових роботів загального призначення спочатку розроблялися таким чином, щоб забезпечити максимально швидке отримання даних і простоту масштабування. Можна виділити такі два великі класи архітектур паралельних пошукових роботів:
На більш низькому рівні, архітектури пошукових роботів можуть відрізнятися методами розподілу завдань між компонентами, способами обміну URL і алгоритмом їх розподілу. Конфігурація конкретного пошукового робота може змінюватись в залежності від потреб використовує його застосування. Наприклад, для мінімізації обсяг даних і оптимізації продуктивності веб-краулери можуть використовуватися відкладені обчислення у формі абстракцій futures [5].
Для оцінки пошукових роботів, можна використовувати наступні метрики, запропоновані в [1].
де N - загальна кількість завантажених сторінок, I - кількість унікальних сторінок.
де I - кількість унікальних сторінок, U - загальна кількість сторінок.
Перераховані вище метрики перебувають у прямій залежності від політик паралелізації, закладених в архітектурі пошукового робота, і мають тенденцію погіршуватися при розподілі конкурентних компонентів або збільшенні їх числа [1]. Цей факт явно показує необхідність подальших досліджень політик паралелізації.
Паралельний пошуковий робот, по своїй суті являє собою зразок системи з конкурентними обчисленнями, і отже до нього можуть бути застосовані математичні методи і моделі конкурентних обчислень. Однією з найбільш виразних моделей конкурентних обчислень є π-числення [4]. Π-числення є Т'юрінгом повної моделлю обчислень і є потужним інструментів для формалізації і дослідження конкурентних процесів з комплексними взаємодіями.
Базове π-числення пропонує наступні примітиви для опису процесів:
Як приклад визначення процесу в термінах π-числення можна розглянути процес Fetch, що виконує безпосередню завантаження сторінки з даного URL:
Даний процес є абстракцію π-числення (тобто параметризують); URL у вигляді (s, p), де s - сервер, p - сторінка, приймається по каналу f, потім відбувається запит сторінки з сервера з подальшим її отриманням за каналу з параметром data. Потім data передається по каналу store в сховище.
Таким чином, за допомогою π-числення можна промоделювати інші компоненти системи, що дозволить більш формально підійти до дослідження архітектур веб-краулерів і політик паралелізації. π-числення дозволяє моделювати складні взаємодії між компонентами системи і проводити структурні перетворення за допомогою механізмів бісімуляціі і структурної конгруентності процесів.
У теорії конкурентних обчислень прийнято виділяти два основних механізми взаємодії: взаємодія за допомогою спільної пам'яті і взаємодію шляхом передачі повідомлень. Це розділення також знаходить відображення в реалізаціях мов програмування та фреймворків. У семантиці π-числення закладено межпроцессное взаємодія за допомогою передачі повідомлень, що необхідно враховувати при виборі засобів реалізації пошукового робота.
Основними вимогами, висунутими до мови реалізації є:
З урахуванням висунутих вимог, в якості мови реалізації була вибрана мова програмування Haskell (http://www.haskell.org). Haskell відноситься до сімейства мов ML і являє собою чистий функціональний мову з відкладеними обчисленнями. Haskell володіє суворої статичної типізацією з автоматичним виведенням типів за моделлю Хиндлі-Мілнер, підтримкою алгебраїчних і рекурсивних типів даних, викликом функції за зразком.
Визначальним фактором у виборі саме цієї мови програмування стала його просунута реалізація примітивів конкурентних обчислень (Concurrent Haskell), близька за семантикою до π-числення [6]. Примітиви Concurrent Haskell реалізують всі основні операції π-числення, крім недетермінірованного вибору, який тим не менш може бути реалізований у випадку необхідності за допомогою інших примітивів.
Специфіка завдання обходу Всесвітньої павутини призводить до неминучого використання конкурентних обчислень при розробці пошукових роботів. Для ефективної реалізації конкурентності та хорошою масштабованості пошукового робота, необхідно приділяти чималу увагу розробці архітектури системи і політик паралелізації.
Проаналізувавши існуючі архітектури, політики паралелізації і методи побудови пошукових роботів, для розробляється системи була обрана децентралізована архітектура. Також було запропоновано використання π-числення як механізму формалізації і подальшого дослідження політик паралелізації пошукових роботів. Для самої реалізації пошукового робота була вибрана мова програмування Haskell і його розширення Concurrent Haskell як найбільш близький до семантикою π-числення спосіб опису конкурентних обчислень.
Важливе зауваження: На момент написання даного реферату магістерська робота ще не закінчена. Остаточне завершення роботи відбудеться в грудні 2011 року. У найближчому майбутньому планується розробка архітектури та реалізація прототипу пошукового робота, порівняння його з іншими реалізаціями.