184 похожих чатов

Коллеги, не могу найти поиском ответ на следующий вопрос. Я записываю

данные по сессиям проигрывания с полем id uuid. UUID я генерирую сам на своем софте.


Мне кажется, что будет хорошая и полезная идея первые 4 байта uuid отвести под UTC, тогда можно будет иметь осмысленную сортировку по такому id и она будет совпадать с партиционированием по датам.

Т.е. прямой поиск по таблице в которой миллиарды строк сразу подскажет в какой партиции искать.

Прямые поиски мне нужны для джойнов, потому сессии склеиваются друг с другом по полям типа source_id

Насколько это удачная идея или я вообще её плохо описал?

Как можно подсказать кликхаусу, в какой партиции искать запись, глядя на сам ключ (это извлекается из первых 4 байт uuid в таком формате) ?

9 ответов

5 просмотров

А не проще время рядом положить? вот (substring(reinterpretAsString(A), 1, 4)), но я не уверен, рекомендую тестировать create table B (A UUID, C String ) Engine=MergeTree() partition by (substring(reinterpretAsString(A), 1, 4)) Order by A insert into B select generateUUIDv4(), number from numbers(10); select _part, * from B where A = '2b2fc98d-7dd6-4c15-824a-a673ebf846c5' и тестировать что прунинг работает. В мастере работает: set send_logs_level='debug' ; select _part, * from B where A = '2b2fc98d-7dd6-4c15-824a-a673ebf846c5'; Selected 1/10 parts by partition key

Maksim-Lapshin Автор вопроса
Denny [Altinity]
А не проще время рядом положить? вот (substring(r...

Идея была в том, чтобы помочь делать быстрые прямые выборки where id=Nnnn

Maksim Lapshin
Идея была в том, чтобы помочь делать быстрые прямы...

эмммм, в общем ничего непонятно. Вы хотите подсказать КХ в какой партиции искать и у вас таблица уже партиционирована по дате. Или вы на этапе проектирования? Или вы предлагаете фичу запилить в КХ?

хм, если у вас в таблице ORDER BY id кх скорее всего сам сможет это использовать. Если этого нет, то можно попробовать minmax skip index попробовать

Maksim-Lapshin Автор вопроса
Denny [Altinity]
эмммм, в общем ничего непонятно. Вы хотите подсказ...

Я хочу понять, насколько возможно выбрать у таблицы uuid в качестве primary key, если я смогу подсказать кликхаусу, что первые 4 байта - это время создания и значит по ним можно партиционировать

Maksim-Lapshin Автор вопроса
Dmitry [Altinity] Titov
хм, если у вас в таблице ORDER BY id кх скорее все...

Ну вот если сделать такой uuid, то order by как раз будет иметь смысл

нормальная идея, но лучше поделить на отдельные колонки и партиционировать по первой.

【D】【J】
нормальная идея, но лучше поделить на отдельные ко...

Наверное min max index с гранулой >1000 почти как partition minmax сработает

Dmitry [Altinity] Titov
Наверное min max index с гранулой >1000 почти как ...

все равно колонки лучше. те же операции над партициями/range. uuid - 128 bit - все время кастить для range- сравнений итд, попросту греть планету

Похожие вопросы

Обсуждают сегодня

зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Можно попросить небольшое ревью кода? Тут немнога, я ничего интереснее не придумал, чем написать аналог tree в качестве практики с cmake. https://github.com/hrimov/tree-unix/...
Andrew Hrimov
11
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Но если Евгений и Алекс используют в боевых условиях, то почему нет? А ты как-то про бизнес больше задвигаешь, это имеет к разработке отношение, но все же этим больше другие л...
Keiman
5
Карта сайта