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

Можно ли сделать так, чтобы строки, созданные примерно в одно

время, лежали рядом (на диске). Но поиск по ключу был всё равно быстрым? Подход CREATE TABLE t ORDER BY Tuple(key) PARTITION BY timestamp с малой гранулярностью + INSERT INTO t SELECT key, NOW() AS timestamp ведь не будет работать (много партиций будет читаться)?
Строки для одного ключа вставляются довольно локально по времени.

12 ответов

23 просмотра

1. а зачем? 2. CH — это колоночная база, тут изначально нельзя сложить строки рядом

Anatoliy-Tomilov [Russia] Автор вопроса
ivan
1. а зачем? 2. CH — это колоночная база, тут изнач...

1. Чтобы данные на диске локально лежали (есть в вопросе). 2. (Предположительно) можно сложить значения колонок, соответствующих строкам, сходным по какому-то критерию, рядом

Anatoliy Tomilov [Russia]
1. Чтобы данные на диске локально лежали (есть в в...

1. я это видел, и поэтому и спросил, а зачем это "данные локально на диске лежали" 2. они и лежат по критерию, он называется order by таблицы

Anatoliy-Tomilov [Russia] Автор вопроса
ivan
1. я это видел, и поэтому и спросил, а зачем это "...

1. в запросе идёт выборка данных, которые были созданы примерно в одно и то же время (меньше секторов диска прочитано в случайном порядке — лучше) 2. есть ещё partition by и в условии может быть не префикс order by

Anatoliy Tomilov [Russia]
1. в запросе идёт выборка данных, которые были соз...

1. делайте ключ на основе этого времени или сделайте order by проекцию, получите КОПИЮ изначальных данных, но отсортированных в другом порядке. если набор колонок в проекции "покрывает" запрос, движок из проекции данные прочитает. 2. partition by toDate(ts) order by id, ts -> данные лежат в одной партиции, но благополучно раскиданы по партам этой партиции. меньше секторов прочитано, но данные рядом не лежат

Anatoliy-Tomilov [Russia] Автор вопроса
ivan
1. делайте ключ на основе этого времени или сделай...

можно ли как-то задать для SummingMergeTree таблицы CREATE TABLE t ( id String, SimpleAggregateFunction(min, DateTime) ) ENGINE = SummingMergeTree PARTITION BY toYYYYMMDD(ts) PRIMARY KEY id ORDER BY id, ts; каким-то образом ограничение на ts для одного id так, чтобы асинхронная группировка не искала id в партициях отстоящих от текущей более, чем на 1? Текущей в том смысле, что я предполагаю, что движок SummingMergeTree ведёт журнал последних вставленных ключей и для них периодически производит аггрегацию. Вставка происходит в последнюю партицию (она обычно — текущая), это так же предположительно запоминается. Понимаю, что слишком много гипотез, но вроде бы они разумные.

Anatoliy Tomilov [Russia]
можно ли как-то задать для SummingMergeTree таблиц...

если вы знаете что id только в одной партиции, значит добавляйте в where условие по ts. КХ не знает в каких партициях будут лежать данные если вы ему сами не скажете

Anatoliy Tomilov [Russia]
можно ли как-то задать для SummingMergeTree таблиц...

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

Anatoliy-Tomilov [Russia] Автор вопроса
Konstantin Ilchenko
и что вообще вы подразумеваете под фразой асинзрон...

Это тот механизм, который присущ именно SummingMergeTree

Anatoliy Tomilov [Russia]
Это тот механизм, который присущ именно SummingMer...

нету такого механизма, все таблицы семейсива *MergeTree работают одинаково. Они склеивают несколько партов в 1 парт большего размера в пределах одной партиции(PARTITION BY) - это называется merge. Никаких других асинхронных групировок нет

прочитайте вот это https://github.com/ClickHouse/ClickHouse/issues/33056 от начала до конца несколько раз и поиграйте с примерами

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта