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

Коллеги, подскажите, насколько здравая идея использовать CH как Cassandra, делать

точечные запросы по полям с дико высокой кардинальностью (SELECT * FROM table WHERE uuid = '')

Догадываюсь что ключ сортировки - только это uuid, партиции по хэшу от ID, но всё же - не будет ли это выстрелом в ногу? или нормальная история?

21 ответов

12 просмотров

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

Stranger- Автор вопроса
Konstantin Ilchenko
а сколько запросов в секунду вы ожидаете? в целом ...

10-20, в переспективе до 50+ (насколько я понимаю Cassandra такое будет тянуть вообще без проблем)

Stranger
10-20, в переспективе до 50+ (насколько я понимаю ...

ну 50 ещё по божески, это в любой БД должно работать, уж лучше в PG чтоли)

"партиции по хэшу от id" это , кстати, вообще не сработает здесь. клик считает хэш при вставке, при чтении "where id = ..." он использует min max индекс партиции, то есть при рандомно раскинутых по партициям айдишках, он скипнуть партиции не сможет и только на sorting key будет опираться. а sorting key из uuid, да еще и с минимальной гранулярностью, чтобы read overhead снизить, это всё выльется в потребление оперативки (метки primary key лежат в памяти) в общем, одни проблемы )

Stranger- Автор вопроса
ivan
"партиции по хэшу от id" это , кстати, вообще не с...

Понял принял, спасибо за разъяснение. Пользуясь случаем спрошу - есть ли какие-то альтерантивы Кассандре? SkyllaDB не в счет, а с DynamoDB получится vendor-lock

Очень плохая идея для CH и если используется Кассандра, предполагаю что данных много и в затюненый postgres они не поместились, решение классическое - как у Яндекс почты, быстрая бд с высокой кардинальностью и холодное хранилище с низкой

Denny [Altinity]
может, скипает, уже года два

где можно почитать / посмотреть?

ivan
где можно почитать / посмотреть?

хм, уже три года https://github.com/ClickHouse/ClickHouse/pull/16253 там правда работает id%100=5 но не работает id%100 in (5,6)

Denny [Altinity]
хм, уже три года https://github.com/ClickHouse/Cl...

а, вот в чем подвох да, в fiddle вопроизвел с "=", прикольно

ivan
а, вот в чем подвох да, в fiddle вопроизвел с "=",...

https://github.com/ClickHouse/ClickHouse/issues/28800 https://github.com/ClickHouse/ClickHouse/issues/55205

Denny [Altinity]
хм, уже три года https://github.com/ClickHouse/Cl...

а то что в ORDER BY это не работает это ожидаемо? Недавно заметил это, пришлось на IN переписывать много запросов https://fiddle.clickhouse.com/85bb7165-cd78-47dc-b465-c1c2d754c264

Konstantin Ilchenko
а то что в ORDER BY это не работает это ожидаемо? ...

сегодня прямо день not sargable предикатов, уже второй за сегодня )

Konstantin Ilchenko
а то что в ORDER BY это не работает это ожидаемо? ...

в голове заиграла музыка: фарш невозможно провернуть назад ну этот как раз понятно почему не работает, это уже совсем невозможно

Denny [Altinity]
в голове заиграла музыка: фарш невозможно проверну...

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

Konstantin Ilchenko
я понимаю что по minmax в целом такое скорее не до...

чтобы понять, что в грануле всё это время было только одно значение x % N, это значение надо подсчитать, а это происходит уже после отсеивания

ivan
чтобы понять, что в грануле всё это время было тол...

так если min == max это разве не значит что только одно значение, применяем к этому значению % 30 и узнаём надо ли читать гранулу

Konstantin Ilchenko
так если min == max это разве не значит что только...

ок, вроде понял, то есть ваша идея, что если 1. x на первой позиции в индексе 2. в where используется f(x) 3. то надо сначала подсчитать f(x) для всех меток и отбросить гранулы, у которых с обеих сторон x_start = x_end и f(x) false

Konstantin Ilchenko
я понимаю что по minmax в целом такое скорее не до...

кстати как узнать что в грануле есть id%30 ? надо проверить что в следующей грануле id равен id в текущей грануле, ну т.е. это все будет работать очень иногда и только для первого поля в индексе

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

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

Кстати, а я вот тут подумал. Допустим, у нас имеется цикл который выполняет огромное количество итераций, но мы хотим, чтобы какие-то действия исполнилось только один раз. В Я...
The Bird of Hermes
23
Доброй ночи. Вопрос знатокам. Имеется некая таблица, результат которой выведен в DBGrid на форме. И есть форма, с помощью которой можно как добавить запись, так и отредактиров...
Евгений
28
а всё почему? потому что ассемблер в отличии от яву порождает множество пагубных привычек, среди которых например можно отметить использование глобальных переменных для всего ...
Mixail Frolov
35
анрей С какой целью зашёл?
КТ315
42
Всем привет 👋 Подскажите пожалуйста, а чего тут не хватает permission или образ битый? Running with gitlab-runner 17.0.0 (44feccdf) on gitlab-runner-c58775949-d7znz YxYz2zp...
Max
2
я часов 15 назад начал пытаться написать хоть что-то напоминающее ос и у меня есть проблема, которую я пытаюсь решить последние часов 5: есть крч 2 исходника с минимальным код...
Al1to
17
Кто нибудь из участников чата пишет на ассемблере под GNU/Linux?
Spiker01
24
Коллеги, у меня тут возникла одна очень интересная задачка. Есть один бандл, который содержит в себе 2 типа образов - бэкенд и фронтенд. Выкатываются последовательно, сперва б...
სერგეი ქრისტოვი
12
Всем привет ребят! Мб кто-то сталкивался? adminСomponents .get("searchСomponents", use: searchComponents) .openAPI( summary: ...
Admin Adminov
2
Насколько моя реализация Exercise 1 плохая? data MessageType = Info | Warning | Error Int deriving (Show, Eq) type TimeStamp = Int data LogMessage = LogMessage ...
= ?
10
Карта сайта