SlideShare a Scribd company logo
1 of 15
Download to read offline
Tips&Tricks
SphinxSearch Meetup @ Avito
16.05.2015, Роман Павлушко <rpavlushko@avito.ru>
Как мы используем Sphinx
Как поисковой движок для различных сервисов :)
- поиск объявлений на сайте - 30m docs (14GB), 10k+ qps
- поиск объявлений в BO - 570m docs (350GB), <10 qps
- поиск рекламных объявлений с аукционом - UDF rank
- микросервисы (подсказки, «suggest» и тп)
Server qps (x16 ~ 12k пик) Server CPU
Сверхбыстрая индексация из БД
Индексатор на сервер с данными (DB, xml, etc)
или реплика на сервер с indexer, кому как удобно
Весь ресурс базы отдаем индексатору
Мы ставим репликацию pg londiste на паузу, это также не позволяет данным
меняться в процессе построения индексов.
Параллельное построение индексов
Больше стоп-слов, выше скорость
Построение индексов в tmpfs
Конечно же, если позволяет объем оперативной памяти
График переиндексации
100 000 row/sec или 50 MB/sec!
В большинстве случаев можно жить без дельты
Потеря данных в распределенном индексе
10
11
12
13
14
main delta
sql_query killist
13
14
12
10
11
13
14
new main
merge
Решение потери данных
Это в упрощенном варианте (MySQL)
На PostgreSQL можно сделать красивее :)
Индексация из tsv + killist
tsvpipe_killist Not Found
Обновление атрибутов в кластере из реплик
Задача: обновить атрибут в Sphinx
Проблема: много реплик, обновлять на каждом не вариант
Решение: специальный распределенный индекс
Динамические или разряженные атрибуты
Особенность данных:
1) много атрибутов (сотни)
2) в каждом документе заполнены единицы
Проблемы:
1) тяжелый запрос на вычитку
2) нечитаемые конфиг
3) для добавления новых атрибутов reindex
4) лишние данные в spa
Решение: JSON
+ добавление новых атрибутов на лету
+ на наших данных в 4 раза меньше вес индекса
+ выше скорость индексации
- чуть ниже скорость поиска
- нельзя обновлять кусочком, только весь json
Горячая подмена поисковиков
Бытрые поиск на последних страницах
Минусы решения:
- нужно знать кол-во результатов
перед поиском
- в приложении выполнять
обратную сортировку результата
- дополнительная реализация
Ускорение поиска по атрибутам
Фильтр "ИЛИ" по атрибутам и т.п.
SphinxQL
SQL
С помощью expression в запросе можно творить чудеса:
Сложные и быстрые выражения в SphinxQL
Парсинг большого запроса в Sphinx
тяжелая операция относительно других.
Очень сложные запросы лучше прятать в UDF
UDF - это просто!
The End
Вопросы?
Замечания?
Предложения?
Хотите у нас заниматься поиском?

More Related Content

What's hot

Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Ontico
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recoverypgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recoveryМихаил Тюрин
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Ontico
 
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Badoo Development
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Ontico
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Ontico
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Ontico
 
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...Ontico
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLYandex
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Ontico
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС 2ГИС Технологии
 

What's hot (18)

Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recoverypgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recovery
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
Барнаул15
Барнаул15Барнаул15
Барнаул15
 
Devconf15
Devconf15Devconf15
Devconf15
 
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)
 
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 

Viewers also liked

Решардинг Redis "на живую" (Андрей Смирнов, Василий Евсеенко)
Решардинг Redis "на живую" (Андрей Смирнов, Василий Евсеенко)Решардинг Redis "на живую" (Андрей Смирнов, Василий Евсеенко)
Решардинг Redis "на живую" (Андрей Смирнов, Василий Евсеенко)Ontico
 
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)Ontico
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ontico
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструментыRoman Dvornov
 
Avito iab1502 olga ky
Avito iab1502 olga kyAvito iab1502 olga ky
Avito iab1502 olga kyIABRu
 
Agile — это не то, что ты думаешь
Agile — это не то, что ты думаешьAgile — это не то, что ты думаешь
Agile — это не то, что ты думаешьVasiliy Cheptsov
 
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...Ontico
 
Avito usage of_data_in_media_campaigns_olga_ky
Avito usage of_data_in_media_campaigns_olga_kyAvito usage of_data_in_media_campaigns_olga_ky
Avito usage of_data_in_media_campaigns_olga_kyiabrussiaprez
 
Agile по Суворову
Agile по СуворовуAgile по Суворову
Agile по СуворовуVasiliy Cheptsov
 
Чем полезен PMBOK для Agile-менеджера
Чем полезен PMBOK для Agile-менеджераЧем полезен PMBOK для Agile-менеджера
Чем полезен PMBOK для Agile-менеджераVasiliy Cheptsov
 
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...web2win
 
Présentation avito
Présentation avitoPrésentation avito
Présentation avitoAvito-maroc
 

Viewers also liked (16)

Решардинг Redis "на живую" (Андрей Смирнов, Василий Евсеенко)
Решардинг Redis "на живую" (Андрей Смирнов, Василий Евсеенко)Решардинг Redis "на живую" (Андрей Смирнов, Василий Евсеенко)
Решардинг Redis "на живую" (Андрей Смирнов, Василий Евсеенко)
 
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Clearing hurdles
Clearing hurdlesClearing hurdles
Clearing hurdles
 
Experiment Prototyping
Experiment PrototypingExperiment Prototyping
Experiment Prototyping
 
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструменты
 
Bezier curves
Bezier curvesBezier curves
Bezier curves
 
Avito iab1502 olga ky
Avito iab1502 olga kyAvito iab1502 olga ky
Avito iab1502 olga ky
 
Agile — это не то, что ты думаешь
Agile — это не то, что ты думаешьAgile — это не то, что ты думаешь
Agile — это не то, что ты думаешь
 
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
 
Avito usage of_data_in_media_campaigns_olga_ky
Avito usage of_data_in_media_campaigns_olga_kyAvito usage of_data_in_media_campaigns_olga_ky
Avito usage of_data_in_media_campaigns_olga_ky
 
Agile по Суворову
Agile по СуворовуAgile по Суворову
Agile по Суворову
 
Чем полезен PMBOK для Agile-менеджера
Чем полезен PMBOK для Agile-менеджераЧем полезен PMBOK для Agile-менеджера
Чем полезен PMBOK для Agile-менеджера
 
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
 
Présentation avito
Présentation avitoPrésentation avito
Présentation avito
 

Similar to SphinxSearch Meetup - Tips&tricks

Cфинкс и поиск терабайта
Cфинкс и поиск терабайтаCфинкс и поиск терабайта
Cфинкс и поиск терабайтаMedia Gorod
 
масштабируемый Sphinx кластер. вячеслав крюков. зал 1
масштабируемый Sphinx кластер. вячеслав крюков. зал 1масштабируемый Sphinx кластер. вячеслав крюков. зал 1
масштабируемый Sphinx кластер. вячеслав крюков. зал 1rit2011
 
Lan-Crawler Bachlor RU
Lan-Crawler Bachlor RULan-Crawler Bachlor RU
Lan-Crawler Bachlor RUcDima
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатленияfudz1k
 
Tagconf 12 - SphinxSearch - 1
Tagconf 12 - SphinxSearch - 1Tagconf 12 - SphinxSearch - 1
Tagconf 12 - SphinxSearch - 1Roman Kudlay
 
эффективный полнотекстовый поиск по базам данных петр зайцев
эффективный полнотекстовый поиск по базам данных   петр зайцевэффективный полнотекстовый поиск по базам данных   петр зайцев
эффективный полнотекстовый поиск по базам данных петр зайцевMedia Gorod
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...Nikolay Samokhvalov
 
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Badoo Development
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Tanya Denisyuk
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Ontico
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBIurii Ogiienko
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBASlach
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3Computer Science Club
 
Zabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discoveryZabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discoveryBadoo Development
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.Alexander Frolov
 
Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Ontico
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Media Gorod
 

Similar to SphinxSearch Meetup - Tips&tricks (20)

Cфинкс и поиск терабайта
Cфинкс и поиск терабайтаCфинкс и поиск терабайта
Cфинкс и поиск терабайта
 
масштабируемый Sphinx кластер. вячеслав крюков. зал 1
масштабируемый Sphinx кластер. вячеслав крюков. зал 1масштабируемый Sphinx кластер. вячеслав крюков. зал 1
масштабируемый Sphinx кластер. вячеслав крюков. зал 1
 
Sivko
SivkoSivko
Sivko
 
Lan-Crawler Bachlor RU
Lan-Crawler Bachlor RULan-Crawler Bachlor RU
Lan-Crawler Bachlor RU
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
Tagconf 12 - SphinxSearch - 1
Tagconf 12 - SphinxSearch - 1Tagconf 12 - SphinxSearch - 1
Tagconf 12 - SphinxSearch - 1
 
эффективный полнотекстовый поиск по базам данных петр зайцев
эффективный полнотекстовый поиск по базам данных   петр зайцевэффективный полнотекстовый поиск по базам данных   петр зайцев
эффективный полнотекстовый поиск по базам данных петр зайцев
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBA
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
Zabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discoveryZabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discovery
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
 
Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 

SphinxSearch Meetup - Tips&tricks

  • 1. Tips&Tricks SphinxSearch Meetup @ Avito 16.05.2015, Роман Павлушко <rpavlushko@avito.ru>
  • 2. Как мы используем Sphinx Как поисковой движок для различных сервисов :) - поиск объявлений на сайте - 30m docs (14GB), 10k+ qps - поиск объявлений в BO - 570m docs (350GB), <10 qps - поиск рекламных объявлений с аукционом - UDF rank - микросервисы (подсказки, «suggest» и тп) Server qps (x16 ~ 12k пик) Server CPU
  • 3. Сверхбыстрая индексация из БД Индексатор на сервер с данными (DB, xml, etc) или реплика на сервер с indexer, кому как удобно Весь ресурс базы отдаем индексатору Мы ставим репликацию pg londiste на паузу, это также не позволяет данным меняться в процессе построения индексов. Параллельное построение индексов Больше стоп-слов, выше скорость Построение индексов в tmpfs Конечно же, если позволяет объем оперативной памяти
  • 4. График переиндексации 100 000 row/sec или 50 MB/sec! В большинстве случаев можно жить без дельты
  • 5. Потеря данных в распределенном индексе 10 11 12 13 14 main delta sql_query killist 13 14 12 10 11 13 14 new main merge
  • 6. Решение потери данных Это в упрощенном варианте (MySQL) На PostgreSQL можно сделать красивее :)
  • 7. Индексация из tsv + killist tsvpipe_killist Not Found
  • 8. Обновление атрибутов в кластере из реплик Задача: обновить атрибут в Sphinx Проблема: много реплик, обновлять на каждом не вариант Решение: специальный распределенный индекс
  • 9. Динамические или разряженные атрибуты Особенность данных: 1) много атрибутов (сотни) 2) в каждом документе заполнены единицы Проблемы: 1) тяжелый запрос на вычитку 2) нечитаемые конфиг 3) для добавления новых атрибутов reindex 4) лишние данные в spa Решение: JSON + добавление новых атрибутов на лету + на наших данных в 4 раза меньше вес индекса + выше скорость индексации - чуть ниже скорость поиска - нельзя обновлять кусочком, только весь json
  • 11. Бытрые поиск на последних страницах Минусы решения: - нужно знать кол-во результатов перед поиском - в приложении выполнять обратную сортировку результата - дополнительная реализация
  • 13. Фильтр "ИЛИ" по атрибутам и т.п. SphinxQL SQL С помощью expression в запросе можно творить чудеса:
  • 14. Сложные и быстрые выражения в SphinxQL Парсинг большого запроса в Sphinx тяжелая операция относительно других. Очень сложные запросы лучше прятать в UDF UDF - это просто!