Successfully reported this slideshow.
Your SlideShare is downloading. ×

Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 20 Ad

Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)

Download to read offline

За 15 лет разработки концепция немного поменялась и, начиная со Sphinx 3.0, мы теперь, если задуматься, вполне себе самостоятельная распределенная база (с фокусом на полнотекстовый поиск), а не только лишь добавочный к основному хранилищу поисковый движок.

Порядка 2 лет уже пилим ряд больших внутренних переделок под флагом 3.0 и, вот, наконец-то, доделываем. (На момент подачи тезисов "наполовину" готов новый клевый формат индекса; к моменту проведения конференции рассчитываем выложить публично доступную альфу).

Уже приделано всякое интересное:
* новый формат индекса, компактный и быстрый (в разы быстрее индексация и поиск);
* дисковое хранилище для документов и всяких спец. данных;
* полноценные B-tree индексы по атрибутам;
* репликация индексов.

Сделаю краткий обзор внутренней реализации этого всего, расскажу, как мы переложили битики и байтики, и что и почему это дало функционально.

Бенчмарков "а почему не Elastic" сделать не успеем, для этого нужны добровольцы. Добровольцы, подайте 1 громкий зеленый email вверх.

За 15 лет разработки концепция немного поменялась и, начиная со Sphinx 3.0, мы теперь, если задуматься, вполне себе самостоятельная распределенная база (с фокусом на полнотекстовый поиск), а не только лишь добавочный к основному хранилищу поисковый движок.

Порядка 2 лет уже пилим ряд больших внутренних переделок под флагом 3.0 и, вот, наконец-то, доделываем. (На момент подачи тезисов "наполовину" готов новый клевый формат индекса; к моменту проведения конференции рассчитываем выложить публично доступную альфу).

Уже приделано всякое интересное:
* новый формат индекса, компактный и быстрый (в разы быстрее индексация и поиск);
* дисковое хранилище для документов и всяких спец. данных;
* полноценные B-tree индексы по атрибутам;
* репликация индексов.

Сделаю краткий обзор внутренней реализации этого всего, расскажу, как мы переложили битики и байтики, и что и почему это дало функционально.

Бенчмарков "а почему не Elastic" сделать не успеем, для этого нужны добровольцы. Добровольцы, подайте 1 громкий зеленый email вверх.

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Viewers also liked (20)

Advertisement

Similar to Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx) (20)

More from Ontico (20)

Advertisement

Recently uploaded (20)

Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)

  1. 1. Sphinx 3.0 поиск 15 лет спустя Андрей Аксенов Sphinx
  2. 2. sphinx == привет, эпоха динозавров • Малоизвестный сервер про поиск • Началось в 2001, публичность в 2006, сегодня 2016 • Очередная переделка, очередная мажорная версия • А о чем доклад-то? • Расскажу, чего делаем – революций нет, “нудная”работа • Покажу, что есть место подвигу – несмотря на 15 лет итп
  3. 3. обязательный слайд rev.2016 • А почему не elasticsearch?
  4. 4. обязательный слайд • А почему не htdig? 1995 • А почему не udmsearch? 1998 • А почему не lucene? 1999 • А почему не google search appliance? 2002 • А почему не solr? 2004 • А почему не elasticsearch? 2009 • А почему не poiskifier? 2017 • Сегодня в Гугле 0 (ноль) хитов, посмотрим завтра
  5. 5. обязательный слайд rev.2016 • А почему не elasticsearch? А почему бы нет??? • Потому что могу, пока не умер и не сменил индустрию 
  6. 6. черная сморщенная изюминка • Не верю в бесконечные горы кода • Не верю в топовый перф без ассемблера • Не верю в одну идеальную мегатехнологию • Не верю в ничьи сверхспособности (в свои особенно) • => Поэтому какие-то технические причины будут всегда • Короче, строим вечную альтернативную реальность!!!  • Могло быть хуже, мог бы быть OpenBSD
  7. 7. хватит ныть, покежь код • http://github.com/sphinxsearch/ • И все еще письмо на shodan@sphinxsearch.com • Сырая публичная альфа 1.x – пробовал, плохо • Длинный секретный рефактор 3.x – пробую, плохо • Новая переделка каждый, скажем, месяц – ??? 
  8. 8. нас опять обманули, расходимся • Для всех остальных, наконец, и про технологии, но… • Ошибка молодости #1, неуверенность в себе • Ранее == эта, мы добавка к основному хранилищу • Теперь == не, всё, мы мегабаза (кривая, ну как и все) • Ошибка молодости #2, проспали облака • Ошибка молодости #3, оттягивание переделок • Ошибка молодости #4, небезразличен перф
  9. 9. ошибки надо исправлять • #1 мегабаза == docstore, vrows, json, btree… • #2 облака == репликация (первый шаг) и далее (ууу) • #3 затягивание == меньше кода, проще убивать • #4 функционал/перф == новый формат индекса • даст новый функционал – это хорошо • даст еще и перф – это очень, очень плохо • “куда я полез, я ж и читать не умею” – привычки 
  10. 10. быстро не вышло, вышло как всегда • #1 мегабаза == docstore, vrows, json, btree… • #2 облака == репликация (первый шаг) и далее (ууу) • #3 затягивание == меньше кода, проще убивать • #4 функционал/перф == новый формат индекса • даст новый функционал – это хорошо • даст еще и перф – это очень, очень плохо • плюс скрипты, плюс json компрессия, итд итп
  11. 11. подробнее про docstore • Умеем хранить тело документа (ага, догнали Solr) • Умеем хранить мини-индекс для сниппетов • Память не жрёт, диск жрёт, LZ4 умеет • Текст хранится ок, блобы не пробовали • Сниппеты ускорились чисто ошпаренные • Бенчмарков не будет, добровольцы не писали • Место подвига == внезапно, мини-индекс (плюс LZxx)
  12. 12. подробнее про vrows • Умеем компактнее хранить атрибуты (1 вместо N ptr) • Закопали дебильные 4G/16G лимиты начала 2000х • Стал технически возможен NULL (делать пока не стали) • Место подвига == не случилось, но • Занятные эксперименты про SSE2/3/4 vs lens/offsets • Row level locks? (неохота, страшно!!) • Efficient mmapping/caching?
  13. 13. подробнее про json • Умеем ловко жать ключи, честно считать всякое • Место для подвига == • Оказывается, парсеры говнецо (наш тоже) • Оказывается, честная структура непросто • Оказывается, компрессия ключей рулит • Оказывается, спецслучаи типа int[] рулят
  14. 14. подробнее про btree • Умеем индексы по атрибутам, закапываем __fakeKeyword • Умеем вчерне индексы по json колонкам даже • Место для подвига == • Оказывается, рукой можно лучше, чем Гугл (оп-паньки) • Оказывается, вариантов деревьев того, МНОГО • И осталась куча нетронутого фана про планировщик, про помериться с LSM и хешами, про index merge, …
  15. 15. подробнее про репликацию • Умеем вести, играть, пересылать лог действий (binlog) • Умеем пересылать куски индекса • Умеем 1:1, 1:N “полуручную” репликацию • Не умеем “hive mind” кластер, хотим • Бомбит, понятно, хоть перевыборы мастера бы • Место для подвига == почитай бесконечное, см. Jepsen
  16. 16. подробнее про формат индекса • Умеем индексировать и искать (вот это ачивка!!!) • Умеем в памяти, остался рывок “на диске” • Внесли простор для extensions • Место для подвига == сплошной low level (bit farsh бгг) • внезапно, изобрели тупой, но очень годный кодек • внезапно, _mm_crc32_u32 лучший хеш эвар • внезапно, int fastrstr[] и гонки с memcmp итп • и еще куча мелочей, большую часть забыл
  17. 17. когда релиз, когда смерть эластика?! • Релиз планировал на вчера (2 мес назад), опять не смог • Получается, надо либо завтра, либо никогда • Голосуем!!! • Эластик умрет сам, мы умрем независимо • Сроки полураспада долгие, 5-10 лет и более • И ваще, от меня не зависит никак
  18. 18. dafuq did i just watch??? • Вот знайте, Sphinx там всё пилит версию 3.0 какую-то • Да, мееедленно и по-эстооонски, да, уже не смешно • Вот знайте, уже готов ряд всяких небезынтересных штук • И щаз парни из Авито расскажут, как это все глючит!!! • Вот знайте, на фронтире до сих пор есть место подвигу • Нишевым, но спецфокусам, типа-изобретениям итп
  19. 19. и про 15 лет, раз обещали • Давно же тут сижу – как поменялся ландшафт? • Адский прогресс везде – языки, VM, алгоритмы, железо • Уровень входа изрядно подрос – поиск уже тоже база • Считаю это первым ключевым – кругом какие-то базы • Считаю вторым ключевым – внезапные логи/аналитику • Но это не значит, что завтра poiskifier не убьёт всех!!! • И это не значит, что в нише всё сделано, см. подвиг
  20. 20. вопросы? shodan@sphinxsearch.com skype:shodanium

×