Делаем быстрый поиск по турам на основе ClickHouse

В этой статье мы рассмотрим способы создания поиска по базе туров (тур из себя представляет набор из отеля и перелета) и рассмотрим две опции — ClickHouse и MySQL (два движка — InnoDB и MyISAM).

В чем сложность поиска по турам


Туроператоры (TezTour, TUI, Natalie Tours, etc) продают свои путевки неочевидным, на первый взгляд, способом:

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


После этого по таким комбинациям (количество которых может исчисляться сотнями миллионов и даже миллиардами) осуществляется поиск. Пример формы поиска можно увидеть у TezTour — пользователь может выбрать только один город вылета, тип размещения и страну, а остальные параметры пользователь может выбирать произвольные.


Несмотря на то, что общее количество туров (комбинаций) исчисляется сотнями миллионов, на каждый фиксированный набор параметров (город вылета, тип размещения, страна) приходятся, в худшем случае, десятки миллионов вариантов. Но даже по такому количеству туров не так просто осуществлять поиск, потому что нужно найти записи, которые удовлетворяют свободным критериям, которые задают пользователи, и сортировка может быть более-менее произвольной (как правило, сортировка делается по цене, но это не единственный возможный критерий). В этой статье мы рассмотрим упрощенную архитектуру реалтайм-поиска по турам на основе MySQL и ClickHouse, без учета стопов (сленговый термин, который означает, что по каким-то вариантам закончились номера или места в самолете, и такие туры нужно исключить из выдачи). Мы научимся делать поиск быстрым и уметь показывать результаты с сортировкой по любым полям.

Читать дальше →
Делаем быстрый поиск по турам на основе ClickHouse
Source: habrahabr

Пост №3040939

Автор: ФiZIK

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3040939″ }, «headline»: «реактор :: картинки», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D1%80%D0%B5%D0%B0%D0%BA%D1%82%D0%BE%D1%80-%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8-3743666.jpeg», «height»: 479, «width»: 640 }, «datePublished»: «2017-03-25T16:46:40+03:00», «dateModified»: «2017-03-25T16:46:40+03:00», «author»: { «@type»: «Person», «name»: «ФiZIK» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3040939
Source: Joyreactor

Пост №3040937

Автор: =Arius=

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3040937″ }, «headline»: «Где-то на Пандоре… Салли! Нам срочно нужен торук, а тебя жалко меньше всего. I Подчини его св / cynic mansion :: фанатское :: Смешные комиксы (веб-комиксы с юмором и их переводы)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/cynic-mansion-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-%D1%84%D0%B0%D0%BD%D0%B0%D1%82%D1%81%D0%BA%D0%BE%D0%B5-3743664.png», «height»: 2264, «width»: 291 }, «datePublished»: «2017-03-25T16:46:15+03:00», «dateModified»: «2017-03-25T16:46:15+03:00», «author»: { «@type»: «Person», «name»: «=Arius=» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «оей косичкой и стань Торук Макто, пшёл. Ну нихера ж себе… гули-гули. Попался! Теперь ты моя шлюшка. Как же я хорош! Но зачем останавливаться на достигнутом? Хе-хе Э-э привет? Добрый день? Бомжур? А-а, салом! Хах, ловко я тебя, да?! Так просто, что даже скучно I Пойду в лес! Уж там точно » }
Комментировать 
Пост №3040937
Source: Joyreactor

Пост №3040907

Автор: kain_pl

Помните была новость про раздачу бесплатного хлеба?И как хозяина магазина, который раздавал хлеб за свой счет, пенсы доставали?Так вот, достали:http://rusarminfo.ru/biznesmen-urozhenec-armenii-prekratil-besplatno-razdavat-xleb-v-ekaterinburge/Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3040907″ }, «headline»: «Помните была новость про раздачу бесплатного хлеба? / заебали :: скриншот :: новость :: благотворительность :: халява кончилась», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D1%8C-%D1%81%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82-%D0%B1%D0%BB%D0%B0%D0%B3%D0%BE%D1%82%D0%B2%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C-%D0%B7%D0%B0%D0%B5%D0%B1%D0%B0%D0%BB%D0%B8-3743626.png», «height»: 856, «width»: 640 }, «datePublished»: «2017-03-25T16:19:04+03:00», «dateModified»: «2017-03-25T16:19:04+03:00», «author»: { «@type»: «Person», «name»: «kain_pl» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «И как хозяина магазина, который раздавал хлеб за свой счет, пенсы доставали? Так вот, достали: http://rusarminfo.ru/biznesmen-urozhenec-armenii-prekratil-besplatno-razdavat-xleb-v-ekaterinburge/» }
Комментировать 
Пост №3040907
Source: Joyreactor

Пост №3040878

Автор: bugabazinga

Разрыв перегруженного эскалатора в Гонконге…Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3040878″ }, «headline»: «Разрыв перегруженного эскалатора в Гонконге… / Гонконг :: эскалатор :: авария :: видео (video)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D1%8D%D1%81%D0%BA%D0%B0%D0%BB%D0%B0%D1%82%D0%BE%D1%80-%D0%B0%D0%B2%D0%B0%D1%80%D0%B8%D1%8F-%D0%93%D0%BE%D0%BD%D0%BA%D0%BE%D0%BD%D0%B3-%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-3743587.jpeg», «height»: 90, «width»: 120 }, «datePublished»: «2017-03-25T15:56:55+03:00», «dateModified»: «2017-03-25T15:56:55+03:00», «author»: { «@type»: «Person», «name»: «bugabazinga» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3040878
Source: Joyreactor

Пост №3040855

Автор: =Arius=

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3040855″ }, «headline»: «Я чувствую в тебе суровую мужскую печаль, брат Амоксиклав, скажи чем я могу помочь тебе? Грусть на / cynic mansion :: фанатское :: Смешные комиксы (веб-комиксы с юмором и их переводы)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/cynic-mansion-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-%D1%84%D0%B0%D0%BD%D0%B0%D1%82%D1%81%D0%BA%D0%BE%D0%B5-3743562.png», «height»: 2185, «width»: 412 }, «datePublished»: «2017-03-25T15:43:11+03:00», «dateModified»: «2017-03-25T15:43:11+03:00», «author»: { «@type»: «Person», «name»: «=Arius=» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «полняет мою сердечную мышцу. Ты знаешь закон, друг мой. Слабые и некрасивые должны отправиться в яму с волками. Так велят предки. Shmorld of shmorcraft Время не стоит на месте.. Быть может пора двигаться вместе с ни.м, а не слепо следовать заветам предков?.. Может он ° не так силён л! о 11 какя» }
Комментировать 
Пост №3040855
Source: Joyreactor

Пост №3040850

Автор: anon

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3040850″ }, «headline»: «ты вообще поехавший. тгСгАгУ 25.Mar.2017 15:07 ответить V ссылка Почему же вы так считаете? !оке / кармодрочерство :: Jokerka :: совсем нибамбит :: -1.2 :: anon», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/anon-%D0%BA%D0%B0%D1%80%D0%BC%D0%BE%D0%B4%D1%80%D0%BE%D1%87%D0%B5%D1%80%D1%81%D1%82%D0%B2%D0%BE-Jokerka-%D1%81%D0%BE%D0%B2%D1%81%D0%B5%D0%BC-%D0%BD%D0%B8%D0%B1%D0%B0%D0%BC%D0%B1%D0%B8%D1%82-3743556.jpeg», «height»: 567, «width»: 1176 }, «datePublished»: «2017-03-25T15:39:19+03:00», «dateModified»: «2017-03-25T15:39:19+03:00», «author»: { «@type»: «Person», «name»: «anon» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «гка 25.Mar.2017 15:13 ответить V ссылка Т для чего тебе нужен фендом посвященный комиксу? тгСгАгУ 25.Mar.2017 15:14 ответить V ссылка Т Вселенной комикса. !окегка 25.Mar.2017 15:21 ответить V ссылка Т Тот самый момент, когда свой но звезда Харькова Прогресс до следующей ЗБезды: 0 0 Рейтинг -» }
Комментировать 
Пост №3040850
Source: Joyreactor

Пост №3040843

Автор: ikari

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3040843″ }, «headline»: «loading artist :: You shall not pass :: Смешные комиксы (веб-комиксы с юмором и их переводы)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/loading-artist-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-You-shall-not-pass-3743544.jpeg», «height»: 2705, «width»: 550 }, «datePublished»: «2017-03-25T15:36:29+03:00», «dateModified»: «2017-03-25T15:36:29+03:00», «author»: { «@type»: «Person», «name»: «ikari» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3040843
Source: Joyreactor

Пост №3040832

Автор: ikari




ссылка на гифку


Развернуть



{
«@context»: «http://schema.org»,
«@type»: «BlogPosting»,
«mainEntityOfPage»:{
«@type»:»WebPage»,
«@id»:»/post/3040832″
},
«headline»: «Battlefield 1 :: Battlefield :: гиф анимация (гифки — ПРИКОЛЬНЫЕ gif анимашки) :: Игры»,
«image»: {
«@type»: «ImageObject»,
«url»: «http://img1.joyreactor.cc/pics/post/full/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-Battlefield-1-Battlefield-%D0%98%D0%B3%D1%80%D1%8B-3743529.gif»,
«height»: 250,
«width»: 445 },
«datePublished»: «2017-03-25T15:30:57+03:00»,
«dateModified»: «2017-03-25T15:30:57+03:00»,
«author»: {
«@type»: «Person»,
«name»: «ikari»
},
«publisher»: {
«@type»: «Organization»,
«name»: «JoyReactor.cc»,
«logo»: {
«@type»: «ImageObject»,
«url»: «http://joyreactor.cc/images/joyreactor_ie6.png»,
«width»: 207,
«height»: 54
}
},
«description»: «»
}

Комментировать 
Пост №3040832
Source: Joyreactor

Робот-пылесос своими руками — часть 2

Добрый день. В далеком 2015-м году я собрал робота-пылесоса, описав его создание в этой статье.


За прошедшее время робот серьезно изменился. Как и обещал, хочу поделиться доработакми.


Читать дальше →
Робот-пылесос своими руками — часть 2
Source: geektimes