Собираюсь писать много данных в таблицу типа лога (50млн записей в день, строка примерно 160 байт), есть два варианта:
1. писать всю строку и в будущем может понадобиться любая информация
2. писать только нужные данные, на тек. момент известно о двух полях которые нужно логировать, но в будущем понадобится может все.
Запись 1млн строк в лог по первому варианту в clickhouse занимает примерно 50мб , то есть 50млн в день это 2,4 гб в день.
Хотелось бы совета кто сталкивался с таким объемами, как максимально сжимать на уровне clickhouse?
1. Какие колонки в этой строке вообще есть?
2. Что за данные?
3. Как долго эти логи нужно хранить?
4. Рассматривается ли что-то кроме clickhouse?
5. Можно ли уменьшить количество этих логов в день?
6. Можно ли хранить в "горячей" базе лишь часть данных, а какие-то старые выгружать в какой-нибудь архив?
1. Date datetime data object_id
2. Data - string с json данными это лог который хранится
3. 365 дней
4. Да
5. Сложно сказать
6. В данном случае это и есть архив
В парадигме современной BigData, вы должны писать все что приходит на вход.
Как это там обзывают.... ELT (Extract, Load, Transform)
Никто не знает наперед какие данные понядоабятся - поэтому фиксируйте весь raw
трафик. Потом - отфильтруете. Построете материализованные views. Но главное что данные
будут.
Учитывая что clickhouse - column oriented - безразлично 2 поля из 2 выбирать или
2 поля из 2000.
Если хранилище у вас все таки переполнится - (со скоростью 2.5 Гб в день) то тогда уже почистите те
колонки которые стали объективно не нужны после например пары месяцев эксплуатации.