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

Здравствуйте. Хотелось бы узнать корректность схемы таблицы. CREATE TABLE <table name>

(ServerName String, MetricName String, CreatedAt DateTime, Value Float) ENGINE = MergeTree() ORDER BY (ServerName, MetricName, CreatedAt) PARTITION BY (ServerName, toYYYYMM(CreatedAt))
Серверов мало, метрик чуть побольше (около 200 на каждый сервер), а вот собираются данные каждую секунду, так что по итогу строк много.
У меня возникает сразу же несколько вопросов:
1) Целесообразна ли здесь замена строк на целые числа? (т.е. вместо ServerName String использовать ServerId UInt16)
2) Подойдёт ли такая схема для того, чтобы данные можно было визуализировать --- выбирать определённый сервер, несколько метрик, определённый промежуток времени и отображать соответственно данные (агрегация на уровне avg, median)?
3) Подходит ли вообще эта БД для такого типа задач? Есть всякие Prometheus, но возникает проблема с историческими данными и с их количеством.
4) Можно ли как-то улучшить схему?

14 ответов

9 просмотров

1) можно не париться 2) да 3) victoria metrics как раз для этого

лучше всего закодировать сервер в id метрики, просто сквозная нумерация и хранить только 3 поля. расшифровку Metric хранить в mysql или в отдельной таблице в КХ + словарь (Metric UInt32, CreatedAt DateTime, Value Float CODEC(Delta?/Gorilla?, ....) ) ENGINE = MergeTree() ORDER BY (Metric, CreatedAt) в victoria metrics все это уже решено и оптимизировано внутри и огромный плюс victoria поддерживает promql

Denny [Altinity]
лучше всего закодировать сервер в id метрики, прос...

ну не сказал бы что прямо promql это такой уж плюс всякие if внутри instant vector не поделать

Savvy-Bonker Автор вопроса
Savvy-Bonker Автор вопроса
Denny [Altinity]
лучше всего закодировать сервер в id метрики, прос...

Поигрался я с VM, интересная вещь и Grafana из коробки поддерживает, не так долго пришлось разбираться с настройкой панели, но данные вставлять --- это боль, надо разобраться с нативным форматом, чтобы это выполнять операцию быстро, а для CH есть clickhouse-driver, который работает очень даже быстро

Savvy Bonker
Поигрался я с VM, интересная вещь и Grafana из кор...

данные? вставлять? В смысле у вас неоткуда скрепать метрики в формате прометея?

Savvy-Bonker Автор вопроса
Denny [Altinity]
данные? вставлять? В смысле у вас неоткуда скрепа...

Можно было бы данные в реал-тайме получать, но, если честно, задача немного другая, но а это как пример. Я упомянул исторические данные, с ними беда (скорость вставки). А так данные собираются в одном файле за час, потом его надо прочитать и за этот последний час вставить данные

Savvy-Bonker Автор вопроса
Denny [Altinity]
данные? вставлять? В смысле у вас неоткуда скрепа...

Извините за то, что я не разбираюсь в этой теме, но если исходить из моего последнего комментария, то что лучше выбрать или разницы нет особой?

Savvy Bonker
Извините за то, что я не разбираюсь в этой теме, н...

В VM данные будут занимать места сильно меньше, чем в клике. Берите VM.

Savvy-Bonker Автор вопроса
Vladimir Goncharov
В VM данные будут занимать места сильно меньше, че...

Хорошо, спасибо. Правда, придётся поприседать с бинарным форматом

Savvy Bonker
Хорошо, спасибо. Правда, придётся поприседать с би...

У них вроде и не бинарный есть. По крайней мере для вставки - точно

Savvy-Bonker Автор вопроса
Vladimir Goncharov
У них вроде и не бинарный есть. По крайней мере дл...

Да, есть не только они (всеразличные JSON, CSV и т.п.), но по скорости самый быстрый --- бинарный. Проблема с тем, что если вставлять в JSON, то придётся долго ждать, пока вставятся данные за 5 лет

Savvy Bonker
Да, есть не только они (всеразличные JSON, CSV и т...

я так данные из инфлюкс дб переносил за 5 лет. меньше чем за сутки всё перенеслось. сидеть и разбираться в бинарном протоколе гораздо дольше. померяйте скорость вставки - если за пару дней уложитесь, то к чёрту этот бинарный протокол

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта