Система информационного поиска для локальных компьютерных сетей СПбГПУ , 200 8 Докладчик :  Садаков Дмитрий (6084/4) Руков...
Актуальность проблемы <ul><li>Рост числа локальных   компьютерных сетей </li></ul><ul><ul><li>Объединение домашних локальн...
Цель проекта <ul><li>Создание эффективной поисковой системы для локальной сети, превосходящей аналоги </li></ul><ul><ul><l...
Исходные данные и ограничения <ul><li>Исходные данные </li></ul><ul><ul><li>СУБД  SQL Firebird 2.0 </li></ul></ul><ul><ul>...
Функциональная схема программы <ul><li>Модуль доступа к удалённым ресурсам </li></ul><ul><li>Модуль индексации </li></ul><...
Поисковый робот <ul><li>Сканирование машин локальной сети и создание очереди на индексацию </li></ul><ul><li>Создан для од...
Модуль хранения данных <ul><li>Реляционная СУБД  Firebird  2 .0 </li></ul><ul><ul><li>+  Быстрая скорость хранения и выбор...
<ul><li>Веб-сервер  </li></ul><ul><ul><li>встроен в программу (не требуется внешний) </li></ul></ul><ul><ul><li>Автоматиче...
Сравнение скоростей сканирования созданной программы и аналогов <ul><li>Вывод: </li></ul><ul><ul><li>Lan-Crawler  работает...
Текущие задачи <ul><li>Поддержка спецификации  OpenSearch.org  для  URL REST XML- поиска </li></ul><ul><li>Исследование др...
Тестирование программы <ul><li>Создан самотестирующийся код </li></ul><ul><ul><li>Каждая часть программы проверяется теста...
Метрики Программы <ul><li>Код программы:  </li></ul><ul><ul><li>MS  С # 2.0: 6761  строк ,  классов  147 ,  94  файла </li...
Заключение <ul><li>Построена система информационного поиска  Lan-Crawler </li></ul><ul><ul><li>Соизмеримая скорость первич...
<ul><li>Спасибо за внимание . </li></ul>
Потенциал ЛВС по сравнению с сетью Интернет <ul><li>Физические преимущества </li></ul><ul><ul><li>Скорость передачи данных...
Область применения  <ul><li>Примеры внедрения: </li></ul><ul><li>Программа используется в районной локальной сети пос. Мет...
Концепция использования <ul><li>Схема окружения </li></ul><ul><ul><li>Районная компьютерная сеть объединяет сотни компьюте...
Архитектура проекта <ul><li>Слой доступа к удалённым ресурсам </li></ul><ul><li>Слой доступа к данным: </li></ul><ul><li>М...
Реализация: модули проекта <ul><li>Слой доступа к удалённым ресурсам </li></ul><ul><ul><li>Проверяет доступность компьютер...
Диаграмма классов модели <ul><li>Проблемно-ориентированное проектирование приложений ( Domain-Driven Design ) – построение...
Модуль хранения данных <ul><li>Реляционная СУБД  Firebird  2 .0 </li></ul><ul><ul><li>+  Быстрая скорость хранения и выбор...
Сравнение показателей скорости обхода <ul><li>График  </li></ul><ul><ul><li>показывает количество просканированных важных ...
Upcoming SlideShare
Loading in...5
×

Lan-Crawler Bachlor RU

1,461

Published on

Masters degree presentation for my project Lan-Crawler: Open source indexer of shared files in a lan.

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,461
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • <number>
  • <number>
  • Lan-Crawler Bachlor RU

    1. 1. Система информационного поиска для локальных компьютерных сетей СПбГПУ , 200 8 Докладчик : Садаков Дмитрий (6084/4) Руководитель к.т.н. Амосов В.В.
    2. 2. Актуальность проблемы <ul><li>Рост числа локальных компьютерных сетей </li></ul><ul><ul><li>Объединение домашних локальных сетей </li></ul></ul><ul><ul><li>ЛВС общежитий и организаций, региональные сети </li></ul></ul><ul><li>Коллекции файлов </li></ul><ul><ul><li>Дистрибутивы программ </li></ul></ul><ul><ul><li>Медиа-файлы: видео , фильмы, музыка </li></ul></ul><ul><ul><li>Большая общая ёмкость информационного пространства </li></ul></ul><ul><li>Неэффективность существующих поисковых систем для ЛВС по сравнению с поиском в сети Интернет </li></ul><ul><ul><li>В интернете: Google, категории файлов, описания фильмов </li></ul></ul><ul><li>Сравнение скоростей передачи данных </li></ul><ul><ul><li>Интернет-каналы (256 Kb/s) : 1 GB = 8 часов. </li></ul></ul><ul><ul><li>Локальная сеть (100 Kb/s) : 1 GB = 2 мин. </li></ul></ul><ul><li>Вывод: Востребованность поисковых систем, ориентированных на локальные компьютерные сети </li></ul>
    3. 3. Цель проекта <ul><li>Создание эффективной поисковой системы для локальной сети, превосходящей аналоги </li></ul><ul><ul><li>по скорости индексации и </li></ul></ul><ul><ul><li>по скорости обработки поисковых запросов </li></ul></ul><ul><li>Этапы проекта </li></ul><ul><li>Построение поискового робота </li></ul><ul><ul><li>Сбор данных о доступных файлах в локальной сети в СУБД </li></ul></ul><ul><ul><li>Выбор эффективной стратегии сканирования удалённых машин </li></ul></ul><ul><ul><li>Ранжирование узлов при повторной индексации </li></ul></ul><ul><li>Создание эффективного модуля индексации </li></ul><ul><ul><li>Обработка собранной информации лексическим анализатором </li></ul></ul><ul><ul><li>Скорость поиска по обратному индексу </li></ul></ul><ul><li>Создание эффективного модуля обработки поисковых запросов </li></ul><ul><ul><li>Создание синхронизированных БД и обратного индекса </li></ul></ul>
    4. 4. Исходные данные и ограничения <ul><li>Исходные данные </li></ul><ul><ul><li>СУБД SQL Firebird 2.0 </li></ul></ul><ul><ul><li>Индексатор и анализатор Lucene.Net </li></ul></ul><ul><ul><ul><li>Лексический анализ, построение обратного индекса </li></ul></ul></ul><ul><ul><li>Алгоритмы поисковых систем: HITS, PageRank , Beagle </li></ul></ul><ul><li>Ограничения </li></ul><ul><ul><li>Ограничения на локальную компьютерную сеть </li></ul></ul><ul><ul><ul><li>Наличие сервиса NetBIOS , </li></ul></ul></ul><ul><ul><ul><li>Минимум скорости Ethernet – 100 Mbit/sec , </li></ul></ul></ul><ul><ul><ul><li>Размеры локальной сети (меньше 1000 машин) </li></ul></ul></ul><ul><ul><li>Операционные системы Windows Server, XP, или Vista </li></ul></ul><ul><li>Среда разработки: </li></ul><ul><ul><li>Microsoft Visual Studio 2003, .Net Framework , C# 2.0 </li></ul></ul>
    5. 5. Функциональная схема программы <ul><li>Модуль доступа к удалённым ресурсам </li></ul><ul><li>Модуль индексации </li></ul><ul><li>Модуль хранения данных </li></ul><ul><li>Встроенный веб-сервер </li></ul>
    6. 6. Поисковый робот <ul><li>Сканирование машин локальной сети и создание очереди на индексацию </li></ul><ul><li>Создан для одновременной работы многих экземпляров: </li></ul><ul><ul><li>Разбиение алгоритма на отдельные задачи, которые могут выполняться параллельно </li></ul></ul><ul><ul><li>Сохранение файлов на индексацию в очередь </li></ul></ul><ul><ul><li>Получение изменённой директории от узла </li></ul></ul><ul><ul><li>Сравнение полученной директории с копей в БД </li></ul></ul><ul><ul><li>Сохранение изменений в БД </li></ul></ul><ul><li>Исполнение набора политик: </li></ul><ul><ul><li>Политика выборки узлов сети </li></ul></ul><ul><ul><li>Политика повторного посещения </li></ul></ul><ul><ul><li>Политика вежливости </li></ul></ul><ul><ul><li>Политика параллельного сканирования </li></ul></ul><ul><li>Используется модуль балансирующий нагрузки на ЦП </li></ul>
    7. 7. Модуль хранения данных <ul><li>Реляционная СУБД Firebird 2 .0 </li></ul><ul><ul><li>+ Быстрая скорость хранения и выборка по реляционным правилам </li></ul></ul><ul><ul><li>+ Не требует отдельного сервера </li></ul></ul><ul><ul><li>- Отсутствует поиск с лексическим анализом </li></ul></ul><ul><li>Лексический анализатор и индексатор Lucene.Net </li></ul><ul><ul><li>+ Поиск с лексическим анализом и релевантным ранжированием </li></ul></ul><ul><ul><li>+ Быстрый поиск по обратному индексу: 30-50 мс </li></ul></ul><ul><ul><li>- Нет фильтрации по реляционным правилам </li></ul></ul><ul><li>Комбинирование СУБД + Lucene </li></ul><ul><ul><li>+ Релевантные запросы с лексическим анализом </li></ul></ul><ul><ul><li>+ Фильтрация по реляционным правилами </li></ul></ul>
    8. 8. <ul><li>Веб-сервер </li></ul><ul><ul><li>встроен в программу (не требуется внешний) </li></ul></ul><ul><ul><li>Автоматическая MAC+IP авторизация </li></ul></ul><ul><li>Веб-сервис </li></ul><ul><ul><li>Отделение логики от представления ( API возвращает результаты в XML, X SLT) </li></ul></ul><ul><li>Веб-портал </li></ul><ul><ul><li>Веб-интерфейс Web 2 . 0 ( AJAX , XML) </li></ul></ul>Программный интерфейс ( API) <ul><ul><li>График исследований работы веб-сервера: </li></ul></ul><ul><ul><li>Среднее время отклика ~ 50 мсек </li></ul></ul>
    9. 9. Сравнение скоростей сканирования созданной программы и аналогов <ul><li>Вывод: </li></ul><ul><ul><li>Lan-Crawler работает быстрее после первых 50-ти секунд </li></ul></ul><ul><ul><li>Для небольших коллекций (меньше 250 файлов) лучше использовать Windows XP </li></ul></ul><ul><ul><li>Для больших коллекций (больше 250 файлов) лучше использовать Lan-Crawler .Net </li></ul></ul><ul><li>Сравнение скоростей сканирования файлов разных программ: </li></ul><ul><ul><ul><li>Lan-Crawler .Net </li></ul></ul></ul><ul><ul><ul><li>QuickSearch (Beagle) </li></ul></ul></ul><ul><ul><ul><li>Windows XP </li></ul></ul></ul>
    10. 10. Текущие задачи <ul><li>Поддержка спецификации OpenSearch.org для URL REST XML- поиска </li></ul><ul><li>Исследование других стратегий индексации и обхода </li></ul><ul><li>Высокая нагрузка на процессор сервера и СУБД, решения: </li></ul><ul><ul><li>С помощью репликации базы данных на кластер СУБД </li></ul></ul><ul><ul><li>Очередь задач с балансировкой загруженности ЦП </li></ul></ul><ul><li>Будущие исследования </li></ul><ul><li>Реализация « сети агентов » </li></ul><ul><ul><li>С помощью Microsoft Sync Framework </li></ul></ul><ul><ul><li>Синхронизация в локальной сети </li></ul></ul>
    11. 11. Тестирование программы <ul><li>Создан самотестирующийся код </li></ul><ul><ul><li>Каждая часть программы проверяется тестами </li></ul></ul><ul><ul><li>Спецификации вручную переводятся в тесты один раз (написано 832 C# Unit- теста ) </li></ul></ul><ul><ul><li>Тесты запускаются автоматически после компиляции программы </li></ul></ul><ul><ul><li>Тесты выполняются программой Nunit </li></ul></ul><ul><li>Автоматическое тестирование </li></ul><ul><ul><li>+ Позволяет автоматизировать ( функциональное, модульное, интеграционное тестирование ) </li></ul></ul><ul><ul><li>- Не позволяет проверять производительность кода </li></ul></ul><ul><ul><li>Покрытие кода тестами на системное тестирование -- 72% (результат программы NCover) </li></ul></ul><ul><li>Для тестирования веб-сервера используется специальная программа Apache JMeter </li></ul>
    12. 12. Метрики Программы <ul><li>Код программы: </li></ul><ul><ul><li>MS С # 2.0: 6761 строк , классов 147 , 94 файла </li></ul></ul><ul><ul><li>Комментарий: 4034 строк ( 37% ) </li></ul></ul><ul><ul><li>SQL: генерация схемы БД – 908 </li></ul></ul><ul><ul><li>Таблиц – 21, View – 3, Trigger - 26 </li></ul></ul><ul><li>Используемые библиотеки - 4 </li></ul><ul><ul><li>Firebird, Lucene.Net, log4net, nUnit </li></ul></ul><ul><li>Файлов – 356, директорий - 44 </li></ul><ul><ul><li>94 C# , 4 XML, </li></ul></ul><ul><ul><li>13 XSLT , 32 HTML, 15 JavaScript </li></ul></ul><ul><ul><li>CSS, изображения и файлы веб-портала </li></ul></ul><ul><li>Качество кода проверяется метриками в NDepend </li></ul><ul><ul><li>832 NUnit– тестов </li></ul></ul><ul><li>Сроки проекта: </li></ul><ul><ul><li>Июнь 2006: версия 1.0, РНР , MS Access </li></ul></ul><ul><ul><li>Август 200 6: версия 2.0, C# , SQL Firebird </li></ul></ul><ul><ul><li>Ноябрь 2007 : версия 3.0, C#, NHibernate </li></ul></ul>
    13. 13. Заключение <ul><li>Построена система информационного поиска Lan-Crawler </li></ul><ul><ul><li>Соизмеримая скорость первичной и повторной индексаций </li></ul></ul><ul><ul><li>Выбран оптимальный алгоритм для параллельного обхода узлов сети </li></ul></ul><ul><ul><li>Высокая скорость ответа на поисковые запросы с лексическим анализом </li></ul></ul><ul><li>Проект открытый; дистрибутивы и весь исходный код располагаются на сайте http://lan-crawler.sourceforge.net </li></ul><ul><li>Примеры внедрения: </li></ul><ul><li>Районная локальной сети пос. Металлострой (300 пользователей, общее объем файлов ~ 7 Тб) </li></ul><ul><li>Локальной сети общежития СПбГПУ (в тестовом режиме, общий объем файлов ~ 4 .9 Тб) </li></ul>
    14. 14. <ul><li>Спасибо за внимание . </li></ul>
    15. 15. Потенциал ЛВС по сравнению с сетью Интернет <ul><li>Физические преимущества </li></ul><ul><ul><li>Скорость передачи данных между узлами: </li></ul></ul><ul><ul><ul><li>Интернет: ~ 0.5-1.0 мегабит/сек </li></ul></ul></ul><ul><ul><ul><li>ЛВС: от 10, 100, 1000 Мегабит/сек </li></ul></ul></ul><ul><ul><li>Скорость отклика узла на сообщения ( Answer timeout) </li></ul></ul><ul><ul><ul><li>Интернет: до 30 секунд, в среднем 150-300 миллисекунд </li></ul></ul></ul><ul><ul><ul><li>ЛВС: до 10 миллисекунд, в среднем 1-2 миллисекунд </li></ul></ul></ul><ul><li>Преимущества объема </li></ul><ul><ul><li>Локальные сети ограничены в своём размере </li></ul></ul><ul><ul><ul><li>ЛВС: 300, 500, 1000+ ( домашние, корпоративные, районные) </li></ul></ul></ul><ul><ul><ul><li>Интернет: количество узлов безгранично ( IP6, NAT) </li></ul></ul></ul>
    16. 16. Область применения <ul><li>Примеры внедрения: </li></ul><ul><li>Программа используется в районной локальной сети пос. Металлостроя ( www.metallonet.ru ) </li></ul><ul><ul><li>С начала 2007 года </li></ul></ul><ul><ul><li>300 пользователей </li></ul></ul><ul><ul><li>Общее количество файлов : ~42 000, общий объем ~ 7 Тб </li></ul></ul><ul><li>Работает в локальной сети общежития СПбГПУ </li></ul><ul><ul><li>В тестовом режиме над видео коллекцией </li></ul></ul><ul><ul><li>Общее количество файлов: ~ 14 000, общий объем ~ 4 .9 Тб </li></ul></ul>
    17. 17. Концепция использования <ul><li>Схема окружения </li></ul><ul><ul><li>Районная компьютерная сеть объединяет сотни компьютеров </li></ul></ul><ul><ul><li>Любой компьютер может предоставить доступ на чтение файлов другим </li></ul></ul><ul><li>Поисковая система </li></ul><ul><ul><li>Устанавливается на одном компьютере в локальной сети, предоставляет вебпортал </li></ul></ul><ul><ul><li>Анализируется и индексируется файловая структура сети, сохраняется в СУБД </li></ul></ul><ul><ul><li>Пользователь заходит на вебпортал через браузер и производит поиск </li></ul></ul><ul><ul><li>Авторизация по связке IP + Mac </li></ul></ul><ul><ul><li>Поиск обрабатывается лексическим анализатором, поиск по смежным словам </li></ul></ul><ul><li>Поиск по метаинформации </li></ul><ul><ul><li>Программы: по комментариям, описанию </li></ul></ul><ul><ul><li>Фильмы: актёры, режиссёры, по описанию </li></ul></ul><ul><ul><li>Музыка: по исполнителю, альбому, году </li></ul></ul>
    18. 18. Архитектура проекта <ul><li>Слой доступа к удалённым ресурсам </li></ul><ul><li>Слой доступа к данным: </li></ul><ul><li>Модуль индексации </li></ul><ul><li>Встроенный веб-сервер </li></ul>
    19. 19. Реализация: модули проекта <ul><li>Слой доступа к удалённым ресурсам </li></ul><ul><ul><li>Проверяет доступность компьютеров в локальной сети. </li></ul></ul><ul><ul><li>Обходит узлы сети и ставит файлы на очередь индексации </li></ul></ul><ul><ul><li>Производит авторизацию по связке MAC+IP </li></ul></ul><ul><li>Слой доступа к данным: </li></ul><ul><ul><li>Встроенная база данных SQL FireBird </li></ul></ul><ul><ul><li>Выполняет запросами в СУБД и индекс для быстрого, гибкого поиска </li></ul></ul><ul><li>Модуль индексации </li></ul><ul><ul><li>Индексирует доступные файлы удалённых машин </li></ul></ul><ul><ul><li>Составляет обратный индексный файл для быстрого поиска </li></ul></ul><ul><ul><li>Лексически обрабатывает поисковые запросы пользователей </li></ul></ul><ul><li>Встроенный веб-сервер </li></ul><ul><ul><li>Основной интерфейс пользователя, принимает поисковые запросы </li></ul></ul><ul><ul><li>Сбор дополнительной информации из Интернета </li></ul></ul>
    20. 20.
    21. 21. Диаграмма классов модели <ul><li>Проблемно-ориентированное проектирование приложений ( Domain-Driven Design ) – построение модели для абстрагирования бизнес логики от конкретной реализации </li></ul><ul><li>Модель предметной области позволила упростить создание абстрагированного гибридного решения хранения данных. </li></ul><ul><li>Модель может использоваться вне решения Lan-Crawler и ПС </li></ul>
    22. 22. Модуль хранения данных <ul><li>Реляционная СУБД Firebird 2 .0 </li></ul><ul><ul><li>+ Быстрая скорость хранения и выборка по реляционным правилам </li></ul></ul><ul><ul><li>+ Не требует отдельного сервера </li></ul></ul><ul><ul><li>- Отсутствует поиск с лексическим анализом </li></ul></ul><ul><li>Анализатор и индексатор Lucene.Net </li></ul><ul><ul><li>+ Гибкий поиск с опечатками и релевантностью </li></ul></ul><ul><ul><li>+ Быстрый поиск по обратному индексу: 30-50 мс </li></ul></ul><ul><ul><li>- Нет фильтрации по реляционным правилам </li></ul></ul><ul><li>Комбинирование модулей ( СУБД + Lucene ) </li></ul><ul><ul><li>+ Релевантные запросы с лексическим анализом </li></ul></ul><ul><ul><li>+ Фильтрация по реляционным правилами </li></ul></ul>Тип запроса разные источники данных СУБД Индекс Гибрид Кэшир. Запрос по фиксированному полю 15- 20 мс 20-30 мс 15-20 мс 5-15 мс Запрос по нескольким фиксированным полям 20-40 мс 50-60 мс 20-40 мс 5-15 мс Запрос по ключевым словам (full text search) 520-750 мс 30 мс 50-80 мс 5-15 мс Запрос, требующий лексический анализ n/a 20-50 мс 50-80 мс 5-15 мс
    23. 23. Сравнение показателей скорости обхода <ul><li>График </li></ul><ul><ul><li>показывает количество просканированных важных файлов, по сравнению с общим количеством. </li></ul></ul><ul><ul><li>Общее количество файлов 17 000 </li></ul></ul><ul><ul><li>Достижение 100% - найдены все файлы </li></ul></ul><ul><li>Вывод: </li></ul><ul><ul><li>выгодно отдавать приоритет узлам с наибольшим количеством важных файлов </li></ul></ul><ul><ul><li>За первые 20% времени можно обновить 60% важных директорий </li></ul></ul><ul><li>График показывает эффективность обхода важных ресурсов локальной сети, изменяя стратегию обхода узлов. Стратегии: </li></ul><ul><ul><li>PageRank (глобальная важность директории) </li></ul></ul><ul><ul><li>Backlink ( выбирается узел, а потом важные директории) </li></ul></ul><ul><ul><li>Breadth ( вширь, на каждом этапе выбирается самая важная папка) </li></ul></ul><ul><ul><li>Random ( на каждом шаге выбирается любая папка) </li></ul></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×