lan-crawler bachlor ru

21
Система информационного поиска для локальных компьютерных сетей СПбГПУ, 2008 Докладчик: Садаков Дмитрий (6084/4) Руководитель к.т.н. Амосов В.В. 1

Upload: cdima

Post on 05-Dec-2014

2.746 views

Category:

Technology


4 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Lan-Crawler Bachlor RU

Система информационного поиска для локальных компьютерных сетей

СПбГПУ, 2008Докладчик: Садаков Дмитрий (6084/4)Руководитель к.т.н. Амосов В.В.

1

Page 2: Lan-Crawler Bachlor RU

Актуальность проблемы Рост числа локальных компьютерных сетей

Объединение домашних локальных сетей ЛВС общежитий и организаций, региональные сети

Коллекции файлов Дистрибутивы программ Медиа-файлы: видео, фильмы, музыка Большая общая ёмкость информационного пространства

Неэффективность существующих поисковых систем для ЛВС по сравнению с поиском в сети Интернет В интернете: Google, категории файлов, описания фильмов

Сравнение скоростей передачи данных Интернет-каналы (256 Kb/s): 1 GB = 8 часов. Локальная сеть (100 Kb/s): 1 GB = 2 мин.

Вывод: Востребованность поисковых систем, ориентированных на локальные компьютерные сети

2

Page 3: Lan-Crawler Bachlor RU

Цель проекта Создание эффективной поисковой системы для локальной

сети, превосходящей аналоги по скорости индексации и по скорости обработки поисковых запросов

Этапы проекта Построение поискового робота

Сбор данных о доступных файлах в локальной сети в СУБД Выбор эффективной стратегии сканирования удалённых машин Ранжирование узлов при повторной индексации

Создание эффективного модуля индексации Обработка собранной информации лексическим анализатором Скорость поиска по обратному индексу

Создание эффективного модуля обработки поисковых запросов Создание синхронизированных БД и обратного индекса

3

Page 4: Lan-Crawler Bachlor RU

Исходные данные и ограничения Исходные данные

СУБД SQL Firebird 2.0 Индексатор и анализатор Lucene.Net

Лексический анализ, построение обратного индекса Алгоритмы поисковых систем: HITS, PageRank, Beagle

Ограничения Ограничения на локальную компьютерную сеть

Наличие сервиса NetBIOS, Минимум скорости Ethernet – 100 Mbit/sec, Размеры локальной сети (меньше 1000 машин)

Операционные системы Windows Server, XP, или Vista

Среда разработки: Microsoft Visual Studio 2003, .Net Framework, C# 2.0

4

Page 5: Lan-Crawler Bachlor RU

Функциональная схема программы

5

Модуль доступа к удалённым ресурсам Модуль индексации Модуль хранения данных Встроенный веб-сервер

Page 6: Lan-Crawler Bachlor RU

Поисковый робот Сканирование машин локальной сети и создание очереди на

индексацию Создан для одновременной работы многих экземпляров:

Разбиение алгоритма на отдельные задачи, которые могут выполняться параллельно Сохранение файлов на индексацию в очередь Получение изменённой директории от узла Сравнение полученной директории с копей в БД Сохранение изменений в БД

Исполнение набора политик:1. Политика выборки узлов сети2. Политика повторного посещения3. Политика вежливости 4. Политика параллельного сканирования

Используется модуль балансирующий нагрузки на ЦП

6

Page 7: Lan-Crawler Bachlor RU

Модуль хранения данных Реляционная СУБД Firebird 2.0

+ Быстрая скорость хранения и выборка по реляционным правилам + Не требует отдельного сервера - Отсутствует поиск с лексическим анализом

Лексический анализатор и индексатор Lucene.Net + Поиск с лексическим анализом и релевантным ранжированием + Быстрый поиск по обратному индексу: 30-50 мс - Нет фильтрации по реляционным правилам

Комбинирование СУБД + Lucene + Релевантные запросы с лексическим анализом + Фильтрация по реляционным правилами

7

Page 8: Lan-Crawler Bachlor RU

Веб-сервер встроен в программу (не требуется внешний) Автоматическая MAC+IP авторизация

Веб-сервис Отделение логики от представления (API возвращает результаты в XML, XSLT)

Веб-портал Веб-интерфейс Web 2.0 (AJAX, XML)

Программный интерфейс (API)

8

График исследований работы веб-сервера:Среднее время отклика ~50 мсек

Page 9: Lan-Crawler Bachlor RU

Сравнение скоростей сканирования созданной программы и аналогов

Вывод: Lan-Crawler работает быстрее после первых 50-ти секунд Для небольших коллекций (меньше 250 файлов) лучше использовать Windows XP Для больших коллекций (больше 250 файлов) лучше использовать Lan-Crawler .Net

Сравнение скоростей сканирования файлов разных программ: Lan-Crawler .Net QuickSearch (Beagle) Windows XP

9

Page 10: Lan-Crawler Bachlor RU

Текущие задачи

Поддержка спецификации OpenSearch.org для URL REST XML-поиска

Исследование других стратегий индексации и обхода

Высокая нагрузка на процессор сервера и СУБД, решения: С помощью репликации базы данных на кластер СУБД Очередь задач с балансировкой загруженности ЦП

Будущие исследования Реализация «сети агентов»

С помощью Microsoft Sync Framework Синхронизация в локальной сети

10

Page 11: Lan-Crawler Bachlor RU

Тестирование программы Создан самотестирующийся код

Каждая часть программы проверяется тестами Спецификации вручную переводятся в тесты один

раз (написано 832 C# Unit-теста) Тесты запускаются автоматически после компиляции

программы Тесты выполняются программой Nunit

Автоматическое тестирование + Позволяет автоматизировать (функциональное,

модульное, интеграционное тестирование) - Не позволяет проверять производительность кода Покрытие кода тестами на системное тестирование

-- 72% (результат программы NCover) Для тестирования веб-сервера используется

специальная программа Apache JMeter

11

Page 12: Lan-Crawler Bachlor RU

Метрики Программы Код программы:

MS С# 2.0: 6761 строк, классов 147, 94 файла Комментарий: 4034 строк (37%) SQL: генерация схемы БД – 908 Таблиц – 21, View – 3, Trigger - 26

Используемые библиотеки - 4 Firebird, Lucene.Net, log4net, nUnit

Файлов – 356, директорий - 44 94 C#, 4 XML, 13 XSLT, 32 HTML, 15 JavaScript CSS, изображения и файлы веб-портала

Качество кода проверяется метриками в NDepend 832 NUnit–тестов

Сроки проекта: Июнь 2006: версия 1.0, РНР, MS Access Август 2006: версия 2.0, C#, SQL Firebird Ноябрь 2007: версия 3.0, C#, NHibernate

12

Page 13: Lan-Crawler Bachlor RU

Заключение Построена система информационного поиска Lan-Crawler

Соизмеримая скорость первичной и повторной индексаций Выбран оптимальный алгоритм для параллельного обхода узлов сети Высокая скорость ответа на поисковые запросы с лексическим анализом

Проект открытый; дистрибутивы и весь исходный код располагаются на сайте http://lan-crawler.sourceforge.net

13

Примеры внедрения: Районная локальной сети пос. Металлострой (300 пользователей, общее объем файлов ~ 7 Тб) Локальной сети общежития СПбГПУ (в тестовом режиме, общий объем файлов ~4.9 Тб)

Page 14: Lan-Crawler Bachlor RU

Спасибо за внимание.

14

Page 15: Lan-Crawler Bachlor RU

Потенциал ЛВС по сравнению с сетью Интернет Физические преимущества

Скорость передачи данных между узлами: Интернет: ~ 0.5-1.0 мегабит/сек ЛВС: от 10, 100, 1000 Мегабит/сек

Скорость отклика узла на сообщения (Answer timeout) Интернет: до 30 секунд, в среднем 150-300 миллисекунд ЛВС: до 10 миллисекунд, в среднем 1-2 миллисекунд

Преимущества объема Локальные сети ограничены в своём размере

ЛВС: 300, 500, 1000+ ( домашние, корпоративные, районные) Интернет: количество узлов безгранично (IP6, NAT)

15

Page 16: Lan-Crawler Bachlor RU

Область применения

Примеры внедрения:

Программа используется в районной локальной сети пос. Металлостроя (www.metallonet.ru) С начала 2007 года 300 пользователей Общее количество файлов: ~42 000, общий объем ~ 7 Тб

Работает в локальной сети общежития СПбГПУ В тестовом режиме над видео коллекцией Общее количество файлов: ~14 000, общий объем ~4.9 Тб

16

Page 17: Lan-Crawler Bachlor RU

Концепция использования Схема окружения

Районная компьютерная сеть объединяет сотни компьютеров

Любой компьютер может предоставить доступ на чтение файлов другим

Поисковая система Устанавливается на одном компьютере в

локальной сети, предоставляет вебпортал Анализируется и индексируется файловая

структура сети, сохраняется в СУБД Пользователь заходит на вебпортал через

браузер и производит поиск Авторизация по связке IP+Mac Поиск обрабатывается лексическим

анализатором, поиск по смежным словам Поиск по метаинформации

Программы: по комментариям, описанию Фильмы: актёры, режиссёры, по описанию Музыка: по исполнителю, альбому, году

17

Page 18: Lan-Crawler Bachlor RU

Архитектура проекта

18

Слой доступа к удалённым ресурсам Слой доступа к данным: Модуль индексации Встроенный веб-сервер

Page 19: Lan-Crawler Bachlor RU

Реализация: модули проекта Слой доступа к удалённым ресурсам

Проверяет доступность компьютеров в локальной сети. Обходит узлы сети и ставит файлы на очередь индексации Производит авторизацию по связке MAC+IP

Слой доступа к данным: Встроенная база данных SQL FireBird Выполняет запросами в СУБД и индекс для быстрого, гибкого поиска

Модуль индексации Индексирует доступные файлы удалённых машин Составляет обратный индексный файл для быстрого поиска Лексически обрабатывает поисковые запросы пользователей

Встроенный веб-сервер Основной интерфейс пользователя, принимает поисковые запросы Сбор дополнительной информации из Интернета

19

Page 20: Lan-Crawler Bachlor RU

Диаграмма классов модели Проблемно-ориентированное проектирование приложений

(Domain-Driven Design) – построение модели для абстрагирования бизнес логики от конкретной реализации

Модель предметной области позволила упростить создание абстрагированного гибридного решения хранения данных.

Модель может использоваться вне решения Lan-Crawler и ПС

21

Page 21: Lan-Crawler Bachlor RU

Сравнение показателей скорости обхода

График показывает количество

просканированных важных файлов, по сравнению с общим количеством.

Общее количество файлов 17 000 Достижение 100% - найдены все файлы

Вывод: выгодно отдавать приоритет узлам

с наибольшим количеством важных файлов

За первые 20% времени можно обновить 60% важных директорий

График показывает эффективность обхода важных ресурсов локальной сети, изменяя стратегию обхода узлов. Стратегии: PageRank (глобальная важность директории) Backlink (выбирается узел, а потом важные директории) Breadth (вширь, на каждом этапе выбирается самая важная папка) Random (на каждом шаге выбирается любая папка)

23