(таблицу или view) несколько одинаковых таблиц на разных тачках, когда в них лежат разные временные периоды, например разные месяца, и по ним и будут запросы, с указанием начала и конца, которые включают в себя от одной до нескольких физических таблиц?
1) вариант с шардами - слишком сложно, но наверное будет работать, только надо написать правильную формулу шард id от времени (если я правильно понимаю в лоб)
2) create view t as select from t1 where ts between (a, b) UNION ALL select from t2 where ts between (c, d) union all .... - встречал такое в практике (не кликхауза), притом оптимизатор запроса затем правильно всё делал.
3) что-то еще?
попробуйте distributed table
Вот непонятно что вам не хватает в Distributed и зачем вам формула для шардов. Distributed тупо отправляет запрос на все сервера и мерджит результаты. Нет данных с сервера по этому интервалу - ничего и не придет.
Лишнее время, лишние запросы. Но, конечно, вероятно, я так и сделаю.
У distributed таблиц в шардинг expression может быть сложный expression и даже обращение к словарю, и есть настройки, посылать запрос в шард в зависимости от условия или нет. Но вам скорее всего этот гемор не нужен. Посылайте во все шарды и прунинг вернёт моментально 0 строк. Прунинг партций в памяти работает, ему не нужно на диск ходить
Спасибо, я исследую этот вариант.
Обсуждают сегодня