
Vladislav
21.04.2017
15:30:21
TimeStamp тоже не вариант использовать, потому что записей бывает по нескольку в мс

Vladimir
21.04.2017
15:42:02
Вопрос же в том чтоб была низкая вероятность перезаписи сразу же
Ну будет разная версия, с отличием в 5 секунд, разницы не будет если в эти 5 секунд не нужно перезапись сделать

Google

Vladislav
21.04.2017
15:46:00
Не очень понял про низкую вероятность перезаписи сразу же, если совпадёт timestamp, то он же перезапишет предыдущие строки. При этом одну из них может и не нужно перезаписывать
Да, про наносекунды как-то не подумал. Это может решить проблему. Ну или взятие хэша...

Vladimir
21.04.2017
15:54:11

Vladislav
21.04.2017
15:54:30
Да, у нас ключи могут быть одинаковые)

Vladimir
21.04.2017
15:55:05
что потом делать с данными где много одинаковых строк, которые так и должны быть одинаковыми?

Vladislav
21.04.2017
15:55:56
Ну тут хранятся заранее не определенные строки с заранее не определенными типами, я просто не могу заранее наложить на всё это Primary Key, потому что на ходу может добавиться колонка
В принципе хэш от всего можно считать на клиенте и он даст примерно похожий результат, как и Primary Key

Vladimir
21.04.2017
16:28:57

Fike
21.04.2017
16:50:26

Vladimir
21.04.2017
16:50:40

Vladislav
21.04.2017
16:55:02
Да, всем спасибо, вроде разобрался)

Vladimir
21.04.2017
23:26:30
Ребята добрый вечер! Подскажите такое извращение как вьюшка из словаря может как то быть реализовано. Или просто я чуток туплю. Словари внешние ведь в КХ не отображаются как таблицы.

Google

a
22.04.2017
06:53:24
Всем привет, использую ReplacingMergeTree и столкнулся с ситуацийе (но не даёт гарантий отсутствия дубликатов ...) что даже после OPTIMIZE TABLE остаются дубликаты, Final в селекте помогает исправить ситуацию, но идет фулскан, и это очень долго

Andrey
22.04.2017
07:06:00
У этого движка так же есть столбец версий, можете делать селект с Group by чтобы получать уникальные строки

Shine
22.04.2017
07:20:32
9 дней назад в коммиты был добавлено support DEDUPLICATE option in OPTIMIZE query

Slach
22.04.2017
07:26:25
Прикольно

a
22.04.2017
07:45:07
Прикольно, а сейчас есть есть работающий метод удалить дубликаты?

Shine
22.04.2017
07:48:34
вроде бы гарантированного нет
но ждем комметариев от разработчиков )

Andrey
22.04.2017
08:44:15
Ну тут ведь логика простая. Все операции с данными происходят при слиянии. А гарантированного времени слияния нет.
Как я понял все упирается в это. Можно детально разобрать триггеры слияний и отталкиваться от этого.
Либо не париться и делать доагрегацию запросом

Vitaliy
22.04.2017
08:48:00
Или самому агрегировать несагрегированные строки?

Andrey
22.04.2017
08:48:39
Самому
Т.е. CH будет процессить бОльшую часть данных, а все остальное в реалтайме.
Такая рекомендация звучит уже давно, причём вроде как для всех движков которые меняют данные.

Vitaliy
22.04.2017
08:51:30
Мне вот вообще непонятно когда это должно происходить. Я залил пару миллионов строк, а они вообще не смержились. Есть какие - то настройки, влияющие на это дело?

Andrey
22.04.2017
08:55:17

Andrew
22.04.2017
09:21:42
а если пробовать вызвать https://clickhouse.yandex/reference_ru.html#OPTIMIZE

Alisa
22.04.2017
11:00:15
сижу на хакатоне, думаю clickhouse потрогать, успею всё поднять, нормально встает?

Pavel
22.04.2017
11:00:37
в докере если - ваще пять минут)

Google

Alisa
22.04.2017
11:01:31
круть, попробуем тогда c:

Andrey
22.04.2017
11:16:28
Да и без докера ставится одной командой)

Pavel
22.04.2017
11:18:02
и то правда :)
тем более Нетфликс недавно очень крутой доклад подогнал на тему, что в конетйенарх очень много софта работает решительно хуже

Slava
22.04.2017
11:19:22

Pavel
22.04.2017
11:20:17
https://www.slideshare.net/brendangregg/container-performance-analysis
там в основном по яве катаются, очень так хорошо =) В основном проблема, что в конетйнере показываются процы от хоста, память от хоста и софт на это ориентируется часто, что приводит.. ни к чему хорошему не приводит

Slava
22.04.2017
11:29:10
спасибо

Dennis
22.04.2017
11:39:22
Из доки "
2. For aggregation, query results must fit in the RAM on a single server. However, the volume of source data for a query may be indefinitely large."
Т.е. если я делаю груп бай, который бежит по миллиарду строк, а после группировки оставляет уже миллион строк, то весь миллион должен уместиться в памяти?
Плюс, если у меня вложенный селект, то его результат тоже должен умещаться в памяти или только результат всего запроса целиком должен быть в памяти?
Еще вопрос: "This is not a cross-platform system. It requires Linux Ubuntu Precise (12.04) or newer, x86_64 architecture with SSE 4.2 instruction set." - т.е. на Центось КликХаус не поставить?

Pavel
22.04.2017
11:58:26
центос какой версии?
с 7кой явно проблем не будет
6ка... оно ровесник динозавров ) там может быть все что угодно

Slach
22.04.2017
11:58:54
ну или внутри контейнера вполне себе в центоси будет жить

Andrey
22.04.2017
11:59:47
Ну т.е. "Должно влезать в память" как я понял, это скорее не ограничение, а условие при котором будет работать быстро.

Dennis
22.04.2017
12:07:04
Обычно слово must в документации означает прямо должен-должен иначе кранты

Vladislav
22.04.2017
12:09:31
В соответствии с 2119, да. https://www.ietf.org/rfc/rfc2119.txt

Dennis
22.04.2017
12:16:33
Вот именно

Google

Vladimir
22.04.2017
12:23:47
7-ая центось по софту как раз где-то на уровне Ubuntu 12.04
если взять gcc и boost из sclo

Sergey
22.04.2017
13:12:08
https://github.com/redsoftbiz/clickhouse-rpm

Dennis
22.04.2017
13:13:04
Спасибо!

Aleksey
22.04.2017
13:27:39
А есть какие-нибудь хитрые способы ускорить одноразовую большую вливку в пустую таблицу (например, при восстановлении из дампа)?
В mysql, например, иногда помогает перед вливкой удалить ключи и создать их заново уже по окончании вливки.

Vasiliy
22.04.2017
14:03:58
Выше было про многопоточную заливку на баше) делим дамп и пускаем в несколько потоков

Aleksey
22.04.2017
14:33:44
Да, это уже кое-что, попробую, спасибо. Но интересно ещё, может, имеет смысл отключить какие-то внутренние фоновые процессы ClickHouse на время вливки

Andrey
22.04.2017
14:33:48

Aleksey
22.04.2017
14:40:02
И ещё вопрос: нет ли какой-нибудь опции у OPTIMIZE, заставляющей его гарантированно доводить работу до самого конца?
Т.е. чтобы можно было в одну команду получить результат, аналогичный результату таких операций:
CREATE tmpTable AS myTable;
INSERT INTO tmpTable SELECT * FROM myTable FINAL;
DROP myTable;
RENAME tmpTable TO myTable;
Пусть медленно, но без лишних телодвижений с временной таблицей.

Dmitry
22.04.2017
14:54:57
Optimize final

Aleksey
22.04.2017
15:05:36
Как я понял, optimize final всё же не гарантирует того же результата, что insert into .. select from .. final
OPTIMIZE TABLE [db.]name [PARTITION partition] [FINAL]
Просит движок таблицы сделать что-нибудь, что может привести к более оптимальной работе.
Если указан PARTITION, то оптимизация будет производиться только для указаной партиции.
Если указан FINAL, то оптимизация будет производиться даже когда все данные уже лежат в одном куске.

Slach
22.04.2017
16:07:05
всем привет
а насколько сложно реализовать ALTER TABLE .. ADD COLUMN IF NOT EXIST column <TYPE> [default_expr]?

Dmitry
22.04.2017
16:28:02

Aleksey
22.04.2017
16:29:11
Запускать-то он будет, но запуск слияния разве означает, что схлопнуто будет абсолютно всё? Я так понимаю, он означает, что "возможно, что-то будет схлопнуто"

Dmitry
22.04.2017
17:40:14
Final насколько я помню гарантирует слияние в одну партицию

a
22.04.2017
18:00:06
А почему у меня optimize final требует указать партицию?
таблица на ReplacingMergeTree

Shine
22.04.2017
19:02:47
хочется от Алексея или других разработчиков комментария по опции deduplication для optimize

Google

Vitaliy
22.04.2017
19:10:35

a
22.04.2017
19:28:28
А правильно я понимаю что обязательное поле типа Date - первый аргумент во всех engine, как раз определяет целевой партишн? а партишины идут по месяцам?

Andrey
22.04.2017
19:34:40

a
22.04.2017
19:35:55
modification_time в system.parts ? поменяется если я всталю данные на соответствующий ключ?
ок, сам проверю
FINAL OPTIMIZE в итоге сводит сливание всех кусков в один?
или есть дополнительная оптимизация, которая будет дробить партицию на куски ?
ок, вопрос простой но очень важный, может ли ReplacingMergeTree гарантировать уникальность первичного ключа в партиции после FINAL OPTIMIZE и сливания всех кусков в один?

Vitaliy
22.04.2017
20:23:02

a
22.04.2017
20:52:15
Огромное спасибо

Vladimir
22.04.2017
21:31:35
Глупый вопрос - делаю запрос:
select cluster, count() from metricstats where mtime < (select max(mtime)-7*86400 from metricstats) and version = (select max(version) from metricstats) group by cluster
Можно ли как-то его модифицировать, чтобы добавить не только count() с учетом фильтра, но и общее количество записей с группировкой по cluster?

Andrey
22.04.2017
21:34:20
Типо с фильтром и без фильтра?

Vladimir
22.04.2017
21:34:30
Ага

Andrey
22.04.2017
21:34:55
Посмотри в сторону countIf