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

Автор: admin от 25-03-2017, 22:15, посмотрело: 491

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

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


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


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

  • выкупается несколько самолетов

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



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

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

Категория: Программирование » Веб-разработка

 

Синхронизация ритма в музыкальных играх

Автор: admin от 25-03-2017, 17:05, посмотрело: 279

Синхронизация ритма в музыкальных играх

Недавно я начал работу в Unity над битбоксовой музыкальной игрой Boots-Cut. В процессе прототипирования базовых механик игры я обнаружил, что довольно сложно правильно синхронизировать ноты с музыкой. В Интернете по этой теме нашлось довольно мало статей. Поэтому в своей статье я постараюсь дать наиболее важные подсказки по разработке музыкальной игры (особенно в Unity).

Категория: Веб-разработка, Game Development

 

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

Автор: admin от 25-03-2017, 15:25, посмотрело: 398

Добрый день.
В далеком 2015-м году я собрал робота-пылесоса, описав его создание в этой статье.
За прошедшее время робот серьезно изменился. Как и обещал, хочу поделиться доработакми.
Робот-пылесос своими руками — часть 2

Категория: Программирование » Веб-разработка

 

Учимся мыслить в REM. Разговор об очевидном и о производительности труда в небольшой веб-студии

Автор: admin от 25-03-2017, 09:05, посмотрело: 269

Учимся мыслить в REM. Разговор об очевидном и о производительности труда в небольшой веб-студии


В течении некоторого времени мне в руки попадали различные макеты, сделанные как известными дизайнерами, так и не очень, а также сайты, которые верстались по этим макетам. Одни были симпатичными, другие немного старомодными, третьи — просто ужасными. Переодически и сам решал задачи по верстке, в том числе и pixel-perfect, и постепенно пришел к пониманию, что все размеры в макетах выбираются почти всегда от балды относительно случайным образом, что привносит в результат некоторую неоднородность, а в процесс верстки — лишнюю головную боль, костыли и потраченное время. В данной статье я бы хотел поделиться некоторыми размышлениями и экспериментами по этому поводу.

Категория: Программирование » Веб-разработка