lan-crawler bachlor ru
DESCRIPTION
Masters degree presentation for my project Lan-Crawler: Open source indexer of shared files in a lan.TRANSCRIPT
Система информационного поиска для локальных компьютерных сетей
СПбГПУ, 2008Докладчик: Садаков Дмитрий (6084/4)Руководитель к.т.н. Амосов В.В.
1
Актуальность проблемы Рост числа локальных компьютерных сетей
Объединение домашних локальных сетей ЛВС общежитий и организаций, региональные сети
Коллекции файлов Дистрибутивы программ Медиа-файлы: видео, фильмы, музыка Большая общая ёмкость информационного пространства
Неэффективность существующих поисковых систем для ЛВС по сравнению с поиском в сети Интернет В интернете: Google, категории файлов, описания фильмов
Сравнение скоростей передачи данных Интернет-каналы (256 Kb/s): 1 GB = 8 часов. Локальная сеть (100 Kb/s): 1 GB = 2 мин.
Вывод: Востребованность поисковых систем, ориентированных на локальные компьютерные сети
2
Цель проекта Создание эффективной поисковой системы для локальной
сети, превосходящей аналоги по скорости индексации и по скорости обработки поисковых запросов
Этапы проекта Построение поискового робота
Сбор данных о доступных файлах в локальной сети в СУБД Выбор эффективной стратегии сканирования удалённых машин Ранжирование узлов при повторной индексации
Создание эффективного модуля индексации Обработка собранной информации лексическим анализатором Скорость поиска по обратному индексу
Создание эффективного модуля обработки поисковых запросов Создание синхронизированных БД и обратного индекса
3
Исходные данные и ограничения Исходные данные
СУБД 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
Функциональная схема программы
5
Модуль доступа к удалённым ресурсам Модуль индексации Модуль хранения данных Встроенный веб-сервер
Поисковый робот Сканирование машин локальной сети и создание очереди на
индексацию Создан для одновременной работы многих экземпляров:
Разбиение алгоритма на отдельные задачи, которые могут выполняться параллельно Сохранение файлов на индексацию в очередь Получение изменённой директории от узла Сравнение полученной директории с копей в БД Сохранение изменений в БД
Исполнение набора политик:1. Политика выборки узлов сети2. Политика повторного посещения3. Политика вежливости 4. Политика параллельного сканирования
Используется модуль балансирующий нагрузки на ЦП
6
Модуль хранения данных Реляционная СУБД Firebird 2.0
+ Быстрая скорость хранения и выборка по реляционным правилам + Не требует отдельного сервера - Отсутствует поиск с лексическим анализом
Лексический анализатор и индексатор Lucene.Net + Поиск с лексическим анализом и релевантным ранжированием + Быстрый поиск по обратному индексу: 30-50 мс - Нет фильтрации по реляционным правилам
Комбинирование СУБД + Lucene + Релевантные запросы с лексическим анализом + Фильтрация по реляционным правилами
7
Веб-сервер встроен в программу (не требуется внешний) Автоматическая MAC+IP авторизация
Веб-сервис Отделение логики от представления (API возвращает результаты в XML, XSLT)
Веб-портал Веб-интерфейс Web 2.0 (AJAX, XML)
Программный интерфейс (API)
8
График исследований работы веб-сервера:Среднее время отклика ~50 мсек
Сравнение скоростей сканирования созданной программы и аналогов
Вывод: Lan-Crawler работает быстрее после первых 50-ти секунд Для небольших коллекций (меньше 250 файлов) лучше использовать Windows XP Для больших коллекций (больше 250 файлов) лучше использовать Lan-Crawler .Net
Сравнение скоростей сканирования файлов разных программ: Lan-Crawler .Net QuickSearch (Beagle) Windows XP
9
Текущие задачи
Поддержка спецификации OpenSearch.org для URL REST XML-поиска
Исследование других стратегий индексации и обхода
Высокая нагрузка на процессор сервера и СУБД, решения: С помощью репликации базы данных на кластер СУБД Очередь задач с балансировкой загруженности ЦП
Будущие исследования Реализация «сети агентов»
С помощью Microsoft Sync Framework Синхронизация в локальной сети
10
Тестирование программы Создан самотестирующийся код
Каждая часть программы проверяется тестами Спецификации вручную переводятся в тесты один
раз (написано 832 C# Unit-теста) Тесты запускаются автоматически после компиляции
программы Тесты выполняются программой Nunit
Автоматическое тестирование + Позволяет автоматизировать (функциональное,
модульное, интеграционное тестирование) - Не позволяет проверять производительность кода Покрытие кода тестами на системное тестирование
-- 72% (результат программы NCover) Для тестирования веб-сервера используется
специальная программа Apache JMeter
11
Метрики Программы Код программы:
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
Заключение Построена система информационного поиска Lan-Crawler
Соизмеримая скорость первичной и повторной индексаций Выбран оптимальный алгоритм для параллельного обхода узлов сети Высокая скорость ответа на поисковые запросы с лексическим анализом
Проект открытый; дистрибутивы и весь исходный код располагаются на сайте http://lan-crawler.sourceforge.net
13
Примеры внедрения: Районная локальной сети пос. Металлострой (300 пользователей, общее объем файлов ~ 7 Тб) Локальной сети общежития СПбГПУ (в тестовом режиме, общий объем файлов ~4.9 Тб)
Спасибо за внимание.
14
Потенциал ЛВС по сравнению с сетью Интернет Физические преимущества
Скорость передачи данных между узлами: Интернет: ~ 0.5-1.0 мегабит/сек ЛВС: от 10, 100, 1000 Мегабит/сек
Скорость отклика узла на сообщения (Answer timeout) Интернет: до 30 секунд, в среднем 150-300 миллисекунд ЛВС: до 10 миллисекунд, в среднем 1-2 миллисекунд
Преимущества объема Локальные сети ограничены в своём размере
ЛВС: 300, 500, 1000+ ( домашние, корпоративные, районные) Интернет: количество узлов безгранично (IP6, NAT)
15
Область применения
Примеры внедрения:
Программа используется в районной локальной сети пос. Металлостроя (www.metallonet.ru) С начала 2007 года 300 пользователей Общее количество файлов: ~42 000, общий объем ~ 7 Тб
Работает в локальной сети общежития СПбГПУ В тестовом режиме над видео коллекцией Общее количество файлов: ~14 000, общий объем ~4.9 Тб
16
Концепция использования Схема окружения
Районная компьютерная сеть объединяет сотни компьютеров
Любой компьютер может предоставить доступ на чтение файлов другим
Поисковая система Устанавливается на одном компьютере в
локальной сети, предоставляет вебпортал Анализируется и индексируется файловая
структура сети, сохраняется в СУБД Пользователь заходит на вебпортал через
браузер и производит поиск Авторизация по связке IP+Mac Поиск обрабатывается лексическим
анализатором, поиск по смежным словам Поиск по метаинформации
Программы: по комментариям, описанию Фильмы: актёры, режиссёры, по описанию Музыка: по исполнителю, альбому, году
17
Архитектура проекта
18
Слой доступа к удалённым ресурсам Слой доступа к данным: Модуль индексации Встроенный веб-сервер
Реализация: модули проекта Слой доступа к удалённым ресурсам
Проверяет доступность компьютеров в локальной сети. Обходит узлы сети и ставит файлы на очередь индексации Производит авторизацию по связке MAC+IP
Слой доступа к данным: Встроенная база данных SQL FireBird Выполняет запросами в СУБД и индекс для быстрого, гибкого поиска
Модуль индексации Индексирует доступные файлы удалённых машин Составляет обратный индексный файл для быстрого поиска Лексически обрабатывает поисковые запросы пользователей
Встроенный веб-сервер Основной интерфейс пользователя, принимает поисковые запросы Сбор дополнительной информации из Интернета
19
Диаграмма классов модели Проблемно-ориентированное проектирование приложений
(Domain-Driven Design) – построение модели для абстрагирования бизнес логики от конкретной реализации
Модель предметной области позволила упростить создание абстрагированного гибридного решения хранения данных.
Модель может использоваться вне решения Lan-Crawler и ПС
21
Сравнение показателей скорости обхода
График показывает количество
просканированных важных файлов, по сравнению с общим количеством.
Общее количество файлов 17 000 Достижение 100% - найдены все файлы
Вывод: выгодно отдавать приоритет узлам
с наибольшим количеством важных файлов
За первые 20% времени можно обновить 60% важных директорий
График показывает эффективность обхода важных ресурсов локальной сети, изменяя стратегию обхода узлов. Стратегии: PageRank (глобальная важность директории) Backlink (выбирается узел, а потом важные директории) Breadth (вширь, на каждом этапе выбирается самая важная папка) Random (на каждом шаге выбирается любая папка)
23