Sphinx: распределяя индексы.

14
Sphinx. Построение распределенного сервера Борисенко Евгений Системный администратор компании «КвартСофт» [email protected] ©2012. QuartSoft Corp. www.quartsoft.com

description

"Sphinx: распределяя индексы."Евгений Борисенко, системный администратор, QuartSoft.

Transcript of Sphinx: распределяя индексы.

Page 1: Sphinx: распределяя индексы.

Sphinx. Построение распределенного

сервера Борисенко ЕвгенийСистемный администраторкомпании «КвартСофт»[email protected]

©2012. QuartSoft Corp. www.quartsoft.com

Page 2: Sphinx: распределяя индексы.

Зачем? Для чего? Как?

©2012. QuartSoft Corp. www.quartsoft.com

Page 3: Sphinx: распределяя индексы.

Кто ближе всех....Семейство Apache LuceneИндекс: инкрементный индекс, но требующий операции слияния сегментов

API и протоколы: Java API

Размер индекса и скорость поиска: около 20 Мб/минута, размер индексных файлов ограничен 2 Гб (на 32-bit ОС). Есть возможности параллельного поиска по нескольким индексам и кластеризация (требует сторонних платформ)

URL: http://lucene.apache.org/

Sphinx search engineИндекс: монолитный + дельта-индекс, возможность распределённого поиска

API и протоколы: SQL DB, встроенная поддержка MySQL и PostgreSQL, собственный XML-интерфейс, встроенные API для РНР, Ruby, Python, Java, PerlРазмер индекса и скорость поиска: очень быстрый, индексация около 10 Мб/сек, поиск около 0.1 сек/~2 — 4 Гб индексе, поддерживает размеры индекса в сотни Гб и сотни миллионов документовURL: http://sphinxsearch.com

©2012. QuartSoft Corp. www.quartsoft.com

Page 4: Sphinx: распределяя индексы.

системой полнотекстового поиска.

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

возможности распределённого поиска и кластеризации.

очень высокая скорость индексации и поиска

©2012. QuartSoft Corp. www.quartsoft.com

Что подчеркнули...

Page 5: Sphinx: распределяя индексы.

Sphinxsearch.com

Самые большие:  Infegy.com - 9 миллиардов документов в

Sphinx.

Boardreader.com a forum > 16 миллиардов документов другими словами около 5 Тб в 38 шардах.

Самые загруженные:Craigslist.org, (сайт обявлений)

около 200,000,000 миллионов запросов/день, - это примерно 2300 запросов/секунду.

©2012. QuartSoft Corp. www.quartsoft.com

Page 6: Sphinx: распределяя индексы.

Работа одноуровнего Sphinx-сервера

Веб приложение

Сервер Sphinx

©2012. QuartSoft Corp. www.quartsoft.com

Page 7: Sphinx: распределяя индексы.

Проблема

1.Индекс может разрушиться...2.Веб сервер остался без данных...3.На восстановление требуется

время...©2012. QuartSoft Corp. www.quartsoft.com

Page 8: Sphinx: распределяя индексы.

Работа распределенного Sphinx сервера

Веб приложение

Сервер Sphinx

1 2 n

©2012. QuartSoft Corp. www.quartsoft.com

Page 9: Sphinx: распределяя индексы.

Критерии создания распределенного индекса:

• количество обработанных файлов;

• суммарный размер обработанных

файлов;

• дисковое пространство занимаемое

индексами;

• общее время восстановления индекса.

©2012. QuartSoft Corp. www.quartsoft.com

Page 10: Sphinx: распределяя индексы.

Время полного восстановления.

Количество шардов (ед.)Зат

рач

енн

ое

вр

емя

.(ч

.)

©2012. QuartSoft Corp. www.quartsoft.com

Page 11: Sphinx: распределяя индексы.

Хитрости

Сервер• должен существовать локальный

индекс той же структуры (пустой);• Запись подключения agent’а

содержит индекс и дельта-индекс;Шарды• имена индексов и дельта-индексов

должны совпадать с именами agent’а (не source блока).

©2012. QuartSoft Corp. www.quartsoft.com

Page 12: Sphinx: распределяя индексы.

Конфигурационные файлы sphinx-сервера

index main {

type = distributed

local = ind_vf_transcriptions

agent = 192.168.1.2:9312:ind_vf_transcriptions,ind_vf_transcriptions_delta

agent = 192.168.1.3:9312:ind_vf_transcriptions,ind_vf_transcriptions_delta

...

agent_connect_timeout = 2000

agent_query_timeout = 10000

}

searchd {

listen= 192.168.1.1:9312

...

}

source vf_transcriptions {

type = xmlpipe2

xmlpipe_field = title

xmlpipe_field = description

.....

}

index ind_vf_transcriptions {

source = vf_transcriptions

path = /var/lib/sphinx/vf_transcriptions

...

}

©2012. QuartSoft Corp. www.quartsoft.com

Page 13: Sphinx: распределяя индексы.

Конфигурационные файлы дочерних sphinx-серверов

source vf_transcriptions {

type = xmlpipe2

xmlpipe_command = run_same_script

xmlpipe_field = title

...

}

index ind_vf_transcriptions {

source = vf_transcriptions

path= /var/sphinx/vf_transcriptions

...

}

source vf_transcriptions_delta : vf_transcriptions {

xmlpipe_command = run_same_DELTA_script

...

}

index ind_vf_transcriptions_delta : ind_vf_transcriptions{

source= vf_transcriptions_delta

path = /var/sphinx/vf_transcriptions_delta

...

}

searchd {

listen= 192.168.1.2:9312

...

}

©2012. QuartSoft Corp. www.quartsoft.com

Page 14: Sphinx: распределяя индексы.

©2012. QuartSoft Corp. www.quartsoft.com

http://sphinxsearch.com/info/webinar/

April 25th, 2012 - Relevance Ranking Explained

Вопросы? Спасибо! Евгений БорисенкоСистемный администраторкомпании «КвартСофт»

[email protected]