HighLoad++

Конференция разработчиков
высоконагруженных систем

Полнотекстовый поиск в PostgreSQL за миллисекунды

Доклад принят в Программу конференции
Марина Степанова (Акционерное общество «Главный научный инновационный внедренческий центр» (АО «ГНИВЦ») современная IT-компания и ведущий технологический партнёр государственных структур и лидеров российского бизнеса в области комплексной автоматизации сложных бизнес-процессов.)Марина Степанова
Максим Яковлев (Timeweb Cloud — российская облачная инфраструктура c дата-центрами в России, Европе и СНГ. Занимает 6 место в рейтинге крупнейших поставщиков IaaS Enterprise и входит в реестр отечественного ПО.)Максим Яковлев

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

  1. Будучи реализованы внутри СУБД, реализующей ACID, полнотекстовые индексы вынуждены поддерживать атомарность операций, конкурентные изменения, журналирование и т.д. Эта особенность неизбежна, если мы хотим получить интегрированное решение на базе реляционной СУБД, и является одновременно как преимуществом, так и недостатком.
  2. Полнотекстовые индексы используются только для фильтрации документов, ранжирование же требует извлечения самих документов из heap, что существенно снижает скорость обработки высокоселективных запросов. Этот недостаток не является неизбежным и может быть устранен путем включения дополнительной информации в GIN-индексы.
  3. При поиске GIN-индексы требуют полного сканирования соответствующих posting-lists и posting-trees и вызова для каждого элемента интерфейсной функции consistent. Этот недостаток может быть устранен путем введения оптимизатора поиска, что требует изменения интерфейса GIN.

В данном докладе будет представлен прототип патча к PostgreSQL, позволяющий:

  1. хранить позиционную информацию в полнотекстовом индексе. За счет этого ранжирование осуществляется исключительно по индексу без использования heap, что позволяет повысить скорость обработки высокоселективных запросов в десятки раз;
  2. оптимизировать использование GIN-индекса путем частичного сканирования posting-trees. Таким образом, решается проблема поисковых запросов вида "frequent_term & rare_term".

В докладе будет продемонстрирована работа прототипа на данных крупнейшей базы объявлений рунета avito.ru. 

Золотой спонсор

  • Parallels

Генеральный интернет-партнёр

  • Mail.Ru Group

Серебрянный партнёр

  • http://www.google.com/

Официальный регистратор

  • REG.RU

Серебряный спонсор

  • https://www.db.com/russia/index_ru.htm

Серебряный спонсор

  • Вadoo

Спонсор

  • http://www.1c-bitrix.ru/

Спонсор

  • http://express42.com/

Технический партнёр

  • Филанко

Генеральный медиа-партнёр

  • http://www.bfm.ru/

Генеральный информационный партнёр

  • Xakep.ru

Генеральный HR-партнёр

  • HeadHunter

Генеральный рекламный партнёр

  • http://kavanga.ru/

Книжный партнёр

  • Манн, Иванов и Фербер

Фри-ланс партнёр

  • http://www.free-lance.ru/

Погодный партнёр

  • GISMETEO / ГИСМЕТЕО

Информационная поддержка

По любым вопросам обращайтесь:
Программный комитет : Олег Бунин , +7 (916) 635-95-84
Организационный комитет : Олег Бунин , +7 (916) 635-95-84
Бухгалтерия и вопросы оплаты : , +7(495) 646-07-68

Почтовый адрес: 119180, Москва, Бродников пер., д. 7 стр. 1, ООО «Онтико»

Rambler's Top100
Рейтинг@Mail.ru