17
Найти за одну секунду или интеллектуальный поиск данных в многогигабайтном массиве данных своими руками Владимир Бугай Knoema

DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Embed Size (px)

Citation preview

Page 1: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Найти за одну секунду или интеллектуальный поиск данных в многогигабайтном массиве данных

своими руками

Владимир БугайKnoema

Page 2: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Что такое Нома?

Knoema.com – это веб-сайт, где можно найти открытые данные на любую тему для любой страны мира из кучи разных источников

У нас собран самый большой репозиторий статистических данных в мире и контента, сделанного на их основе

Page 3: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Несколько метрик

Количество наборов данных – 2500+ Количество временных рядов – 100M+ Размер базы – 50Gb+

И все это растет десятками процентов в месяц

Page 4: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Проблема

Навигация, рубрикатор, теги, темы – это все замечательно, но ведь никто сейчас не пользуется каталогами, а идут сразу на Google и Yandex. Не так ли?

Нам нужен поиск!

Page 5: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Демо

Page 6: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Демо

Page 7: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Демо

Page 8: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Особенности поиска в нашей системе

Мало текста, много цифр Очень много повторяющихся терминов

«United States», например, повторяется 150000 раз. Какой результат выбрать?

Page 9: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Причины реализации собственного движка

Необходимость собственного, сильно специфического алгоритма ранжирования Алгоритм ранжирования в поиске – это одно из

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

ресурсах железа

Page 10: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Ключевое требование

Скорость, скорость и еще раз скорость Значительная часть запросов должна выполняться

за 1-2 сек. Подавляющее большинство запросов должны

выполняться в пределах 5 сек.

Page 11: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Этап 1: Поиск внутри сервера приложений

Сервер приложений

Кэш индекса

База данных

Индекс

Данные

Сервис индексирова

ния

Запрос Ответ

Page 12: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Этап 2: Отдельный поисковый сервер

Сервер приложений

База данных

Индекс

Данные

Сервис индексирова

ния

Запрос Ответ

Поисковый сервер

Индекс

Page 13: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Этап 3: Индексация на лету

Сервер приложений

База данных

Данные

Запрос Ответ

Поисковый сервер

Индекс

Page 14: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Внутренняя реализация

0,85 0,97 0,58 0,96 0,91 0,41 0,26 0,98 0,35 0,45 min=0,95

Page 15: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Внутренняя реализация

0,98 0,97 0,96

0,99 0,98 0,97

Page 16: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Результаты

• Реализован относительно быстрый поиск на слабом оборудовании

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

Page 17: DUMP-2013 Наука и жизнь - Найти за одну секунду - Бугай Владимир

Спасибо за внимание!Вопросики?

http://knoema.com